Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1527

 
MakarFX:

Verwenden Sie die Messwerte, um die Logik für Ihren Indikator zu erstellen.

Nein, so funktioniert das nicht.

hier. 1 Indikator zeigt immer eine Zahl an - 2147483647. Sobald ein Signal empfangen wird, zeigt er eine andere Zahl auf einem der Puffer an. Das habe ich herausgefunden.

Aber der zweite Indikator zeigt immer entweder 0 oder 2147483647 auf 2 Puffern gleichzeitig

Dateien:
 
Ich glaube, ich habe es herausgefunden. So soll es sein
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
Ich glaube, ich habe es herausgefunden. Sie sollte folgendermaßen aussehen

In diesem Fall sind keine besonderen Angaben erforderlich, d. h. nur wenn >0

 
MakarFX:

in diesem Fall sind die Einzelheiten nicht erforderlich, d. h. nur wenn >0

aber was ist in den Puffern, wenn es kein Signal gibt. ich glaube nicht, dass >0 hier funktionieren wird. aber ich werde es jetzt versuchen

Dateien:
 
jarikn:

Aber hier ist, was in den Puffern ist, wenn es kein Signal gibt. Ich glaube nicht, dass >0 hier funktionieren wird. aber ich werde es jetzt versuchen

der erste Indikator hat den Wert EMPTY_VALUE , wenn es kein Signal gibt

so gehen

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

Bitte helfen Sie mir, dieses Problem mit dem Prüfgerät zu lösen. Ich teste die Positionseröffnung für CME auf EUR/USD-Futures

Beim Anstieg des Marktes im Tester eröffne ich eine Long-Position auf den Zusammenbruch mit meinem Stop und der Handel erhält ein Ticket #2. Der Markt steigt, und die nächste Position wird mit einem Stop eröffnet, und der Handel erhält Ticket Nr. 3 im Tester.

Wenn der Markt gegen die Position Nr. 3 läuft und seinen Stopp erreicht, sollte Nr. 3 idealerweise am Stopp schließen und Nr. 2 dort bleiben und darauf warten, dass der Kurs den Stopp Nr. 2 erreicht. Aber aus irgendeinem Grund schließt das Prüfgerät bei Auslösung des Stopps Nr. 3 auch die Position Nr. 2.

Der Code für mql5 lautet

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

Bitte helfen Sie mir, dieses Problem mit dem Prüfgerät zu lösen. Ich teste die Positionseröffnung für CME auf EUR/USD-Futures

Beim Anstieg des Marktes im Tester eröffne ich eine Long-Position auf den Ausbruch mit meinem Stop und der Handel erhält die Nummer 2. Der Markt ist gestiegen und die nächste Position wird mit einem Stop eröffnet, der Handel erhält die Nummer 3 im Tester.

Wenn der Markt gegen die Position Nr. 3 läuft und seinen Stopp erreicht, sollte Nr. 3 am Stopp schließen und Nr. 2 dort bleiben und darauf warten, dass der Kurs den Stopp Nr. 2 erreicht. Aber aus irgendeinem Grund schließt das Prüfgerät bei Auslösung des Stopps Nr. 3 auch die Position Nr. 2.

Der Code für mql5 lautet


Ich kenne mich mit mql5 nicht aus, aber ich sehe nicht, wo es eine Auswahlmöglichkeit für die Reihenfolge der Schließung gibt
 
MakarFX:

der erste Indikator hat den Wert EMPTY_VALUE , wenn es kein Signal gibt

sollte wie folgt durchgeführt werden

Ja, das ist richtig. Das war's. Vielen Dank.

 

Ich denke, der Grund für das Verhalten des Testers ist klar geworden. Der Typ des Demokontos, auf dem der Roboter getestet wird, ist Netting. Wenn also der bei der Eröffnung der Position Nr. 3 festgelegte Stop ausgelöst wird, wird das gesamte Volumen der Position geschlossen. An der Haltestelle von Gleis 3 wird daher auch Gleis 2 geschlossen, obwohl für dieses Gleis beim Öffnen eine eigene Haltestelle eingerichtet wurde.

Mit der Kontoart Hedging würde alles wie im guten alten mql4 funktionieren.

 
NastyaMaley:

Bitte helfen Sie mir, dieses Problem mit dem Prüfgerät zu lösen. Ich teste die Positionseröffnung für CME auf EUR/USD-Futures

Beim Anstieg des Marktes im Tester eröffne ich eine Long-Position auf den Zusammenbruch mit meinem Stop und der Handel erhält ein Ticket #2. Der Markt steigt, die nächste Position wird mit einem Stop eröffnet und der Handel erhält Ticket Nr. 3 im Tester.

Wenn der Markt gegen die Position Nr. 3 läuft und seinen Stopp erreicht, sollte Nr. 3 idealerweise am Stopp schließen und Nr. 2 dort bleiben und darauf warten, dass der Kurs den Stopp Nr. 2 erreicht. Aber aus irgendeinem Grund schließt das Prüfgerät bei Auslösung des Stopps Nr. 3 auch die Position Nr. 2.

Der Code für mql5 lautet wie folgt

Sie sollten keine Stopps verwenden. Anstatt Stopps zu verwenden, sollten wir schwebende Aufträge in die entgegengesetzte Richtung platzieren.