[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 462

 
tol64:


Ich danke Ihnen. Das ist ganz klar. Jeder kann es verstehen, wenn man es so erklärt.))

Eine weitere Frage. Ich habe bei der Suche eine Menge ähnlicher Versionen der Frage gefunden, aber meine Frage wird ein wenig anders sein.))

Diskrepanz in den Diagrammen. Um ein "zuverlässiges" Ergebnis zu erhalten, muss ich die Zeitrahmen ständig neu berechnen. Das heißt, wenn ich sehe, dass es Fehler im Protokoll gibt, gehe ich ins Kursarchiv und berechne alle Zeitrahmen neu. Im Tester führe ich zum Beispiel einen Test mit Kontrollpunkten durch. Alles ist in Ordnung. Dann bilde ich zum Beispiel Bars. Alles ist in Ordnung. Aber wenn wir erneut einen Test mit Kontrollpunkten durchführen, sehe ich wieder eine Diskrepanz zwischen den Diagrammen im Journal. Was ist das? ))) Gibt es etwas gegen diese Geißel?


IMHO, verwenden Sie nur zwei Modelle der Prüfung - entweder "Alle Ticks..." oder "Durch die Eröffnung Preise..." (für diese im Vorstand müssen Sie organisieren Kontrolle für die Bildung eines neuen bar) - das sind "zuverlässige" Schnitte - und nicht stören... :-))) "Kontrollpunkte" - das ist es nicht wert.

Laden Sie einfach den Minutenverlauf für das gewünschte Instrument herunter und legen Sie los... :-)))

 
Roman.:


IMHO, verwenden Sie nur zwei Testmodelle - entweder "Alle Ticks..." oder "Nach Eröffnungskursen..." (dafür müssen Sie im Board die Kontrolle der neuen Barbildung organisieren) - das sind "zuverlässige" Schnitte - und machen Sie sich nichts draus... :-))) "Kontrollpunkte" - das ist es nicht wert.

Laden Sie einfach den Minutenverlauf für das gewünschte Instrument herunter und legen Sie los... :-)))


Mein Link ist kaputt...

Bei meinem Ansatz müssen Sie ewig warten, wenn Sie "Alle Zecken" verwenden). Ich teste eine 10-jährige Geschichte. Im EA werden die Bedingungen und das Trailing auf den gebildeten Bars aufgebaut. Es gibt jedoch einige Bedingungen, die bei jeder Zecke überprüft werden sollten. Wenn zum Beispiel ein Stop-Loss ausgelöst wurde und das Geldmanagementsystem die Losgröße geändert hat, sollten Sie alle ausstehenden Aufträge zurücksetzen, um die Losgröße zu ändern. Oder löschen Sie einfach die schwebenden Aufträge, wenn dies in den Bedingungen vorgesehen ist. Alles muss klar sein, um gültig zu sein.)) Deshalb reichen mir Kontrollpunkte im Prinzip völlig aus, denn ich habe einige Stücke der Geschichte mit allen Zecken verglichen. Ein und dasselbe.

Was kann man also tun, um diese Fehler auszusortieren und zu beseitigen? Weil der Link kaputt ist.))

 
tol64:


Der Link ist defekt...

Wenn Sie bei meinem Ansatz "Alle Zecken" verwenden, müssen Sie ewig warten). Ich teste eine 10-jährige Geschichte. Im EA basieren die Bedingungen und das Trailing auf gebildeten Balken. Es gibt jedoch einige Bedingungen, die bei jeder Zecke überprüft werden sollten. Wenn zum Beispiel ein Stop-Loss ausgelöst wurde und das Geldmanagementsystem die Losgröße geändert hat, sollten Sie alle ausstehenden Aufträge zurücksetzen, um die Losgröße zu ändern. Oder löschen Sie einfach die schwebenden Aufträge, wenn dies in den Bedingungen vorgesehen ist. Alles muss klar sein, um gültig zu sein.)) Deshalb reichen mir Kontrollpunkte im Prinzip völlig aus, denn ich habe einige Stücke der Geschichte mit allen Zecken verglichen. Ein und dasselbe.

Was kann man also tun, um diese Fehler auszusortieren und zu beseitigen? Weil der Link kaputt ist))


Neu heruntergeladen

und hier.

 

Guten Tag meine Herren.

Helfen Sie mir, den Code zu verstehen. Ich verstehe die Logik, aber ich weiß nicht, wie ich sie richtig beschreiben soll. Ich weiß nicht, wie ich es richtig beschreiben soll.

Hier ist ein Teil des Expert Advisors.

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

Bitte beraten Sie mich, wie ich richtig damit umgehe. Mit freundlichen Grüßen Denis.

 
Roman.:


Neu gepostet

und hier.


Ich danke Ihnen. Diese und andere Links sagen nichts über das Wichtigste aus, was ich wissen wollte.

Wenn die Kurse online in das Terminal eingegeben werden, müssen die Zeitrahmen von Zeit zu Zeit neu berechnet werden, damit es nicht zu einer Fehlausrichtung kommt.

Im Offline-Modus gibt es keine derartigen Probleme). Dies ist die erste.

Jetzt die zweite.

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

Wenn ich das tue, geht das Schreiben in die Datei ohne Fehler. Das heißt, in der Datei sieht alles wie vorgesehen aus. Wenn ich es so mache, wie Sie es selbstbewusst behauptet haben:

for(pos = 0; pos < OrdersHistoryTotal()-1; pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

dann wird die Datei nicht korrekt geschrieben. Ich kann sehen, dass es Einzelfälle gibt.))

 
Aufgeschoben.
smartemiy:

Guten Tag, liebe Freunde.

Ich brauche Ihre fachkundige Hilfe!!!

Wie kann man im Expert Advisor festlegen, dass der Handel gestoppt werden soll, wenn der Drawdown des Saldos bereits 20% beträgt, und dass diese Zahl geändert werden kann?

Es tut mir leid, vielleicht wurde es bereits im Forum erklärt, vielleicht habe ich es nicht bemerkt ...

ICH BIN IHNEN IM VORAUS DANKBAR!

Viel Glück beim Handeln !!!!!

 
granit77:
Aufgeschoben.


Zum Beispiel so...

extern int MaxLoss = 90;          // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
      Comment("Необходимо разрешить советнику торговать");
      IsExpertStopped = true;
      return (0);
   }
      
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Советник запустится следующим тиком");
      }
      else 
      {
         Comment("Отжата кнопка \"Разрешить запуск советников\"");
      }
   }
 return (0);
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return (0);
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
      Comment("Не удалось инициализировать советник!");
      return (0);
   }
   
   if (IsExpertFailed)
   {
      Comment("Критическая ошибка! Советник остановлен.");
      return (0);
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                            if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

      // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
              
       
}
   
 
Bitte erinnern Sie mich daran, wie man die Verzögerung einstellt. Ich glaube, man kann das in Millisekunden machen. Ich vergesse immer wieder, wie man es buchstabiert.
 
Und kann jemand ein Skript vorschlagen, mit dem alle Positionen schnell geschlossen werden können? Ich kann es nicht finden. Ich würde gerne den Code sehen.
 
FOReignEXchange:
Und kann jemand ein Skript vorschlagen, mit dem alle Positionen schnell geschlossen werden können? Ich kann es nicht finden. Ich würde gerne den Code sehen.
Eine Suche wird mir fünfzig Rieseneinbringen.
Grund der Beschwerde: