[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 619
die Daten vor der Eröffnung zu aktualisieren, den Preis zu normalisieren
Vinin:
Ich habe gleich geschrieben, dass dieser Verschluss nicht zu empfehlen ist. Es wird eine undokumentierte Funktion verwendet. Aber jede offene Position hat eine Schlusszeit von Null, und der Schlusskurs ist gleich dem aktuellen Schlusskurs.
artmedia70: Achten Sie genau auf die Preise, die Sie bei der Eröffnung einer Position festlegen. Es muss doch etwas geben... Wird Ask mit Bid verwechselt?
Hat jemand eine einfache Trailing-Stop verschieben eine ausstehende Bestellung hinter dem Preis anstelle der Stop-Level gemacht? Ist es möglich, dies zu tun? Ich habe es immer wieder versucht, aber alles, was ich bekam, war, dass der schwebende Auftrag sich hinter dem Preis hin und her bewegt wie ein kranker Mann...
Ist es möglich, die einfache Nachlauffunktion so zu überarbeiten, dass sie sich auf Aufträge statt auf Stopps bezieht? Zum Beispiel dieses hier:
//+----------------------------------------------------------------------------+//| Сопровождение позиции простым тралом |//| Параметры: |//| sy - наименование инструмента ("" - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
double p, pp;
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
pp=MarketInfo(sy, MODE_BID);
if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
}
}
}
if (OrderType()==OP_SELL) {
pp=MarketInfo(sy, MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
}
}
}
}
}
}
}
}
Print() rundet auf 4 Ziffern auf, um den Typ double korrekt auf der Konsole auszugeben(deriOpen() 5 Dezimalstellen, in diesem Fall), sollten Sie die Funktion DoubleToStr() verwenden
stringDoubleToStr( double value, int digits) Konvertiert einen numerischen Wert in eine Textzeichenfolge, die eine Zeichendarstellung einer Zahl im angegebenen Präzisionsformat enthält.
Parameter:
value- Величина с плавающей точкой.
digits- Формат точности, число цифр после десятичной точки (громное спасибо.
artmedia70: Hat jemand einen einfachen Trailing-Stop gemacht, der eine Pending-Order hinter den Preis statt hinter das Stop-Level verschiebt? Ist es möglich, dies zu tun? Ich habe es immer wieder versucht, aber das Einzige, was ich bekam, war, dass sich der schwebende Auftrag hinter dem Preis hin und her bewegt wie ein kranker Mensch...
Ist es möglich, die einfache Nachlauffunktion so zu überarbeiten, dass sie sich auf Aufträge statt auf Stopps bezieht? Zum Beispiel dieses hier:
for (i =0;i<OrdersTotal();i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
{
if (MathAbs(funk-OrderOpenPrice())>Point)
{
if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
}
if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
}
}
}
}
etwa so, wobei der Auftrag nach dem berechneten Funkwert durchsucht wird
Was können Sie dagegen tun?
die Daten vor der Eröffnung zu aktualisieren, den Preis zu normalisieren
Ich habe gleich geschrieben, dass dieser Verschluss nicht zu empfehlen ist. Es wird eine undokumentierte Funktion verwendet. Aber jede offene Position hat eine Schlusszeit von Null, und der Schlusskurs ist gleich dem aktuellen Schlusskurs.
nach all diesen Erfahrungen ist das schon klar)
Was kann man dagegen tun?
Achten Sie genau auf die Preise, die Sie bei der Eröffnung einer Position festlegen. Es muss doch etwas geben... Wird Ask mit Bid verwechselt?
Ja, das ist sie. Ich habe.
es ist. Ich danke Ihnen.
Ich habe es immer wieder versucht, aber alles, was ich bekam, war, dass der schwebende Auftrag sich hinter dem Preis hin und her bewegt wie ein kranker Mann...
Ist es möglich, die einfache Nachlauffunktion so zu überarbeiten, dass sie sich auf Aufträge statt auf Stopps bezieht? Zum Beispiel dieses hier:
Print() rundet auf 4 Ziffern auf, um den Typ double korrekt auf der Konsole auszugeben(der iOpen() 5 Dezimalstellen, in diesem Fall), sollten Sie die Funktion DoubleToStr() verwenden
string DoubleToStr( double value, int digits)
Konvertiert einen numerischen Wert in eine Textzeichenfolge, die eine Zeichendarstellung einer Zahl im angegebenen Präzisionsformat enthält.
Parameter:
value - Величина с плавающей точкой.
digits - Формат точности, число цифр после десятичной точки (громное спасибо.
Herzlichen Dank.
Schauen Sie sich diesen EA an, ich habe ihn dort implementiert
http://www.rogersignals.com/ru/experts.php?a=Support_Resistance
Hat jemand einen einfachen Trailing-Stop gemacht, der eine Pending-Order hinter den Preis statt hinter das Stop-Level verschiebt? Ist es möglich, dies zu tun?
Ich habe es immer wieder versucht, aber das Einzige, was ich bekam, war, dass sich der schwebende Auftrag hinter dem Preis hin und her bewegt wie ein kranker Mensch...
Ist es möglich, die einfache Nachlauffunktion so zu überarbeiten, dass sie sich auf Aufträge statt auf Stopps bezieht? Zum Beispiel dieses hier:
Alles ist zu kompliziert :)))
Übergeben Sie in der Methode als Parameter die verzögerte Medge und den gewünschten Trall.Hier ist mein Code
Es ist ein bisschen zu kompliziert für dich :))
Übergeben Sie der Methode als Parameter ein verzögertes medjw, und das gewünschte trall.Hier ist mein Code