Fehler, Irrtümer, Fragen - Seite 2829

 
Neue interne Funktionen.
int OrderExist( const string symbol, ENUM_ORDER_TYPE type, ulong magic, ulong &tickets[] );

int PositionExist( const string symbol, ENUM_POSITION_TYPE type, ulong magic, ulong &tickets[] );
 

Grüße. Können Sie mich beraten oder mir einen Link geben, wo ich hingehen kann?

VPS WinServer 2012 R2, MT4 läuft, entlädt sich irgendwann, muss neu gestartet werden.

Wo kann man suchen, usw. ....

Vielen Dank im Voraus.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenheiten von mql5, Tipps und Tricks

fxsaber, 2020.08.20 18:52

Der folgende Code auf demRannForex-Server Demokonto kann diese Situation sofort reproduzieren, indem dieser EA ausgeführt wird.

// Воспроизведение ситуации наличия позиции и отложенного ордера с одинаковыми тикетами.

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

MqlTradeResult Result = {0};
MqlTradeRequest Request = {0};

int OnInit()
{

        Request.action = TRADE_ACTION_PENDING;
        Request.symbol = _Symbol;
        Request.volume = 100;
        Request.price = Ask;
        Request.type = ORDER_TYPE_BUY_LIMIT;
        
        return(!OrderSend(Request, Result)); // Выставили лимитник по текущей цене.
}

#define  TOSTRING(A) #A + " = " + DoubleToString(A, _Digits)

void OnTradeTransaction( const MqlTradeTransaction&, const MqlTradeRequest&, const MqlTradeResult& )
{
  if (OrderSelect(Result.order) && (OrderGetInteger(ORDER_STATE) == ORDER_STATE_PARTIAL)) // Если наш лимитник исполнился частично
  {
    if (Ask - OrderGetDouble(ORDER_PRICE_OPEN) < 100 * _Point)                            // и находится близко от текущей цены
    {
        Request.action = TRADE_ACTION_MODIFY;
        Request.order = Result.order;
        Request.price = Ask - 1000 * _Point;

      // тогда передвигаем его подальше.
      if (OrderSend(Request, Result)) // Если синхронный OrderSend выполнился успешно, то торговое окружение должно соответствовать.
      {
        // Проверка соответствия торгового окружения.
        if (OrderSelect(Request.order) &&                                                                // Если получилось взять данные нашего ордера
            NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN) - Request.price, _Digits))                  // и цена ордера не равна цене успешного OrderSend
          Alert("Bug:" + TOSTRING(OrderGetDouble(ORDER_PRICE_OPEN)) + " != " + TOSTRING(Request.price)); // сообщаем о баге MT5.
      }
    }
    else
      ExpertRemove();
  }     
}


Übrigens, das Skript zeigt (nicht immer zum ersten Mal) einen Fehler bei der Ausführung von synchronem OrderSend.

Alert: Bug:OrderGetDouble(ORDER_PRICE_OPEN) = 0.89837 != Request.price = 0.88837

Nachdem der OrderSend einige zehn/hundert Millisekunden lang ausgeführt wurde, ist der Auftragspreis alt und nicht derjenige, der durch OrderSend erfolgreich platziert wurde.

 

Senden Sie eine Suche - ich konnte es nicht finden

Wie kann man die Eindeutigkeit von Zeilen mit mehreren Feldern in einer Tabelle in SQLite erreichen?

ZS: Wenn jemand ein Beispiel nennen kann - vielen Dank im Voraus!

 

Wer hatte die Idee, die Registerkarte Forum an den Anfang der Kopfzeile zu setzen?

Schlechte Idee, sagen Sie es nicht weiter.

 
Code-Hervorhebung in Base funktioniert seit mehr als einer Woche nicht mehr, auch das Umschalten von Anhängen führt zu einem Fehler
 
Igor Makanu:

Senden Sie eine Suche - ich konnte es nicht finden

Wie kann man die Eindeutigkeit von Zeilen mit mehreren Feldern in einer Tabelle in SQLite erreichen?

ZS: Wenn jemand ein Beispiel nennen kann - vielen Dank im Voraus!

Erstellen Sie einen eindeutigen Schlüssel für mehrere Felder (die Zeilen mit vorhandenen Daten müssen mit der zu erstellenden Eindeutigkeit übereinstimmen, sonst tritt ein Fehler auf).

ALTER TABLE `t1` ADD UNIQUE (
`id` ,
`name` ,
`account`
);
 
Andrey Khatimlianskii:

Erstellen Sie einen eindeutigen Schlüssel für mehrere Felder (die Zeilen mit vorhandenen Daten müssen mit der zu erstellenden Eindeutigkeit übereinstimmen, sonst tritt ein Fehler auf).

OK, das werde ich versuchen, aber ich werde wahrscheinlich ein SQL-Buch lesen müssen, da ich nicht genügend Kenntnisse habe.

Ich danke Ihnen!

 
Andrey Dik:

Wer hatte die Idee, die Registerkarte Forum an den Anfang der Kopfzeile zu setzen?

Schlechte Idee, sagen Sie es nicht weiter.

Ich stimme zu.

 
Andrey Dik:

Wer hatte die Idee, die Registerkarte Forum an den Anfang der Kopfzeile zu setzen?

Schlechte Idee, sagen Sie es nicht weiter.

Wo liegt das Problem? Reflexe?)

Und "Forum" wird immer noch häufiger angeklickt als "Dokumentation" - zumindest auf dieser Website...