Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.
Ein Flag ist einfach eine Variable, in der der Zustand gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.
Können Sie beraten, wie man eine korrekte Bedingung für den Expert Advisor zu schreiben, um 1 Mal mit der Eröffnung eines neuen Bar in einem bestimmten Zeitrahmen auslösen? :(
Sie können sich verschiedene Varianten ausdenken, oft wird diese Art von Bedingung verwendet:
int start()
staticdatetime dtBar;
//.................if(Time[0]==dtBar) return(0);//…проверим открытие новой свечи
dtBar=Time[0]; //(тот же Бар-возврат)(новый-продолжение...)//
Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.
Ein Flag ist einfach eine Variable, in der die Bedingung gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.
Nun, habe ich das richtig verstanden?
Ich verstehe das richtig:
1. Wenn Bedingung 1 erfüllt ist, wird Flag_SSSR1 ein wahrer Wert zugewiesen, und wir beginnen sofort mit der Überprüfung von Bedingung 2.
2. wenn die Bedingung2 erfüllt ist, wird der Flagge Flag_CCP2 der Wert "wahr" zugewiesen; wenn nicht, handelt es sich um eine falsche Flagge, und beim nächsten Tick
wir prüfen die Bedingung 1 nicht mehr und gehen direkt zu Bedingung 2 über usw., bis Bedingung 2 erfüllt ist und einen wahren Wert annimmt
3. dann prüfen wir condition3 und Flag_USSR2 (und was genau in USSR2 wird geprüft, ob es wahr oder falsch ist, oder was?)
Ist dies richtig? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist los...?
staticbool Val_max, Cl_dn, Val_min; //static or global//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int
i, j, total,
cnt,
OrderBuy,
OrderSell,
Magic,
Ticket, // Номер ордера
Total=0, // Количество ордеров в окне
Tip=-1; // Тип выбран. ордера (B=0,S=1) double
Open_0,
ask,
bid,
Price, // Цена выбранного ордера
SL, // SL выбранного ордера
TP, // TP выбранного ордера
Lot; // Колич. лотов в выбран.ордере
Open_0=Open[0]; // Цена откр. формирующегося бара
ask=Ask; // Текущая цена покупки
bid=Bid; // Текущая цена продажиstring
Symb; // Название финанс. инструмента
Symb=Symbol(); // Название фин.инстр.double Value_max=1.0000;
double Value_min=0.9980;
double Open_1= Open[1];
double Close_1= Close[1];
//----//--------------------------------------------------------------- 4 --double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);
if (Val >= Value_max) Val_max=true; // if (Open_1 > Close_1) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
{
for (j = 0; j < OrdersTotal(); j++)
{
OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_SELL) return(0);
}
}
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red); // Открытие SELL
Val_max=false; Cl_dn=false; Val_min=false;
}
//----return(0);
}
Ich habe mir zum Ziel gesetzt, die Zahl der gleichzeitig offenen Positionen auf 1 zu begrenzen.
Mit der Variable Open/Close level = 3/2 multipliziert mit Point, platziert in den Open/Close-Positionsbedingungen habe ich versucht, diese Aufgabe zu lösen, was mir aber nicht gelungen ist.
Ist das die richtige Entscheidung? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist denn los...?
Schreiben Sie nun die Bedingungen noch einmal vollständig in normaler Sprache auf und Sie können den Code korrigieren... Das Gute an Signalen ist, dass sie ein Verfallsdatum und eine Kündigung haben sollten.
splxgf: Schreiben Sie nun die Bedingungen noch einmal vollständig in normaler Sprache auf und Sie können den Code korrigieren... Das Gute an Signalen ist, dass sie eine Verfalls- und Kündigungsfrist haben sollten.
Alle diese Bedingungen können nicht auf einmal folgen (vielleicht nach einer Stunde oder zwei oder drei), so müssen wir es so machen, sobald der Indikator 1,0000 erreicht, diese Bedingung nicht bei jedem Tick überprüft wird, und warten, bis eine Bar schließt mit fallen, und nach, dass diese 2 Bedingungen nicht bei jedem Tick überprüft werden, und warten, bis der Indikator erreicht 0,9980 oder weniger. Sobald alle Bedingungen erfüllt sind, eröffnen wir einen Marktauftrag zum Verkauf von 0,1 Lot mit einem Stop Loss von 400p und einem Take Profit von 400p.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Laden Sie die Geschichte herunter und die Frage verschwindet
Wie können Sie es herunterladen?
Ich verstehe das richtig:
Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.
Ein Flag ist einfach eine Variable, in der der Zustand gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.
Können Sie beraten, wie man eine korrekte Bedingung für den Expert Advisor zu schreiben, um 1 Mal mit der Eröffnung eines neuen Bar in einem bestimmten Zeitrahmen auslösen? :(
Sie können sich verschiedene Varianten ausdenken, oft wird diese Art von Bedingung verwendet:
Die konkrete Umsetzung ist sehr stark von Ihren Bedingungen abhängig.
Ein Flag ist einfach eine Variable, in der die Bedingung gespeichert wird. Grob gesagt, kann sie angehoben oder abgesenkt werden. Bauen Sie darauf auf und setzen Sie Ihre Logik um.
Nun, habe ich das richtig verstanden?
Ich verstehe das richtig:
1. Wenn Bedingung 1 erfüllt ist, wird Flag_SSSR1 ein wahrer Wert zugewiesen, und wir beginnen sofort mit der Überprüfung von Bedingung 2.
2. wenn die Bedingung2 erfüllt ist, wird der Flagge Flag_CCP2 der Wert "wahr" zugewiesen; wenn nicht, handelt es sich um eine falsche Flagge, und beim nächsten Tick
wir prüfen die Bedingung 1 nicht mehr und gehen direkt zu Bedingung 2 über usw., bis Bedingung 2 erfüllt ist und einen wahren Wert annimmt
3. dann prüfen wir condition3 und Flag_USSR2 (und was genau in USSR2 wird geprüft, ob es wahr oder falsch ist, oder was?)
Ist dies richtig? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist los...?
Hallo!
Ich habe mir zum Ziel gesetzt, die Zahl der gleichzeitig offenen Positionen auf 1 zu begrenzen.
Mit der Variable Open/Close level = 3/2 multipliziert mit Point, platziert in den Open/Close-Positionsbedingungen habe ich versucht, diese Aufgabe zu lösen, was mir aber nicht gelungen ist.
Bitte helfen Sie mir, es herauszufinden :)
Ist das die richtige Entscheidung? Es gibt nicht eine einzige Transaktion im Testgerät... Obwohl es so sein sollte, wenn es richtig ist. Was ist denn los...?
Hallo!
Ich habe mir zum Ziel gesetzt, gleichzeitig offene Positionen auf 1 zu beschränken.
if(Auftragssumme()>0) return;
Oder eine Variante mit dem Symbol und dem Ausschluss schwebender Aufträge.
d.h. in meiner Version
if(AufträgeSumme()>1)return;
?
Schreiben Sie nun die Bedingungen noch einmal vollständig in normaler Sprache auf und Sie können den Code korrigieren... Das Gute an Signalen ist, dass sie eine Verfalls- und Kündigungsfrist haben sollten.
Alle diese Bedingungen können nicht auf einmal folgen (vielleicht nach einer Stunde oder zwei oder drei), so müssen wir es so machen, sobald der Indikator 1,0000 erreicht, diese Bedingung nicht bei jedem Tick überprüft wird, und warten, bis eine Bar schließt mit fallen, und nach, dass diese 2 Bedingungen nicht bei jedem Tick überprüft werden, und warten, bis der Indikator erreicht 0,9980 oder weniger. Sobald alle Bedingungen erfüllt sind, eröffnen wir einen Marktauftrag zum Verkauf von 0,1 Lot mit einem Stop Loss von 400p und einem Take Profit von 400p.
d.h. in meiner Version
if(AufträgeSumme()>1)return;
?