[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 521
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie würde ich das überprüfen?
Ich danke Ihnen.
Ist es möglich, die MaxEquity-Einstellung zum Beispiel 500 Mal zu verwenden, ohne den EA neu zu starten?
Wenn ich z. B. 500 in den Zähler schreibe, sieht das folgendermaßen aus: Angenommen, das Anfangskapital beträgt 10 000,
Nach Aufstockung des Anfangskapitals von 10.000 (durch Angabe in den Einstellungen) werden große Defizite geschlossen.
Es wird (zum Beispiel) 500 Mal durchgeführt (es ist ohnehin unmöglich, das ursprüngliche Eigenkapital 500 Mal zu multiplizieren).
Das ist der Unterschied, der sich bei Ihrer Version herausstellen wird - dass nach Erhöhungen von 10 000 auf das ursprüngliche Eigenkapital = 10 000 -
Der EA muss nicht neu gestartet werden, und der Zyklus wird fortgesetzt - zu 20 000 werden weitere 10 000 hinzugefügt, zu 30 000 + 10 000 und so weiter 500 Mal (zum Beispiel). Quelle:
und nach jedem Inkrement = 10 000, wird der Verlustauftrag mit dem größten Minus (oder mehrere Aufträge - in den Einstellungen festzulegen) geschlossen ?
Ich danke Ihnen.
Ist es möglich, die MaxEquity-Einstellung zum Beispiel 500 Mal zu verwenden, ohne den EA neu zu starten?
Wenn ich zum Beispiel 500 in den Zähler schreibe, funktioniert das so: Nehmen wir an, das Anfangskapital beträgt 10 000,
Nach Aufstockung des Anfangskapitals von 10.000 (durch Angabe in den Einstellungen) schließen sich die großen Nachteile.
Auf die gleiche Weise, sagen wir zum Beispiel 500-mal (es ist ja unmöglich, das ursprüngliche Kapital 500-mal zu multiplizieren).
Mit anderen Worten, die Differenz wird in Ihrer Version erscheinen: nach Hinzufügung von 10 000 zum ursprünglichen Eigenkapital = 10 000.
Der Expert Advisor muss nicht neu gestartet werden, und der Zyklus wird fortgesetzt - zu 20 000 werden 10 000 hinzugefügt, zu 30 000 + 10 000 und so weiter (zum Beispiel) 500 Mal. Zum Beispiel:
Und nach jedem Inkrement, das 10 000 entspricht, wird der Verlustauftrag mit dem größten Verlust geschlossen (oder mehrere Verlustaufträge, je nach Einstellung)?
Ein Neustart ist nicht erforderlich. Sie müssen die ursprünglichen Eigenkapitaldaten nach dem Schließen der Positionen aktualisieren und warten, bis sich das Eigenkapital aus dem neuen ursprünglichen Eigenkapital erhöht.
Aber so wie ich das verstehe, wird das alles im Programmiercode gemacht. Ich habe nicht die Macht zu programmieren.)
Natürlich. Es gibt nur eine Funktion, die das Eigenkapital kontinuierlich überwacht und einen Befehl zum Schließen unrentabler Positionen sendet, wenn der angegebene Wert überschritten wird. Nachdem alle Positionen erfolgreich geschlossen wurden, muss der neue Eigenkapitalstatus erfasst und weiter überwacht werden.
Können Sie mir sagen, was das Problem sein könnte?
Ich gehe davon aus, dass meine Frage nicht genügend Informationen enthält, um mir zu helfen). Ich werde meine Frage vervollständigen. Nachfolgend stelle ich eine Struktur mit den Hauptfunktionen meines Expert Advisors zur Verfügung. Vielleicht wird dadurch das von mir geschilderte Problem deutlich.
Im Moment muss ich den EA jedes Mal neu kompilieren, nachdem ich die Geldmanagementfunktion in den EA-Parametern aktiviert/deaktiviert habe, damit der Bericht korrekt erstellt wird.
P.S. Vielleicht hat es etwas mit der globalen Variable terminal fxprop_lot zu tun?
Ich gehe davon aus, dass meine Frage nicht genügend Informationen enthält, um mir zu helfen). Ich werde meine Frage vervollständigen. Im Folgenden stelle ich die Struktur mit den grundlegenden Funktionen meines EA vor. Vielleicht wird es auf diese Weise möglich sein, das von mir hervorgehobene Problem zu identifizieren.
Im Moment muss ich den EA jedes Mal neu kompilieren, nachdem ich die Geldmanagementfunktion in den EA-Parametern aktiviert/deaktiviert habe, damit der Bericht korrekt erstellt wird.
P.S. Vielleicht hat es mit der globalen Variable terminalfxprop_lot zu tun?
Wenn Sie meinen, dass das ausreicht, dann ist es wohl so. Wir müssen einfach auf eine Antwort warten. Ich habe keins.
Wenn Sie glauben, dass das ausreicht, dann ja. Ich warte auf eine Antwort. Ich habe keins.
Und im nächsten Beitrag die Funktion zur Berichterstellung...Meine bisherigen Erfahrungen erlauben es mir leider nicht zu beurteilen, ob die bereitgestellten Informationen ausreichen, um ein bestimmtes Problem zu lösen. Ich tue das nicht absichtlich und entschuldige mich, wenn Sie es tun). Die Sache ist, meiner Meinung nach, der wichtigste Punkt in das Problem, das ich hervorgehoben ist, dass alles richtig funktioniert, wenn die Neukompilierung der Expert Advisor. Aber das liegt wiederum an meiner unausgereiften Erfahrung. Bitte teilen Sie uns mit, welche Informationen wir benötigen, um dieses Problem zu lösen. Die Geldverwaltungsfunktion oder die Funktion zur Erstellung von Berichten taucht offensichtlich in dem Problem auf. Deshalb werde ich Ihnen die Funktion der Geldverwaltung geben:
void Short_Trade_Report(int Mgc_Src_LP_TS№1,int Mgc_LP01_TS№1,int Mgc_LP02_TS№1,int Mgc_LP03_TS№1,int Mgc_LP04_TS№1,int Mgc_LP05_TS№1,int Mgc_LP06_TS№1, int Mgc_Src_SP_TS№1,int Mgc_SP01_TS№1,int Mgc_SP02_TS№1,int Mgc_SP03_TS№1,int Mgc_SP04_TS№1,int Mgc_SP05_TS№1,int Mgc_SP06_TS№1, int Mgc_Src_LP_TS№2,int Mgc_LP01_TS№2,int Mgc_LP02_TS№2,int Mgc_LP03_TS№2,int Mgc_LP04_TS№2,int Mgc_LP05_TS№2,int Mgc_LP06_TS№2, int Mgc_Src_SP_TS№2,int Mgc_SP01_TS№2,int Mgc_SP02_TS№2,int Mgc_SP03_TS№2,int Mgc_SP04_TS№2,int Mgc_SP05_TS№2,int Mgc_SP06_TS№2, int Mgc_Src_LP_TS№3,int Mgc_LP01_TS№3,int Mgc_LP02_TS№3,int Mgc_LP03_TS№3,int Mgc_LP04_TS№3,int Mgc_LP05_TS№3,int Mgc_LP06_TS№3, int Mgc_Src_SP_TS№3,int Mgc_SP01_TS№3,int Mgc_SP02_TS№3,int Mgc_SP03_TS№3,int Mgc_SP04_TS№3,int Mgc_SP05_TS№3,int Mgc_SP06_TS№3) { #define RA 10000 // Range Array - Размер массива для отчёта double Acc_Bal_Close[RA]; // Массив для баланса на закрытии сделки(-ок) double Acc_Bal_Open[RA]; // Массив для баланса на открытии сделки(-ок) double Price_Open_Pos[RA]; double Price_Stop_Loss[RA]; double TS№1_DS[RA], TS№2_TA[RA], TS№3_SBH[RA]; int pos, handle, dgt, Magic, sign, index; double Swap_P; double Profit_P; double Commission; double Open_Price; double Stop_Loss; string Type_Pos; string comment; string Str_Stop_Loss; //--- ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ ДЛЯ РАСЧЁТА ОТСТУПА В СТРОКАХ КОММЕНТАРИЕВ --------------------------------// int digit_string; int digit = MarketInfo(Symbol(),MODE_DIGITS); switch(digit) { case 2 : digit_string = 4; dgt = 100; break; case 3 : digit_string = 5; dgt = 100; break; case 4 : digit_string = 6; dgt = 10000; break; case 5 : digit_string = 7; dgt = 10000; break; default: Print("Неизвестный символ! Количество знаков = ",digit); return(0); } handle = FileOpen("ShortReport.csv",FILE_CSV|FILE_WRITE); if(handle > 0) //1 { FileWrite(handle,"Time Close"+","+"Symbol"+","+"Type"+","+"Lots"+","+"Balance($)"+","+"Stop Loss(p)"+","+"Profit(p)"+","+"TS#1_DS(p)"+","+"TS#2_TA(p)"+","+"TS#3_SBH(p)"); for(pos = 0; pos < OrdersHistoryTotal(); pos++) // 2 { OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY); Commission = OrderCommission(); Swap_P = (OrderSwap()/10)/OrderLots(); Profit_P = (OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots(); Open_Price = NormalizeDouble(OrderOpenPrice(),Digits); index = StringFind(OrderComment(),"[sl]",0); if(index != -1) { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())-4); } else { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№1 || OrderMagicNumber() == Mgc_Src_SP_TS№1 || OrderMagicNumber() == Mgc_LP01_TS№1 || OrderMagicNumber() == Mgc_LP02_TS№1 || OrderMagicNumber() == Mgc_LP03_TS№1 || OrderMagicNumber() == Mgc_LP04_TS№1 || OrderMagicNumber() == Mgc_LP05_TS№1 || OrderMagicNumber() == Mgc_LP06_TS№1 || OrderMagicNumber() == Mgc_SP01_TS№1 || OrderMagicNumber() == Mgc_SP02_TS№1 || OrderMagicNumber() == Mgc_SP03_TS№1 || OrderMagicNumber() == Mgc_SP04_TS№1 || OrderMagicNumber() == Mgc_SP05_TS№1 || OrderMagicNumber() == Mgc_SP06_TS№1)) { TS№1_DS[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№2 || OrderMagicNumber() == Mgc_Src_SP_TS№2 || OrderMagicNumber() == Mgc_LP01_TS№2 || OrderMagicNumber() == Mgc_LP02_TS№2 || OrderMagicNumber() == Mgc_LP03_TS№2 || OrderMagicNumber() == Mgc_LP04_TS№2 || OrderMagicNumber() == Mgc_LP05_TS№2 || OrderMagicNumber() == Mgc_LP06_TS№2 || OrderMagicNumber() == Mgc_SP01_TS№2 || OrderMagicNumber() == Mgc_SP02_TS№2 || OrderMagicNumber() == Mgc_SP03_TS№2 || OrderMagicNumber() == Mgc_SP04_TS№2 || OrderMagicNumber() == Mgc_SP05_TS№2 || OrderMagicNumber() == Mgc_SP06_TS№2)) { TS№2_TA[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№3 || OrderMagicNumber() == Mgc_Src_SP_TS№3 || OrderMagicNumber() == Mgc_LP01_TS№3 || OrderMagicNumber() == Mgc_LP02_TS№3 || OrderMagicNumber() == Mgc_LP03_TS№3 || OrderMagicNumber() == Mgc_LP04_TS№3 || OrderMagicNumber() == Mgc_LP05_TS№3 || OrderMagicNumber() == Mgc_LP06_TS№3 || OrderMagicNumber() == Mgc_SP01_TS№3 || OrderMagicNumber() == Mgc_SP02_TS№3 || OrderMagicNumber() == Mgc_SP03_TS№3 || OrderMagicNumber() == Mgc_SP04_TS№3 || OrderMagicNumber() == Mgc_SP05_TS№3 || OrderMagicNumber() == Mgc_SP06_TS№3)) { TS№3_SBH[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() == OP_BUY) { Type_Pos = "buy"; } if(OrderType() == OP_SELL) { Type_Pos = "sell"; } if(OrderType() < 2) { FileWrite(handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+","+Symbol()+","+Type_Pos+"," +DoubleToStr(OrderLots(),2)+","+DoubleToStr(Acc_Bal_Close[pos],2)+","+DoubleToStr(Price_Stop_Loss[pos],2)+"," +DoubleToStr(Profit_P+Swap_P+Commission,2)+","+DoubleToStr(TS№1_DS[pos],2)+","+DoubleToStr(TS№2_TA[pos],2)+","+DoubleToStr(TS№3_SBH[pos],2)); } } FileClose(handle); // 2\ } //1 }
Bitte helfen Sie bei der Lösung des Problems.Ich habe versucht, die Kapitalverwaltungsfunktion während der Initialisierung aufzurufen:
Aber das löst das Problem nicht...