[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 171

 
bestfx:
Hallo zusammen. Bitte um Hilfe.

Das Wesentliche ist das Folgende: Es gibt einen Bot, der automatisch schwebende Aufträge zu einem bestimmten Preis platziert. ...
double main_price=1.251;
double price_to_byu=1.253;
double price_to_sell=1.249;
// --------
bool restriction=false;
if (Ask<=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)
      {  if (OrderOpenPrice()==price_to_byu) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_BUYSTOP,Lot,price_to_byu, ...);
   return(0);
}
// --------
restriction=false;
if (Bid>=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)
      {  if (OrderOpenPrice()==price_to_sell) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_SELLSTOP,Lot,price_to_sell, ...);
   return(0);
}

Wenn Sie viele ähnliche Aufträge erteilen, müssen Sie Arrays verwenden. Wie? Lesen Sie über Arrays.

 
Lisi4ka330:
Ab dem 1. Juni werden Versionen, die jünger als 416 build
sind, nicht mehr unterstützt.

Natasha, werden sie von Ihrem Computer nicht mehr unterstützt? )

Legen Sie 409 parallel zu Ihrem Hauptterminal in einem nahegelegenen Ordner ab, laden Sie die gesamte Historie, die Sie brauchen, dort ab und testen Sie so viel wie möglich, Sie brauchen dafür keine Verbindung zum Server. Wenn Sie die Skripte von birt verwendet haben, sind Sie wahrscheinlich ohnehin offline.

 
FAQ:
Teilen Sie den Preis durch die Ziffern = reduzieren Sie ihn auf eine ganze Zahl und schreiben Sie ihn in einen Medjic, dann suchen Sie im Array der offenen Aufträge nach dem Medjic, bevor Sie einen neuen Auftrag einstellen.

Es macht einfach keinen Sinn.
 
paladin80:
Wenn Sie viele ähnliche Aufträge erteilen, müssen Sie Arrays verwenden. Wie? Lesen Sie über Arrays.

Ich lese nun schon den dritten Tag mit. :=( In php ist es einfacher, aber hier verstehe ich es nicht.
 
Lisi4ka330 09.06.2012 20:33
Ja, ich habe es versucht, aber nichts hat funktioniert((((

Dann kann es auch anders gemacht werden.

Es funktioniert sowohl mit MT4 als auch mit MT5.

1. Laden Sie alle Zecken herunter (Sie wissen, woher sie kommen) und schreiben Sie sie auf einen Server wie den MS SQL-Server, denn die Datenmenge ist riesig.

2. Schreiben Sie eine DLL für MT4 und MT5 zur Zusammenarbeit mit dem SQL-Server.

In MT4 überprüfen Sie die Flagge IsTesting ( ) und wenn es sich um einen Test handelt, ersetzen Sie anstelle der Kurswerte Daten aus der Datenbank (der Preis inverse Zeit) und das ist alles, nichts kompliziert.

P.S. Diese Variante ist besser, da sie für alle Builds und auf beiden MTs funktioniert, als die, die Sie mit der Änderung des Maschinencodes des Programms verwendet haben.

 
bestfx:

:=( Das ist doch Schwachsinn.


In Ihrem Fall müssen Sie vor der Eröffnung prüfen, ob es bereits Aufträge mit diesem Preis gibt. Wenn Sie Preise vergleichen wollen, müssen Sie an die Normalisierung und auch an die Abweichung denken.

In diesem Fall wird der Standardvergleich zweier ganzer Zahlen angewendet (schnell).


Wenn Sie sehr viele ähnliche Aufträge erteilen, sollten wir Arrays verwenden. Wie? Lesen Sie über Arrays.


OrdersTotal() und OrdersHistoryTotal() sind beides Arrays.

 
pusheax:

Dann kann es auch anders gemacht werden.

Es funktioniert sowohl mit MT4 als auch mit MT5.

1. Laden Sie alle Zecken herunter (Sie wissen, woher sie kommen) und schreiben Sie sie auf einen Server wie den MS SQL-Server, denn die Datenmenge ist riesig.

2. Schreiben Sie eine DLL für MT4 und MT5 zur Zusammenarbeit mit dem SQL-Server.

Wenn MT4 das IsTesting( ) Flag prüft und, falls es sich um einen Test handelt, ersetzen Sie anstelle von Kurswerten Daten aus der Datenbank (der Preis inverse Zeit).

P.S. Diese Variante ist besser, weil sie für jeden Build und auf beiden MTs funktioniert, als die, die Sie mit der Modifikation des Maschinencodes des Programms verwendet haben.

Es wird nicht funktionieren, weil die Transaktion nicht mit den Kursen aus der Datenbank durchgeführt wird, sondern weil der Preis falsch ist. Dann ist es einfacher, einen eigenen Tester zu schreiben.

Verwirren Sie das Mädchen nicht, ich habe gerade den EA auf dem 409-Build mit dem alten Skript getestet, alles funktioniert bestens.

 
alsu:

Das wird nicht funktionieren, weil man mit den Angeboten aus der Datenbank kein Geschäft machen kann, sondern der Preis falsch ist. Es wäre einfacher, ein eigenes Testprogramm zu schreiben.

Verwechseln Sie nicht das Mädchen, ich habe gerade getestet, die Expert Advisor auf 409 bauen mit einem alten Skript, alles funktioniert gut.


Nun, ich habe es später verstanden. Ich habe versucht, etwas Ähnliches zu erstellen, aber ich habe es nie geschafft, Zecken zu bauen, aber jetzt sind sie fertig.

Ich kann es nicht wirklich tun, ohne den Maschinencode zu ändern.

Ich habe diese Idee geschrieben, um zu diskutieren, nicht um zu verwirren, denn sie hat mir sehr gut gefallen und ich werde sie selbst umsetzen.

 
pusheax:

Nun, das habe ich später herausgefunden. Es ist nur so, dass ich selbst schon einmal versucht habe, etwas Ähnliches zu machen, aber die Zecken nicht zusammensetzen konnte, und jetzt sind sie fertig.

In der Tat scheint es, dass es ohne Änderung des Maschinencodes nicht funktioniert.

Ich habe diese Idee aufgeschrieben, um sie zu diskutieren, aber nicht, um sie zu verwirren, denn ich fand die Idee gut und werde sie selbst umsetzen.

Wenn Sie nicht wissen, was Sie damit tun sollen, haben Sie vielleicht Recht, ich werde mich selbst darum kümmern).

ps und auch mit echten Zecken, Blackjack und Huren

 
bestfx:

Ich lese jetzt schon seit drei Tagen. :=( In php ist es einfacher, aber hier kann ich es nicht verstehen.
Ich stimme dem Moderator zu, es ist besser, Aufträge/Positionen zu markieren, als offene Preise zu vergleichen. Neben der magischen Zahl können Sie auch die Prüfung auf Kommentare verwenden. Sie können den Eröffnungskurs in den Kommentar schreiben (z.B. "EURUSD 1,251").