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

 

Ich verfeinere sie noch:

wenn die Bedingung erfüllt ist

offene Bestellung 1

ob sich der Preis dorthin bewegt hat, wo er sollte oder nicht

offene Bestellung 2

LastLot= Bestellung 2 (oder höhere Zahl)

LetzterPreis= Bestellung2 (oder höhere Zahl)

Wenn der Preis sich bewegt oder nicht bewegt hat, wo er sich bewegen sollte...

LastLot= Bestellung 3 (oder höhere Zahl)

LastPrice= Bestellung 3 (oder eine höhere Zahl)

Das Problem ist, dass der letzte (oder nicht) Auftrag immer zwischen einem StopLoss und einem TakeOut liegt, was bedeutet, dass er nicht zurückgesetzt wird, wenn die anderen geschlossen werden, da der Auftrag selbst noch vorhanden ist. Wie können wir sie mit den anderen verbinden, wenn wir die Anzahl der Aufträge nicht kennen?

Der Mechanismus, den letzten, ersten oder vorletzten an die anderen zu binden, hat sich als ineffizient erwiesen, da sich ihre Anzahl mit den Zahlen ändert.

Das Ergebnis sollte in etwa lauten: "Wenn ein Auftrag der angegebenen Reihe abgeschlossen ist, schließe alle anderen".

Serienprüfung - die erste Order der aktuellen Richtung (eine andere Order wird nicht geöffnet) - hier sollte entweder ein zusätzlicher Bezeichner oder eine andere Bindungsmethode verwendet werden. Der Schlüssel - der erste Auftrag wird gemäß den Bedingungen eröffnet, die restlichen Aufträge sind Hilfsaufträge.

irgendwelche Gedanken?

 
trader781:

Ich verfeinere sie noch:

wenn die Bedingung erfüllt ist

offene Bestellung 1

ob sich der Preis dorthin bewegt hat, wo er sollte oder nicht

offene Bestellung 2

LastLot= Bestellung 2 (oder höhere Zahl)

LetzterPreis= Bestellung2 (oder höhere Zahl)

Wenn der Preis sich bewegt oder nicht bewegt hat, wo er sich bewegen sollte...

LastLot= Bestellung 3 (oder höhere Zahl)

LastPrice= Bestellung 3 (oder eine höhere Zahl)

Das Problem ist, dass der letzte (oder nicht) Auftrag immer zwischen einem StopLoss und einem TakeOut liegt, was bedeutet, dass er nicht zurückgesetzt wird, wenn die anderen geschlossen werden, weil der Auftrag selbst noch vorhanden ist. Wie können wir sie mit den anderen verbinden, wenn wir die Anzahl der Aufträge nicht kennen?

Der Mechanismus, den letzten, ersten oder vorletzten an die anderen zu binden, hat sich als ineffizient erwiesen, da sich ihre Anzahl mit den Zahlen ändert.

Das Ergebnis sollte in etwa lauten: "Wenn ein Auftrag der angegebenen Reihe abgeschlossen ist, schließe alle anderen".

Serienprüfung - die erste Order der aktuellen Richtung (eine andere Order wird nicht geöffnet) - hier sollte entweder ein zusätzlicher Bezeichner oder eine andere Bindungsmethode verwendet werden. Der Schlüssel - der erste Auftrag wird gemäß den Bedingungen eröffnet, die restlichen Aufträge sind Hilfsaufträge.

Haben Sie eine Idee?

Es ist unklar. Versuchen Sie, Ihre Gedanken klarer auszudrücken.

Es geht um Folgendes:"Wenn der Preis in die richtige Richtung geht oder nicht, sollten wir Auftrag 2 eröffnen" - wie ist es zu verstehen, dasswir auf jeden Fall Auftrag 2 eröffnen sollten?

Und wir werden immer mehr "oder sonst" bekommen.

Und wenn wir uns nicht Fragen stellen wollen wie: "Wie kann man ihn mit den übrigen Aufträgen verbinden, wenn der Preisbetrag nicht bekannt ist", sollten wir zuerst den Betrag herausfinden.

 
Vitalie Postolache:

Es ist verwirrend, unverständlich. Versuchen Sie, Ihre Gedanken klarer zu formulieren.

Dieses"wenn der Kurs sich in die richtige Richtung bewegt hat oder nicht - um Auftrag2 zu eröffnen" - wie sollen wir das auf jeden Fall verstehen"um Auftrag2 zu eröffnen"?

Und wir werden immer mehr "oder sonst" bekommen.

Und wenn wir uns nicht mit Fragen wie"Wie können wir es mit den übrigen Aufträgen in Verbindung bringen, wenn wir den Betrag nicht kennen" auseinandersetzen wollen, sollten wir zuerst den Betrag herausfinden.

OK, mit Zahlen

EURUSD=1,10000

einen Befehl zur Eröffnung eines Kaufauftrags gemäß dem TP (bereits geschrieben)

wenn EURUSD=1.10200, geben wir einen Kaufauftrag (bereits geschrieben)

wenn EURUSD=1.09800 zu "kaufen" (es ist bereits geschrieben)

und so weiter mit einer Schrittweite von 200

wenn einer der Aufträge geschlossen ist (Stopps und Übernahmen werden gesetzt, aber nicht bei allen)

Schließen Sie das gesamte Gitter

Suche nach einer Möglichkeit, das Netz zu identifizieren
 
trader781:

OK, mit Zahlen

