z.B. Zeichenkette
bool neutral = OrderClosePrice() == OrderOpenPrice();
sollten wir wahrscheinlich die Funktionsweise der algorithmischen Bedingungen so gestalten:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
und die beiden anderen Bedingungen in der gleichen Art und Weise
Übrigens: Das letzte Geschäft in der Geschichte ist nicht immer das letzte Geschäft in der Zeit.
Übrigens, das letzte Geschäft in der Geschichte ist nicht immer das letzte Geschäft in der Zeit.
z.B. Linie
vielleicht sollten wir die Arbeit der algorithmischen Bedingungen so gestalten:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
und die beiden anderen Bedingungen in der gleichen Art und Weise
aber trotzdem werde ich das sicherlich überprüfen und neu schreiben. Ich werde Sie über das Ergebnis informieren.
Ja, ich habe die Zeitabtastung entfernt, aber es funktioniert immer noch nicht... Ich habe diesen Block bereits in anderen Systemen verwendet und er hat in diesem Teil perfekt funktioniert.
aber trotzdem werde ich das sicherlich überprüfen und neu schreiben. Ich werde Sie über das Ergebnis informieren.
Werden diese Variablen irgendwo zurückgesetzt?
ObchMin = ObchMin + SumPosOrder; // Подсчет общего минуса Minus++; //Подсчет отрицательных сделок Sdelok++; //Подсчет количества сделок
Vielleicht gehen Sie von der kartierten.
Ich werde die Sammlung von Statistiken aus dieser Funktion für jetzt zu entfernen, und allgemeine Minus-und Statistiken in einem anderen (separate Funktion produzieren wird)
Schreiben nach Blöcken.
Erfassen von Statistiken und Berechnen von Minus und Plus (Minus und Plus sind globale Variablen)
if(OrderSelect((OrdersHistoryTotal() - 1), SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { if(OrderTicket() != Tiket2) { bool profit1 = false; if(OrderClosePrice() > 0) { profit1 = true; } bool loss1 = false; if(OrderClosePrice() < 0) { loss1 = true; } SumPosOrder = OrderLots(); Tiket2 = OrderTicket(); Print(OrderCloseTime()); if(loss1) { ObchMin = ObchMin + SumPosOrder; Minus++; Sdelok++; } if(profit1) { ObchPlus = ObchPlus + (SumPosOrder * 0.8); } if(profit1 && ObchPlus < ObchMin) { Pobeda++; Sdelok++; } if(profit1 && ObchPlus > ObchMin) { ObchPlus = 0; ObchMin = 0; Pobeda++; Sdelok++; } }
Block 2 - Auswahl der Variablen n für die Berechnung (bzw. Auswahl) des Satzes
int GetN() { int n = 0; for(int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true; } if(loss) { n++; } if(n >= MartinSteps) { n = 0; break; } if(profit && ObchPlus < ObchMin) { n++; } if(profit && ObchPlus > ObchMin) { n = 0; break; } } Print(n); return n; } double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; } //+------------------------------------------------------------------+
Das wäre wahrscheinlich richtig...
Ich verstehe die Logik immer noch nicht.
Wie das?
bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true;
Wie kann der Schlusskurs des Auftrags kleiner als Null sein?
Die BUY-Order ist gewinnbringend, wenn der Schlusskurs höher ist als der Eröffnungskurs.
Hier ist die Bedingung für einen Kauf plus (ohne Provisionen und Swap):
OrderClosePrice() > OrderOpenPrice()Wenn es andersherum ist, ist das ein Minuspunkt.
Die BUY-Order ist gewinnbringend, wenn der Schlusskurs höher ist als der Eröffnungskurs.
Hier ist die Bedingung für einen Kauf plus (ohne Provisionen und Swap):
Wenn es andersherum ist, ist das ein Minuspunkt.Da ich für binäre Optionen schreibe, habe ich die Dinge ein wenig anders gemacht:
if(OrderProfit() > 0)
Das wäre wahrscheinlich richtig?
Vielleicht gehen Sie von der kartierten.
Ich werde die Sammlung von Statistiken aus dieser Funktion entfernen und das Gesamtminus und die Statistiken in einer anderen (separaten Funktion, die ich erstellen werde)
Schreiben nach Blöcken
Kumuliertes Minus und Plus (Minus und Plus sind globale Variablen)
Block 2 - Auswahl der Variablen n für die Berechnung (bzw. Auswahl) des Satzes
Das wäre wahrscheinlich richtig...
Ich möchte mich nicht einmischen und habe mir Ihren Code und Ihre Tipps nicht einmal angesehen...
double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; }
fiel mir auf. In diesem Zusammenhang eine Frage: Ist es nicht einfacher und lesbarer, den Schalteroperator
double SelectVolume(int n) { double Volume = 0.0; switch(n) { case 1 : Volume = Volume2; break; case 2 : Volume = Volume3; break; case 3 : Volume = Volume4; break; case 4 : Volume = Volume5; break; case 5 : Volume = Volume6; break; case 6 : Volume = Volume7; break; case 7 : Volume = Volume8; break; case 8 : Volume = Volume9; break; case 9 : Volume = Volume10; break; default : Volume = Volume1; break; } return(Volume); }Ich denke, es ist einfacher zu lesen und zu verstehen. Vielleicht geht es auch ein bisschen schneller.
Sie haben bereits Ratschläge für den gesamten Algorithmus erhalten, ich möchte mich nicht einmischen und habe mir Ihren Code und die gleichen Ratschläge noch nicht einmal angesehen... Aber das
fiel mir auf. In diesem Zusammenhang eine Frage: Ist es nicht einfacher und lesbarer, den Schalteroperator
Ich denke, es ist einfacher zu lesen und zu verstehen. Vielleicht geht es auch ein bisschen schneller.Ich habe es ursprünglich so gemacht, wie ich es vorgefunden habe, und es hat funktioniert, also habe ich nicht daran gedacht, es zu verbessern.
Sie wissen ja, was man sagt: "Es funktioniert - rühren Sie es nicht an.
Aber jetzt werde ich auf jeden Fall versuchen, diese Methode anzuwenden. Denn es ist notwendig, zu lernen und sich zu entwickeln.
Aber ich werde mich jetzt nur mit meiner Variable n beschäftigen. Er will nicht gezählt werden.
immer n = 0 (bisher)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Code schreiben
Die Aufgabe lautete ursprünglich:
Finde den letzten abgeschlossenen Auftrag.
Prüfen Sie, ob er in der Plus- oder Minusposition geschlossen ist.
Zählen Sie die Anzahl der Abschlüsse
Zählen Sie die Anzahl der Plus- und Minusabschlüsse.
Berechnen Sie die Höhe des Einsatzes.
Wenn der Handel profitabel ist (und das Gesamtminus = 0), dann wird Wette Nr. 1
Wenn der Handel negativ ist, wird das Minus gezählt und Wette Nr. 2
Wenn Plus, aber Minus > 0, dann wird die nächste Wette gesetzt.
Aber aus irgendeinem Grund zählt es die Anzahl der Einsätze und den Einsatzbetrag nicht korrekt...