Nein, die Parameter sind korrekt. Prüfen Sie die Verschiebung von 0 auf 99. Alle Werte von 1 bis 99 stimmen eindeutig mit der Anzeige überein, aber bei einem Verschiebungswert von 0 stimmen die Daten nicht mit dem Indikator überein. Ich kann nicht herausfinden, wie sie genommen werden und was mein Fehler ist.
Ich bin mit diesem Problem konfrontiert worden. Ich habe eine Funktion, die einen schwebenden Auftrag platziert. Sie werden jedoch NUR platziert, wenn es keinen Auftrag zu dem angegebenen Preis gibt. Aber eine Bestellung wird auf seltsame Weise zum gleichen Preis wiederholt. Hier ist die Funktion, die eine Bestellung aufgibt.
int fOrderOpenBuy(double PR1, double PTP){
bool chek1=false;
RefreshRates();
double lts=fGetLotsSimple(OP_BUY);
if(lts>0){
if(!IsTradeContextBusy()){
//double PR=Close[1]-(150*Point);double slts=ND(PR1-Point*StopLoss);
if(StopLoss==0)slts=0;
//проверка ордеровint TotalOrders=OrdersTotal();
for (int i=0; i<=TotalOrders; i++){
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
if (PR1==OrderOpenPrice()){chek1=true;}
Print ("Чек "+OrderOpenPrice()+" "+PR1);
}
}
if (chek1==false) { int irv=OrderSend(Symbol(),OP_BUYLIMIT,lts,PR1,Slippage,slts,PTP,NULL,Magic_N,0,CLR_NONE); }
if(irv>0){
PlaySound("ok");
return(irv);
}
else{
PlaySound("timeout");
Print ("Error open BUY. "+fMyErDesc(GetLastError()));
return(-1);
}
}
else{
staticint lt2=0;
if(TimeCurrent()>lt2+20){
lt2=TimeCurrent();
Print("Need open buy. Trade Context Busy");
}
return(-2);
}
}
else{
staticint lt3=0;
if(TimeCurrent()>lt3+20){
lt3=TimeCurrent();
if(lts==-1)Print("Need open buy. No money");
if(lts==-2)Print("Need open buy. Wrong lots size");
}
return(-3);
}
}
Es werden dieselben offenen Preise ausgegeben, aber die Zeileif(PR1==OrderOpenPrice()){chek1=true;} will nicht ausgeführt werden. Kann mir jemand sagen, warum????
Liebe Profis !!!!! Der EA handelt nicht auf Demo und Real, aber im Strategy Tester ist alles OK!
Können Sie mir bitte sagen, was das Problem sein könnte? Ich habe versucht, verschiedene Indikatoren anzuhängen, sie funktionieren alle, aber nur im Strategy Tester!
Wenn wir über die Rachsite einmal pro Takt sprechen, verwende ich
wenn (b!=Bars){
b=Balken;
}
Die Berechnung, die in Klammern steht, findet also nur einmal pro Takt statt...
Ich danke Ihnen vielmals.
Ich möchte, dass die Informationen auf dem ersten Minutenbalken und nur auf diesem angezeigt werden.
Die Version, die Sie vorschlagen, habe ich versucht, ..... aber es zeigt Informationen über 2 und 3 und so weiter ... weil der zweite Balken ist nicht gleich der erste und der dritte ist nicht gleich der zweite, usw..
Ich muss die Informationen einmal beim ersten Takt ausdrucken. Und bis der nächste Auftrag durch den STOP geschlossen wird,sollte dieDruckfunktion"ruhen".
Ich möchte, dass die Informationen auf dem ersten und nur auf dem ersten Minutenbalken angezeigt werden.
Die Option, die Sie anbieten, habe ich versucht, ..... aber es zeigt Informationen über 2 und 3 und so weiter ... weil der zweite Balken ist nicht gleich der erste und der dritte ist nicht gleich der zweite, usw.
Ich muss die Informationen einmal in der ersten Zeile ausdrucken. Und dieDruckfunktion sollte "ruhen" , bis der nächste Auftrag durch den STOP geschlossen wird.
Versuchen Sie, eine Flagge zu verwenden.
wie
bool flag=false;
......
if (x1<0)&&(flag==false){Drucken();flag=true;}
Dann wird der Ausdruck EINMAL gedruckt.
Und nachdem der Stopp ausgelöst wurde, setzen Sie das Flag auf false zurück und der Druck wird erneut ausgeführt....
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.
Hallo
meine Schaltfläche "Mit historischen Daten starten" ist nicht aktiv
Was könnte der Grund dafür sein?
Hallo
meine Schaltfläche "Mit historischen Daten starten" ist nicht aktiv
Was könnte der Grund dafür sein?
Sind die Parameter richtig?
Viel Spaß euch allen :-)
Ich bin mit diesem Problem konfrontiert worden. Ich habe eine Funktion, die einen schwebenden Auftrag platziert. Sie werden jedoch NUR platziert, wenn es keinen Auftrag zu dem angegebenen Preis gibt. Aber eine Bestellung wird auf seltsame Weise zum gleichen Preis wiederholt. Hier ist die Funktion, die eine Bestellung aufgibt.
Es werden dieselben offenen Preise ausgegeben, aber die Zeileif(PR1==OrderOpenPrice()){chek1=true;} will nicht ausgeführt werden. Kann mir jemand sagen, warum????
Weil ich die Nase voll habe von..... :-( die Preise sind gleich geblieben und die Bestellung ist noch offen.....
Können Sie mir bitte sagen, was das Problem sein könnte? Ich habe versucht, verschiedene Indikatoren anzuhängen, sie funktionieren alle, aber nur im Strategy Tester!
Guten Tag zusammen!
Können Sie mir einen Tipp geben...
In dem folgenden Codeschnipsel gibt es zwei Bedingungen, wenn die Funktion Print eine Nachricht druckt.
Das Problem.
Die Druckfunktion druckt die Nachricht JEDEN Tick, ich muss sie nur beim ersten Tick drucken und bei den restlichen - in Ruhe.
Bitte beraten Sie mich, wie ich es nach dem ersten Ticken stoppen kann.
Ich danke Ihnen.
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
wenn ( OrderType ()==OP_SELL)
X1 = OrderProfit( );
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
wenn ( OrderType ()==OP_SELL)
wenn(X1 < 0)
Print(" LOW ", X1 );
Guten Tag zusammen!
Können Sie mir einen Tipp geben...
In dem folgenden Codeschnipsel gibt es zwei Bedingungen, wenn die Funktion Print eine Nachricht druckt.
Das Problem.
Die Druckfunktion druckt die Nachricht JEDEN Tick, ich muss sie nur beim ersten Tick drucken und bei den restlichen - in Ruhe.
Bitte beraten Sie mich, wie ich es nach dem ersten Ticken stoppen kann.
Ich danke Ihnen.
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
wenn ( OrderType ()==OP_SELL)
X1 = OrderProfit( );
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))
wenn ( OrderType ()==OP_SELL)
wenn(X1 < 0)
Print(" LOW ", X1 );
Wenn es sich um eine Rennsite handelt, die einmal pro Takt stattfindet, verwende ich
wenn (b!=Bars){
b=Balken;
}
Die Berechnung, die in Klammern steht, findet also nur einmal pro Takt statt...
Wenn wir über die Rachsite einmal pro Takt sprechen, verwende ich
wenn (b!=Bars){
b=Balken;
}
Die Berechnung, die in Klammern steht, findet also nur einmal pro Takt statt...
Ich danke Ihnen vielmals.
Ich möchte, dass die Informationen auf dem ersten Minutenbalken und nur auf diesem angezeigt werden.
Die Version, die Sie vorschlagen, habe ich versucht, ..... aber es zeigt Informationen über 2 und 3 und so weiter ... weil der zweite Balken ist nicht gleich der erste und der dritte ist nicht gleich der zweite, usw..
Ich muss die Informationen einmal beim ersten Takt ausdrucken. Und bis der nächste Auftrag durch den STOP geschlossen wird,sollte dieDruckfunktion "ruhen".
Ich danke Ihnen vielmals.
Ich möchte, dass die Informationen auf dem ersten und nur auf dem ersten Minutenbalken angezeigt werden.
Die Option, die Sie anbieten, habe ich versucht, ..... aber es zeigt Informationen über 2 und 3 und so weiter ... weil der zweite Balken ist nicht gleich der erste und der dritte ist nicht gleich der zweite, usw.
Ich muss die Informationen einmal in der ersten Zeile ausdrucken. Und dieDruckfunktion sollte "ruhen" , bis der nächste Auftrag durch den STOP geschlossen wird.
Versuchen Sie, eine Flagge zu verwenden.
wie
bool flag=false;
......
if (x1<0)&&(flag==false){Drucken();flag=true;}
Dann wird der Ausdruck EINMAL gedruckt.
Und nachdem der Stopp ausgelöst wurde, setzen Sie das Flag auf false zurück und der Druck wird erneut ausgeführt....