Hirdetés

Új hozzászólás Aktív témák

  • VikMorroHun

    senior tag

    Na, most vagyok gondban. Volt pár rejtett hiba a kereskedőrobotban; ezeket a tesztelés során szépen javítgatom. (Az egyik érdekesség, hogy remekül megállapítja, mikor megy lefele a teszteléshez használt eszköz árfolyama, de a felfelé menetelést nem ismeri. Pedig azt hittem, azt is leprogramoztam. De már legalább nem írja ki egymás után 29* a hibaüzeneteket. :) )

    Viszont pozíciót nem tud nyitni. Akármit csinálok, 10030 unsupported filling mode hibaüzenetet küld az OrderCheck() függvény. Épp emiatt raktam az OnInit() végére egy ilyet:

    str = Symbol();str += ", ";
     if ( SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_MARKET )
      str += "Market execution mode detected.\n";
     if ( SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_INSTANT )
      str += "Instant execution mode detected.\n";
     if ( SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_REQUEST )
      str += "Request execution mode detected.\n";
     if ( SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE )
      str += "Exchange execution mode detected.\n";
     if ( PriceData.IsFillingTypeAllowed(_Symbol, ORDER_FILLING_FOK) )
      str += " With this symbol, Fill or Kill filling mode can be used.";
     if ( PriceData.IsFillingTypeAllowed(_Symbol, ORDER_FILLING_IOC) )
      str += " With this symbol, Immediate or Cancel filling mode can be used.";
     if ( PriceData.IsFillingTypeAllowed(_Symbol, ORDER_FILLING_RETURN) )
    str += " With this symbol, Return filling mode can be used.";

    //+------------------------------------------------------------------+
    //| Checks if the specified filling mode is allowed                  |
    //+------------------------------------------------------------------+
    bool CPriceData::IsFillingTypeAllowed(string sym, int fill_type)
    {
    //--- Obtain the value of the property that describes allowed filling modes
     int filling = (int) SymbolInfoInteger(sym, SYMBOL_FILLING_MODE);
    //--- Return true, if mode fill_type is allowed
     return ( ( filling & fill_type ) == fill_type );
    }

    Szépen kiírja, hogy miket lehet használni (jelen esetben a FOK és Return fogadható el), de akármelyiket használom, 10030-as hiba jön.
    MQL5 fórumon másoknál is előjött ez a probléma. Mit lehetne tenni, hogy jó értéket kapjon az MqlTradeRequest::type_filling tag, és képes legyen pozíciót nyitni?

    Nem lehet körökre osztott módba váltani, mert a karakter halott.

Új hozzászólás Aktív témák