Hilfe bei der Optimierung eines Stücks Code für Martin
Die Aufgabe lautet wie folgt:
-nach der Haltestelle wird ein Martin das Los vervielfältigen;
-Die Anzahl der Multiplikationen kann mit der Funktion OrdersClose eingestellt werden, und wenn sie einen bestimmten Wert erreicht, wird die Partie auf den Anfangswert zurückgesetzt;
- darf die Menge der Partie nicht auf die Ausgangsmenge zurückgesetzt werden, sondern muss in umgekehrter Reihenfolge verringert werden;
zum Beispiel OrdersClose=5, Martin=2, Lot=0,01:
ergibt sich die Reihenfolge: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,01; 0,01;,,,,
Hilfe bei der Optimierung eines Stücks Code für Martin
Die Aufgabe lautet wie folgt:
-nach der Haltestelle wird ein Martin das Los vervielfältigen;
-Die Anzahl der Multiplikationen kann mit der Funktion OrdersClose eingestellt werden, und wenn sie einen bestimmten Wert erreicht, wird die Partie auf den Anfangswert zurückgesetzt;
- darf die Menge der Partie nicht auf die Ausgangsmenge zurückgesetzt werden, sondern muss in umgekehrter Reihenfolge verringert werden;
zum Beispiel OrdersClose=5, Martin=2, Lot=0,01:
ergibt sich die Reihenfolge: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,01; 0,01;,,,,
Ich habe nicht genug Wissen, um das Problem selbst zu lösen.
Ich habe verschiedene Kombinationen ausprobiert, habe aber nicht den gewünschten Effekt erzielt.
//+------------------------------------------------------------------+//| Расчет лота |//+------------------------------------------------------------------+double Lots()
{
double L=0;
// если последняя закрытая сделка убыточная и лот равен стартовому// включаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot)
{
Martin=true;
}
// если последняя закрытая сделка убыточная и лот больше или равен максимальному// выключаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
{
Martin=false;
}
// если последняя закрытая сделка убыточная и Мартин включен, умножаем лотif(Martin==true)
{
L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
}
// если последняя закрытая сделка убыточная и Мартин выключен, делим лотif(Martin==false)
{
L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
}
if(L>MAXLOT) L = MAXLOT;
if(L<MINLOT) L = MINLOT;
return(L);
}
//+----------------------------------------------------------------------------+//| Функция возвращает по символу и магику |//| 1 - размер лота последней закрытой позиции |//| 2 - размер профита с учетом комиссии и свопа последней закрытой позиции |//| 3 - время последней закрытой позиции |//+----------------------------------------------------------------------------+double GetInfoLastPos(int a=1)
{
datetime t=0;
double result=0,l=0,p=0,f=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
}
}
}
}
if(a==1) {result=l;} elseif(a==2) {result=p;} elseif(a==3) {result=(double)t;}
else {result=0;}
return(result);
}
Modul Unterschied. Ohne Modul fällt nur die obere Zone in die Bedingung. | OpenPrice - Bid |> 10*_Point opening condition
So sollte die Bedingung sein: Bid ist niedriger als OpenPrice und keine Module.
Andernfalls erhalten wir ein korrektes Ergebnis, wenn Bid höher ist als OpenPrice
Modul Unterschied. Ohne das Modul fällt nur die obere Zone in die Bedingung. | OpenPrice - Bid |> 10*_Point opening condition
Ich verstehe das nicht ganz...
Können Sie das bitte deutlicher machen...für einen Anfänger)
Sie überraschen mich.
Wie?
Aus dem Bild können Sie ersehen, dass OpenPrice - Bid nicht mehr als 10*_Point betragen sollte
kann aber auch weniger sein, einschließlich negativer
kann aber auch weniger sein, einschließlich negativer
Ja... und Sie erhalten die Bedingung mit "&& > 0"
Wie lautet die Frage? Einfach so, oder für etwas anderes?
Ja... und Sie erhalten die Bedingung mit "&& > 0"
Wie lautet die Frage? Einfach so, oder für etwas anderes?
Ich verwende derzeit diese Definition des Zeitpunkts für den Markteintritt
Ich dachte, es gäbe vielleicht eine Möglichkeit, das zu vereinfachen)
Hilfe bei der Optimierung eines Stücks Code für Martin
Die Aufgabe lautet wie folgt:
-nach der Haltestelle wird ein Martin das Los vervielfältigen;
-Die Anzahl der Multiplikationen kann mit der Funktion OrdersClose eingestellt werden, und wenn sie einen bestimmten Wert erreicht, wird die Partie auf den Anfangswert zurückgesetzt;
- darf die Menge der Partie nicht auf die Ausgangsmenge zurückgesetzt werden, sondern muss in umgekehrter Reihenfolge verringert werden;
zum Beispiel OrdersClose=5, Martin=2, Lot=0,01:
ergibt sich die Reihenfolge: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,01; 0,01;,,,,
Bedarf: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,16; 0,08; 0,04; .... 0,01.
Ich habe nicht genug Wissen, um das Problem selbst zu lösen.
Ich habe versucht, verschiedene Kombinationen einzugeben, habe aber nicht den gewünschten Effekt erzielt.
Ich verwende derzeit diese Definition des Markteintrittspunktes
Ich dachte, es gäbe eine Möglichkeit, das zu vereinfachen)
Und Alexey hat Recht))
So sollte es nach den Bedingungen sein, Gebot unter OpenPrice und keine Module.
Andernfalls erhalten wir ein korrektes Ergebnis, wenn Bid höher ist als OpenPrice
Festgelegt)
Ja, richtig. Der Zustand hat sich nicht geändert. Aus Gewohnheit. Es verwirrt auf einem Bild, dass Bid in der Mitte ist))))
Aber dort ist die zweite Bedingung, der Eintrag, die gleiche Anzahl von Bedingungen.
Hilfe bei der Optimierung eines Stücks Code für Martin
Die Aufgabe lautet wie folgt:
-nach der Haltestelle wird ein Martin das Los vervielfältigen;
-Die Anzahl der Multiplikationen kann mit der Funktion OrdersClose eingestellt werden, und wenn sie einen bestimmten Wert erreicht, wird die Partie auf den Anfangswert zurückgesetzt;
- darf die Menge der Partie nicht auf die Ausgangsmenge zurückgesetzt werden, sondern muss in umgekehrter Reihenfolge verringert werden;
zum Beispiel OrdersClose=5, Martin=2, Lot=0,01:
ergibt sich die Reihenfolge: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,01; 0,01;,,,,
Bedarf: 0,01; 0,02; 0,04; 0,08; 0,16 (Reset) 0,16; 0,08; 0,04; .... 0,01.
Ich habe nicht genug Wissen, um das Problem selbst zu lösen.
Ich habe verschiedene Kombinationen ausprobiert, habe aber nicht den gewünschten Effekt erzielt.
Und Alexej hat recht))
Ja, das ist richtig. Der Zustand hat sich nicht geändert. Aus Gewohnheit. Es ist verwirrend auf dem Bild, dass Bid in der Mitte ist)))
Danke, aber das vereinfacht meinen Code in keiner Weise)