[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 462

 
tol64:


Grazie. È molto chiaro. Chiunque può capire se lo spieghi così)).

Un'altra domanda. Ho trovato molte versioni simili della domanda nella ricerca, ma la mia domanda sarà un po' diversa)).

Discrepanza nei grafici. Per vedere un risultato "affidabile" devo costantemente ricalcolare i timeframe. Cioè, se vedo che ci sono errori nel log, vado nell'archivio delle quote e ricalcolo tutti i timeframe. Nel tester, per esempio, eseguo un test sui punti di controllo. Tutto è a posto. Poi io, per esempio, formo delle barre. Tutto è a posto. Ma se eseguiamo di nuovo un test utilizzando i punti di controllo, vedrò di nuovo la discrepanza tra i grafici nel diario. Ma che...? ))) C'è qualcosa contro questo flagello?


IMHO, usa solo due modelli di test - o "Tutti i tick..." o "Dai prezzi di apertura..." (per questo nella scheda devi organizzare il controllo per la formazione di una nuova barra) - questi sono tagli "affidabili" - e non preoccuparti... :-))) "Punti di controllo" - non ne vale la pena.

Basta scaricare la cronologia dei minuti per lo strumento che vuoi e andare avanti... :-)))

 
Roman.:


IMHO, usa solo due modelli di test - o "Tutti i tick..." o "Per prezzi di apertura..." (per questo nel gufo devi organizzare il controllo della formazione di nuove barre) - questi sono tagli "affidabili" - e non preoccuparti... :-))) "Punti di controllo" - non ne vale la pena.

Basta scaricare la cronologia dei minuti per lo strumento che vuoi e andare avanti... :-)))


Il mio link è rotto...

Nel mio approccio, se usate "All ticks" dovrete aspettare all'infinito). Sto testando su 10 anni di storia. Nell'EA le condizioni e il trailing sono costruiti sulle barre formate. Ma ci sono alcune condizioni che dovrebbero essere controllate su ogni zecca. Per esempio, se è scattato uno stop loss e il sistema di gestione del denaro ha cambiato la dimensione del lotto, è necessario resettare tutti gli ordini in sospeso per cambiare la dimensione del lotto. O semplicemente cancellare gli ordini pendenti, se questo è richiesto dalle condizioni. Tutto deve essere chiaro per essere valido)). Ecco perché i punti di controllo sono abbastanza sufficienti per me in linea di principio, dato che stavo confrontando alcuni pezzi di storia con tutte le zecche. Uno e lo stesso.

Quindi cosa c'è per aiutare a risolvere ed eliminare questi errori? Perché il link è rotto)).

 
tol64:


Il link è rotto...

Nel mio approccio, se usate "All ticks", dovrete aspettare all'infinito). Sto testando su 10 anni di storia. Nell'EA le condizioni e il trailing sono costruiti su barre formate. Ma ci sono alcune condizioni che dovrebbero essere controllate su ogni zecca. Per esempio, se è scattato uno stop loss e il sistema di gestione del denaro ha cambiato la dimensione del lotto, è necessario resettare tutti gli ordini in sospeso per cambiare la dimensione del lotto. O semplicemente cancellare gli ordini pendenti, se questo è richiesto dalle condizioni. Tutto deve essere chiaro per essere valido)). Ecco perché i punti di controllo sono abbastanza sufficienti per me in linea di principio, dato che stavo confrontando alcuni pezzi di storia con tutte le zecche. Uno e lo stesso.

Quindi cosa c'è per aiutare a risolvere ed eliminare questi errori? Perché il link è rotto))


Scaricato di nuovo

e qui.

 

Buon pomeriggio signori.

Aiutami a capire il codice. Capisco la logica, ma non so come descriverla correttamente. Non so come descriverlo correttamente.

Ecco un pezzo dell'Expert Advisor.

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);

}
}
}
}

Per favore, consigliatemi come gestirlo correttamente. Saluti Denis.

 
Roman.:


Re-posted

e qui.


Grazie. Questi link, e altri ancora, non dicono la cosa più importante che avevo bisogno di sapere.

Quando le quotazioni entrano nel terminale online, i timeframe devono essere ricalcolati di volta in volta in modo che non ci sia un disallineamento.

In modalità offline non ci sono questi problemi). Questo è il primo.

Ora il secondo.

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

Se faccio così, la scrittura nel file va senza errori. Cioè, nel file tutto appare come previsto. Se lo faccio nel modo in cui lei ha affermato con sicurezza:

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

allora il file non viene scritto correttamente. Vedo che ci sono casi individuali)).

 
Rinviato.
smartemiy:

Buon pomeriggio, cari.

Ho bisogno del vostro aiuto esperto!!!

Come specificare nell'Expert Advisor che deve fermare il trading se il drawdown del saldo è già del 20%, e che questa cifra può essere modificata?

Mi dispiace, forse è stato già spiegato sul forum, forse non l'ho notato...

VI SONO GRATO IN ANTICIPO!

Buona fortuna nel trading !!!!!

 
granit77:
Rinviato.


Per esempio, così...

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);
      }
    
              
       
}
   
 
Per favore, ricordami come impostare il ritardo. Credo che si possa fare in millisecondi. Continuo a dimenticare come si scrive.
 
E qualcuno può suggerire uno script che chiuda rapidamente tutte le posizioni. Non riesco a trovarlo. Mi piacerebbe vedere il codice.
 
FOReignEXchange:
E qualcuno può suggerire uno script che chiuda rapidamente tutte le posizioni. Non riesco a trovarlo. Mi piacerebbe vedere il codice.
Una ricerca midirà cinquantamila dollari.
Motivazione: