[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 636
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
Gute Leute, Hilfe, ich kann nicht verstehen, TrailingStop funktioniert nicht, wie es sollte, wenn das Geschäft auf dem SELL trall geöffnet ist, funktioniert gut, aber wenn Sie öffnen BUY, dann aus irgendeinem Grund sofort geändert stopper. Wo liegt der Fehler, den ich nicht verstehen kann.... HIER IST DER CODE:
extern int TP = 50;
extern int SL = 50;
extern int Trailing = 15;
int init()
{return(0);}
int deinit()
{return(0);}
int start()
{
//========= Deckungsbeitrag berechnen ======
int i;
double lotsBUY=0;
double lotsSEL=0;
double sumBUY=0;
double sumSEL=0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (Auftragsart()==OP_BUY)
{
lotsBUY=lotsBUY+OrderLots();
sumBUY=sumBUY+OrderLots()*OrderOpenPrice();
}
wenn (Auftragsart()==OP_SELL)
{
lotsSEL=slotsSEL-OrderLots();
sumSEL=sumSEL-OrderLots()*OrderOpenPrice();
}
}
double priceBUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
double priceSEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
//======== Position öffnen =====
double MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);
wenn (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
wenn (OrdersTotal() < 1 && Ask<MA)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+SL*Point,Bid-TP*Point,0,0,0,Red);
//======= Nachlaufender Stopp =======
for(i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL && Trailing!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
}
}
if (OrderType()==OP_BUY && Trailing!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,CLR_NONE)
}
}
}
zurück(0);
}
Es gibt einen Moment, wenn ich priceBUY in OrderOpenPrice() im TrailingStop-Block ändere, funktioniert es, aber ich muss vom Breakeven-Level aus trailen, nicht vom Eröffnungskurs..... Auf VERKAUFEN funktioniert, aber auf kaufen aus irgendeinem Grund nicht.... Ich verstehe nicht, wo der Fehler liegt.....SOS!!!!!!!!
Dies ist kein Fehler - es ist eine Meldung, dass das Mindestguthaben erreicht wurde - d.h. das Konto ist leer - der Lauf wird beendet und ein neuer Lauf mit anderen Eingabeparametern gestartet - siehe Kontrollkästchen und eingestellte Grenzwerte auf der Registerkarte "Tester optimieren":
Guten Tag!!! Mein EA zieht die Aufträge mit diesem Ort zurück.
Mein EA hat vorher gut funktioniert, zumindest bis ich 2-5 Aufträge hatte. Jetzt haben wir so viele Aufträge, wie wir wollen - 20, 50 auf jeder Seite. Kurz gesagt, es wird nicht sauber. Nun, zwei-, drei- oder viermal schon, und dann plötzlich nicht mehr!
Ich frage mich, wie es im Tester aussieht - im Allgemeinen entfernt es mehrere Bestellungen in der Nähe des Preises, aber nicht alle! Welche Abweichungen können wir uns vorstellen, erfinden, erträumen, die es sicher schließen würden?
Wirklich, es war vorher in Ordnung. Früher wurde sie geschlossen, nicht wahr? Was braucht es sonst noch? ?????
Gute Leute, Hilfe, ich kann nicht verstehen, TrailingStop funktioniert nicht, wie es sollte, wenn das Geschäft auf dem SELL trall geöffnet ist, funktioniert gut, aber wenn Sie öffnen BUY, dann aus irgendeinem Grund sofort geändert stopper. Wo liegt der Fehler, den ich nicht verstehen kann.... HIER IST DER CODE:
extern int TP = 100;
extern int SL = 100;
extern int Trailing = 15;
int init()
{return(0);}
int deinit()
{return(0);}
int start()
{
//========= Расчёт уровня безубытка ======
int i;
double lotsBUY=0;
double lotsSEL=0;
double sumBUY=0;
double sumSEL=0;
for (i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lotsBUY=lotsBUY+OrderLots();
sumBUY=sumBUY+OrderLots()*OrderOpenPrice();
}
if (OrderType()==OP_SELL)
{
lotsSEL=lotsSEL-OrderLots();
sumSEL=sumSEL-OrderLots()*OrderOpenPrice();
}
}
double priceBUY=0;
if (lotsBUY!=0) priceBUY=sumBUY/lotsBUY;
double priceSEL=0;
if (lotsSEL!=0) priceSEL=sumSEL/lotsSEL;
//======== Открытие позиции =====
double MA=iMA(NULL,0,14,0,MODE_SMMA,PRICE_CLOSE,0);
if (OrdersTotal() < 1 && Bid>MA)
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
if (OrdersTotal() < 1 && Ask<MA)
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+SL*Point,Bid-TP*Point,0,0,0,Red);
//======= Trailing Stop =======
for(i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL && Trailing!=0)
{
if(priceSEL-Ask>=Trailing*Point && OrderStopLoss()>(Ask+Trailing*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
}
}
if (OrderType()==OP_BUY && Trailing!=0)
{
if(Bid-priceBUY>=Trailing*Point && (Bid-Point*Trailing)>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,CLR_NONE);
}
}
}
return(0);
}
Gute Leute, Hilfe, ich kann nicht verstehen, TrailingStop funktioniert nicht, wie es sollte, wenn das Geschäft auf dem SELL trall geöffnet ist, funktioniert gut, aber wenn Sie öffnen BUY, dann aus irgendeinem Grund sofort geändert stopper. Wo liegt der Fehler, den ich nicht verstehen kann.... HIER IST DER CODE:
Es gibt eine Zeit, wenn ich priceBUY in OrderOpenPrice() im Block TrailingStop ändere, funktioniert alles, aber ich brauche einen Trailing-Stop vom Breakeven-Level, nicht vom Eröffnungskurs..... Auf VERKAUFEN funktioniert, aber auf kaufen aus irgendeinem Grund nicht.... Ich verstehe nicht, wo der Fehler liegt.....SOS!!!!!!!!
Guten Tag!!! Mein EA zieht die Aufträge mit diesem Ort zurück.
Mein EA scheint vorher gut funktioniert zu haben, zumindest bis ich 2-5 Aufträge hatte. Aber jetzt habe ich so viele Aufträge, wie ich will - 20, 50 auf jeder Seite. Kurz gesagt, es wird nicht sauber. Nun, zwei-, drei- oder viermal schon, und dann plötzlich nicht mehr!
Ich frage mich, wie es in der Testversion aussieht - es werden mehrere Bestellungen in der Nähe des Preises entfernt, aber nicht alle! Welche Art von Abweichungen können wir uns ausdenken, damit wir sie unbedingt schließen können?
Wirklich, vorher war alles in Ordnung? Früher wurde sie geschlossen, nicht wahr? Was braucht er sonst noch? ?????
Äh, nun, das wird nicht funktionieren.
Solange die Order nicht geschlossen ist, ist ihr OrderClosePrice gleich 0, und an dieser Stelle müssen Sie den tatsächlichen Preis ersetzen, zu dem Sie die Order schließen, d.h. Ask im Falle einer SELL-Order und Bid für BUY.
Nun, so funktioniert das nicht.
Bis die Order geschlossen wird, ist ihr OrderClosePrice gleich 0, und an dieser Stelle müssen Sie den tatsächlichen Preis angeben, zu dem Sie die Order schließen, d.h. Ask im Falle einer SELL-Order und Bid für BUY.
Nein,OrderClosePrice() für eine nicht geschlossene Order ist nicht gleich Null - prüfen.OrderCloseTime() - ja