EURUSD=1,10000

Befehl zur Eröffnung eines Kaufauftrags gemäß dem TP zum aktuellen Preis (bereits geschrieben)

wenn EURUSD=1.10200, um den Kaufauftrag zu ergänzen (bereits geschrieben)

wenn EURUSD=1.09800 zu "kaufen" (es ist bereits geschrieben)

und so weiter mit einer Schrittweite von 200

wenn einer der Aufträge geschlossen wird (Stopps und Übernahmen sind bereits festgelegt)

das gesamte Gitter schließen

Suche nach einer Möglichkeit, das Gitter zu identifizieren
Sie können Kommentare unter Angabe der Bestellnummer hinzufügen. Und wenn die Auftragsreihe von einem Typ ist, können wir sie einfach neu berechnen und den Betrag festlegen.
 
Vitalie Postolache:
Es können Kommentare mit der Bestellnummer hinzugefügt werden. Und wenn die gesamte Reihe von Aufträgen eines Typs - dann sollten sie einfach neu zu berechnen und die Menge zu beheben.

Ich hatte an Kommentare gedacht, aber nach den Rückmeldungen zu urteilen, hält der Chefkoch sie für ungenießbar und löscht sie entweder oder ändert sie in seine eigenen.

Und was das Zählen angeht, muss ich also zählen und die Zahl notieren, wenn ich eine weitere hinzuzähle?

 
trader781:

Und was das Zählen angeht: Muss ich die Menge zählen und aufzeichnen, wenn ich ein weiteres Exemplar hinzufüge?

Ja. Und wenn sich die Zahl seit dem letzten Mal verringert hat, schließen Sie alle verbleibenden.

Sie können auch die abgeschlossenen Aufträge in der Historie verfolgen. Und schließen Sie die Serie, wenn ein neuer Auftrag erscheint, der die angegebenen Merkmale erfüllt.

Sie können TP/SL auch nicht in der Order setzen, sondern im Expert Advisor die Summe der TP/SL für die gesamte Serie berechnen. Verwenden Sie sie zum Abschluss der Serie. Die Vorteile - die Brokerfirma sieht die Breakpoint-Levels nicht, und das Problem, die Serie zu finden, bleibt bestehen, wenn ein TP oder ein SL bei einer Order ausgelöst hat.
 
Grüße ...Frohes neues Jahr ...Ich wünsche Ihnen alles Gute und Wohlstand ...In diesem Code ändern Sie bitte die Berechnung des Loses wurde mit der maximal möglichen Hebelwirkung Konto durchgeführt
//+------------------------------------------------------------------+
double volume(string symbol,double risk,double sl)
  {
   double lot=0.0;
   double procent=0.0;
   double balans=0.0;
   double tc = SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE);
   double tv = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);

   if(Type_Balanse==Balance) balans=AccountInfoDouble(ACCOUNT_BALANCE);
   if(Type_Balanse==Equity) balans=AccountInfoDouble(ACCOUNT_EQUITY);
   if(Type_Balanse==FreeMargin) balans=AccountInfoDouble(ACCOUNT_FREEMARGIN);

   procent=(balans/100.0)*risk;

   switch((int)MarketInfo(symbol,MODE_PROFITCALCMODE))
     {
      case 0: if(sl!=0 && tv!=0) lot=procent/(sl*tv);break;
      case 1: if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
      case 2: if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
     }
   return(NormalizeVolume(symbol,lot));
  }
 
Wie in der Expert Advisor automatische Berechnung des Loses zu verschreiben, je nach Hebelwirkung ...Sagen Sie die Hebelwirkung 1:50 Einzahlung 3000.
 
Movlat Baghiyev:
OK, lassen Sie mich Ihnen eine einfache Frage stellen. Wie kann ich den EA so einstellen, dass er automatisch das Lot in Abhängigkeit von der Hebelwirkung berechnet...sagen wir Hebelwirkung 1:50 Einzahlung 3000...

Versuchen Sie es so:

void OnTick()
{
  Comment( cLot(100) );
}
//===============================================================================================
//------------------------------------ Расчет лота по риску ------------------------------------+
//===============================================================================================
double cLot(double Percent=0) {
double Free=AccountFreeMargin(),
        One_Lot=MarketInfo(_Symbol,MODE_MARGINREQUIRED),
        Min_Lot=MarketInfo(_Symbol,MODE_MINLOT),
        cStep=MarketInfo(_Symbol,MODE_LOTSTEP),
        Lots_New=0;
if(Percent > 100) {
    Percent = 100;
  }
  if(Percent == 0) {
    Lots_New = 0;
     return(0);
   } else {
    Lots_New = MathFloor(Free*Percent/100/One_Lot/cStep)*cStep;
   }
  if(Lots_New < Min_Lot) {
    Lots_New = Min_Lot;
  }
  if(Lots_New*One_Lot > Free) {
    return(0);
  }
   return(NormalizeDouble(Lots_New,LotDigit()));
}
//===============================================================================================
//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+
//===============================================================================================
int LotDigit(){
  double lotStep = MarketInfo(_Symbol,MODE_LOTSTEP);
return((int)MathCeil(MathAbs(MathLog(lotStep)/MathLog(10))));
}
 
Tut mir leid, ich brauche eine Art Auswahlmöglichkeit für den Risikoprozentsatz. Ich muss einfach die größtmögliche Menge auf einmal eröffnen, in Schritten von bis zu 0,01
Grund der Beschwerde: