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

 
Eine weitere Sache - wenn ich den EA starte, öffnet sich eine Order auf der ersten Kerze, obwohl es zu diesem Zeitpunkt keine Signale gab. Wie kann sie entfernt werden?
Dateien:
 
artem artem Eröffnungskursen innerhalb desselben Zeitraums prüfe - 29 Aufträge ?

+ Mehrere Aufträge verfehlten ausdrücklich ihren Eröffnungskurs, wenn sie um Ticks getestet wurden. Ich habe einen Screenshot beigefügt, der zeigt

Versuchen Sie

Dateien:
artem.mq4  13 kb
 
Jetzt öffnet er die gleiche Anzahl von Aufträgen sowohl nach Ticks als auch nach Eröffnungskurs. 23Aufträge insgesamt im gleichen Zeitraum. Nur dass ich jetzt aus irgendeinem Grund von der 7. Kerze aus einsteige und nicht von der 4.
 
artem artem Aufträge insgesamt im gleichen Zeitraum. Nur dass wir jetzt von der 7. Kerze aus einsteigen, nicht von der 4.

Ich habe alles Unnötige entfernt... es scheint so zu funktionieren, wie es sollte.

Dateien:
artem.mq4  11 kb
 
Können Sie mir sagen, ob es eine Möglichkeit gibt, die Zeichenketten der EA-Einstellungen im Terminal zu begrenzen, damit sie nicht gelöscht werden können? Wenn Sie eine externe Zeichenkette in den Code schreiben, können Sie die Zeichenkette bearbeiten, und wenn Sie sie versehentlich löschen, müssen Sie "reset" drücken, um sie wiederherzustellen, aber dann werden alle Einstellungen zurückgesetzt. Sie können natürlich vorher in einer Set-Datei gespeichert werden, aber ich bin nur neugierig, ob es möglich ist, eine "Steintabelle" zu erstellen)
 

Geprüft, sowohl auf Ticks als auch auf den Eröffnungskurs... RA-BO-TA-ET!!!!

MakarFX, vielen Dank!!! Es ist 2 Wochen her, dass ich an diesem Rätsel herumgespielt habe, ohne Erfolg, bis heute. Nochmals vielen Dank! Ich habe buchstäblich nur noch ein paar Erklärungen übrig, und ich will Sie nicht länger aufhalten, und so viel von Ihrer Zeit wurde bereits verbraucht. Ich interessiere mich eigentlich für Folgendes:


1 ) Soweit ich es verstehe, muss ich, wenn ich die Anzahl der "Bestätigungskerzen" ändern möchte, nur eine Zahl in der Konstante durch eine andere ersetzen, und das war's?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

2. wenn ich den Expert Advisor ausführe, wird die erste SELL-Order bei der ersten Kerze geöffnet, obwohl es keine Signale gab. Das bedeutet, dass diese erste Bestellung überflüssig ist und der EA nicht sofort bei der ersten Bestellung ein Geschäft eröffnen sollte, nur weil der EA gerade erst gestartet wurde. Wie könnte das behoben werden? Ich habe eine Idee, dass Init dafür verantwortlich ist, und ich sollte es einfach auf "false" ändern, oder löschen Sie diese Init insgesamt?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

Und schließlich, wenn ich es so lasse und es für den Handel mit mehreren Währungspaaren gleichzeitig einsetze, wird es dann so funktionieren, wie es sollte? Oder ich muss etwas anderes im Code vorschreiben, damit es keine Fehler gibt und so weiter. Vor allem, wenn dieser EA wird auf mehrere Währungspaare auf einmal arbeiten?

Eigentlich ist das alles, was mich interessiert, aber trotzdem - nochmals vielen Dank! Wenn ich es selbst gemacht hätte, weiß ich nicht, wie viel Zeit ich dafür gebraucht hätte.)

 
artem artem #:

Überprüft, sowohl auf Ticks als auch auf den Eröffnungskurs... RA-BO-TA-ET!!!!

MakarFX, vielen Dank!!! Es ist 2 Wochen her, dass ich an diesem Rätsel herumgespielt habe, ohne Erfolg, bis heute. Nochmals vielen Dank! Ich habe buchstäblich nur noch ein paar Erklärungen übrig, und ich will Sie nicht länger aufhalten, und so viel von Ihrer Zeit wurde bereits verbraucht. Ich interessiere mich eigentlich für Folgendes:


1 ) Soweit ich es verstehe, muss ich, wenn ich die Anzahl der "Bestätigungskerzen" ändern möchte, nur eine Zahl in der Konstante durch eine andere ersetzen, und das war's?

2. wenn ich den Expert Advisor ausführe, wird die erste SELL-Order bei der ersten Kerze geöffnet, obwohl es keine Signale gab. Das bedeutet, dass diese erste Bestellung überflüssig ist und der EA nicht sofort bei der ersten Bestellung ein Geschäft eröffnen sollte, nur weil der EA gerade erst gestartet wurde. Wie könnte das behoben werden? Ich habe eine Idee, dass Init dafür verantwortlich ist, und ich sollte es einfach auf "false" ändern, oder löschen Sie diese Init insgesamt?

Und schließlich, wenn ich es so belasse und mit dem Handel mit mehreren Währungspaaren auf einmal beginne, wird es dann so funktionieren, wie es sollte? Oder ich muss etwas anderes im Code vorschreiben, damit es keine Fehler gibt und so weiter. Vor allem, wenn dieser EA wird auf mehrere Währungspaare auf einmal arbeiten?

Eigentlich ist das alles, was mich interessiert, aber trotzdem - nochmals vielen Dank! Wenn ich es selbst versucht hätte, wüsste ich nicht, wie viel Zeit ich dafür brauchen würde.)

1) Ja, dies sind die Werte für die Anzahl der "Bestätigungskerzen" .

2) Nein, auf der ersten öffnet sich nicht, erst nach einer bestimmten Anzahl von "Bestätigungskerzen"

3) Ändere die Magie und lege sie auf ein beliebiges Paar

Es ist besser, die Magie zu einer externen Variablen zu machen

 
Ivan Butko #:
Können Sie mir sagen, ob es eine Möglichkeit gibt, EA-Einstellungsstrings im Terminal zu begrenzen, damit sie nicht gelöscht werden können? Wenn Sie eine externe Zeichenkette in den Code schreiben, können Sie die Zeichenkette bearbeiten, und wenn Sie sie versehentlich löschen, müssen Sie "reset" drücken, um sie wiederherzustellen, aber dann werden alle Einstellungen zurückgesetzt. Sie können natürlich in einer Datei gespeichert werden, aber ich bin neugierig, ob es möglich ist, ein "Steintableau" zu erstellen)
Ein ENUM erstellen
 
MakarFX #:
Führen Sie die ENUM

Ich werde es ausprobieren, danke.

 
Ivan Butko #:

Ich werde es ausprobieren, danke.

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка
Grund der Beschwerde: