[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

 
kwadrad:

Was können Sie dagegen tun?

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.

nach all diesen Erfahrungen ist das schon klar)

 
kwadrad:

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 ?
 
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?

Ja, das ist sie. Ich habe.
 
kwadrad:

es ist. Ich danke Ihnen.
Gern geschehen - das ist das erste, was Neulinge verwirrt, ich weiß das...
 
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);
              }
            }
          }
        }
      }
    }
  }
}
 
ToLik_SRGV:

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.
 
Roger:


Schauen Sie sich diesen EA an, ich habe ihn dort implementiert

http://www.rogersignals.com/ru/experts.php?a=Support_Resistance

OK, danke, ich werde es mir ansehen...
 
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:

Alles ist zu kompliziert :)))
Hier ist mein Code

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing)-Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && (Ask+Point*trailing)-Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid-(Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && Bid-(Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
Übergeben Sie in der Methode als Parameter die verzögerte Medge und den gewünschten Trall.
 
      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
 
ToLik_SRGV:

Es ist ein bisschen zu kompliziert für dich :))
Hier ist mein Code

Übergeben Sie der Methode als Parameter ein verzögertes medjw, und das gewünschte trall.

Ich danke Ihnen! Ich glaube, das ist es!