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

 
законопослушный гражданин:

Soweit ich weiß, hat der Autor des Codes Folgendes vorgeschlagen:

Wenn Eule ein Kaufgeschäft mit Stopp und Take eröffnet, dann eröffnet sein Code zur gleichen Zeit an der gleichen Stelle (unter Berücksichtigung des Spreads) ein Verkaufsgeschäft mit Stopp und Take anstelle eines Kaufgeschäfts.

Somit ändert sich die Logik der Suche nach einem Einstiegspunkt des EA nicht, und nur die Richtung mit berücksichtigtem Spread ändert sich.

das ist genau das, was ich brauche

Wenn Sie alle Trades rückgängig machen wollen, tauschen Sie einfach

vOrderOpenSell und vOrderOpenBuy


//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0);

// Если нет открытых ордеров, то входим в условие
   if(bCheckOrders() == true)
     {
      // Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenSell();

      // Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenBuy();
     }
  }
 
SGarnov:

Erstes Ergebnis: Es gibt einen Konflikt zwischen den Währungspaaren und EA hat einen Konflikt bei der Platzierung von Pending Orders. Zum Beispiel habe ich eine Pending Order für EURUSD platziert, EA hat den Algorithmus befolgt (Kauf bei 1.18901, Handel eröffnet, Stop bei 1.18751 gesetzt, Take Profit bei 1.19051 und eine Verkaufsorder bei 1.18751), alles ist in Ordnung wie geplant.

Aber jetzt ist es an der Zeit, ein Geschäft mit GBPUSD zu eröffnen, wo die Preise anders sind und der EA alles richtig macht, außer eine Pending Order zu setzen. Eine Verkaufsorder bei 1,39393 wurde ausgelöst, und der EA hat versucht, sie zu öffnen, einen Stopp bei 1,39633 zu setzen und 1,39153 zu nehmen, aber die Kauforder bei 1,39633 ist vollständig in EURUSD dupliziert und eine Verkaufsorder bei 1,18751)

Ich habe soeben ein weiteres Problem entdeckt: ein Stop bei 1,18751 und ein schwebender Verkaufsauftrag bei 1,18901 und Take 1,18595 wurden für EURUSD eröffnet. Der Expert Advisor hat den ausgelösten Stop nicht zu dem Take hinzugefügt, der in der Historie steht.

Das sind die Probleme.

Ich habe einen Fehler bei den Bestellungen gefunden und arbeite an den Ergänzungen

 
MakarFX:

Wenn Sie alle Trades rückgängig machen müssen, tauschen Sie einfach hier

vOrderOpenSell und vOrderOpenBuy


Nein, ich brauche keine Umkehrung, sondern eine "Spiegelung" von verlustbringenden Geschäften auf ein anderes Terminal unter Berücksichtigung des Spreads.

Aber Tester geben solche Möglichkeiten nicht, ich brauche Eulen im Tester, um Trades mit Spread zu "spiegeln", als ob sie in einem anderen Terminal geöffnet werden, aber nach der Logik dieser Eule, z.B. durch einen Rewrder-Kopierer.

Ich brauche es, um den TS zu testen

 
Alexey Viktorov:

Makar hat korrekt auf OrderMagicNumber() verwiesen, aber den Fehler missverstanden. Lesen Sie die Dokumentation für die Syntax dieser Funktion... es sollte entweder ein Index in der Auftragsliste oder ein Ticket für einen bestimmten Auftrag sein, aber nicht eine Magie. Und OrderTicket() wird hier nicht helfen. Versuchen Sie nicht, sie dort zu platzieren.

Das macht Sinn. Ich habe es kompiliert und durch OrdersHistoryTotal ersetzt, und in den Terminaleinstellungen habe ich den Verlauf für die letzten drei Tage erstellt. Ich werde es testen.

 
законопослушный гражданин:

Ich brauche keine Umkehrung, sondern eine "Spiegelung" von Verlustgeschäften auf ein anderes Terminal unter Berücksichtigung des Spreads, wie im Thema des Codeautors.

Aber Tester bieten solche Möglichkeiten nicht, dafür brauche ich Eulen im Tester, um Trades mit Spread zu "spiegeln", als ob sie in einem anderen Terminal geöffnet werden, aber nach der Logik dieser Eule, z.B. durch einen Kopierer mit Neugewichtung.

Ich brauche es, um den TS zu überprüfen

Wenn das Problem mit dem Markteintritt Aufträge versuchen, diese zu ersetzen

///////////////
if (cmd==OP_SELL) // Переворачиваем ордера OP_SELL
{
Ret=OrderSend (symbol,OP_BUY,volume,Ask,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUY) // Переворачиваем ордера OP_BUY
{
Ret=OrderSend (symbol,OP_SELL,volume,Bid,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}

Und wenn das Problem bei allen Aufträgen auftritt, dann prüfen Sie STOPLEVEL

 
MakarFX:

........................., und die Arbeit mit Addition

Ich bin zu dem Schluss gekommen, dass es schwierig zu implementieren ist, Ihr Code ist viel einfacher, klarer und logischer, aber ..... fügt aus irgendeinem Grund auch nicht hinzu. Die Hauptsache ist, dass man nicht aufgibt.

 
SGarnov:

Ich bin zu dem Schluss gekommen, dass es schwierig zu implementieren ist, Ihr Code ist viel einfacher, klarer und logischer, aber ..... passt irgendwie auch nicht zusammen. Die Hauptsache ist, dass man nicht aufgibt.

Ich diene der Sowjetunion!
 
SGarnov:

Ich bin zu dem Schluss gekommen, dass es schwierig zu implementieren ist, Ihr Code ist viel einfacher, klarer und logischer, aber ..... passt irgendwie auch nicht zusammen. Die Hauptsache ist, dass man nicht aufgibt.

MakarFX:
Ich diene der Sowjetunion!

Vielleicht sollten Sie auch die Anzahl der ausgelösten Stopps berücksichtigen. Zum Beispiel wird der EA einen Stop in der Historie finden, und wenn es zwei davon gibt, sollte er sowohl drei als auch vier hinzufügen, es hängt alles von der externen Einstellung "Anzahl der Stop-Verluste" ab.

 
SGarnov:

Vielleicht sollten Sie auch die Anzahl der ausgelösten Stopps berücksichtigen. Zum Beispiel wird der EA einen Stop in der Historie finden, und wenn es zwei gibt, sollte er sie beide drei und vier hinzufügen, es hängt alles von der externen Einstellung "Anzahl der Stop-Verluste" ab.

Es wird die Anzahl der ausgelösten Stops erfasst, und wenn die "Anzahl der Verlustaufträge" höher ist als in den Einstellungen angegeben, werden die ausstehenden Aufträge nicht mehr platziert (bereits überprüft).
 

Hallo zusammen, bitte um Hilfe!

Ich habe ein solches Problem. Ich kaufte eine vpc von mql5 alles funktioniert gut, installiert einen Experten, eingerichtet 8 Charts und legte einen Experten. Und ich habe das Ganze auf vpc übertragen.

Ich musste Metatrade von meinem Computer deinstallieren, weil es nicht meins war.

Und wenn ich jetzt von meinem Computer aus reingehe.

Alles funktioniert, der Experte. Es funktioniert, aber ich kann keine Änderungen an den Einstellungen vornehmen. Wie kann ich den EA und die Zeitpläne zurückgeben, so dass ich sie von meinem Computer aus verwalten kann?

Ich danke Ihnen!