Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 581

 
Ihor Herasko:

Se vuoi prendere una candela M30 che ha chiuso insieme all'ultima candela H1 chiusa, può essere una candela con indice non solo 1, ma anche 2. Un'altra cosa è che allora non è chiaro perché si prende il prezzo di chiusura di M30, se è lo stesso prezzo di chiusura della candela H1 precedente. Cioè, in questo caso non ha senso chiedere il prezzo di chiusura di un altro TF, perché è lo stesso del prezzo di chiusura del TF corrente.

Esattamente quello che dobbiamo sapere è il prezzo di chiusura di M30 all'interno di H1

Trovato il motivo, il controllo dell'apertura del bar. Grazie.

 

Come nell'indicatore per confrontare, nel ciclo, il prezzo High[i+1] +/-10*Point con frattali inferiori?

se trovato uguale, mettere freccia Buf_o[i+1]= High[i+1] ;.

 

Ciao!

Voglio scrivere un semplice codice di strategia binaria per testarlo con MetaTrader 4 tester. So che il tester integrato non testa completamente le strategie binarie, ma ho solo bisogno di sapere la quota di operazioni redditizie durante il periodo di test. Non sono in grado di impostare il tempo di scadenza di un accordo. Uso l'operatore OrderSend:

OrderSend(Symbol(),OP_BUY,1,Ask,10,0,0, "5",15167,Expiration,clrGreen);

Tutto funziona bene quando si esegue il trading automatico, ma i termini del broker specificano il periodo di scadenza nel commento alla posizione. In questo caso il mio commento è "5". Sono cinque minuti. Tuttavia, il tester, ovviamente, non considera il commento come un'indicazione del periodo di scadenza. Il tester non reagisce affatto ai diversi valori del parametro Expiration. Prima apre i trade seguendo i segnali della strategia e poi chiude tutti i trade aperti nel periodo di test al momento della scadenza del periodo di test. Di conseguenza, il risultato dei test è assolutamente errato.

Come specificare un periodo di scadenza comprensibile per il tester? Sto ancora padroneggiando la "vecchia" versione del codice.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
kirson-7:

Come posso impostare un periodo di scadenza che il tester possa capire?

Chiudi la posizione se il tempo corrente = tempo di apertura più 5 minuti o all'apertura di una nuova barra se il timeframe è M5.
 

Come faccio a rendereHigh[i+1] +/-10*Point non esattamente uguale al prezzo del frattale?

 {
//---
   if(rates_total<2) return(0);

   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      // BufferUP[i+1]=EMPTY_VALUE;
      
      //
      for(int y=i+2;y<=i+100;y++)
        {
         if(low[i+1]==iFractals(Symbol(),0,MODE_HIGH,y))estb=true;
        }
      if(estb)
        {
         BufferUP[i+1]=low[i+1]-distance*Point;//НЕПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      estb=0;
      //==//
      for(int y=i+2;y<=i+100;y++)
        {
         if(high[i+1]==iFractals(Symbol(),0,MODE_LOWER,y))ests=true;
        }
      if(ests)
        {
         BufferDN[i+1]=high[i+1]+distance*Point;//ПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      ests=0;

      //Comment("");
     }
   return(rates_total);
  }
 
bij:

Come faccio a rendereHigh[i+1] +/-10*Point non esattamente uguale al prezzo del frattale?

La differenza di valori è maggiore di 10*Punto, ma dobbiamo considerare se la differenza sarà positiva o negativa.
 
bij:
Chiudi la posizione se il tempo corrente = tempo di apertura della posizione più 5 minuti o all'apertura di una nuova barra, se il timeframe è M5.
E perché il periodo di scadenza standard nella lista dei parametri dell'operatore OrderSend non funziona? Nel mio esempio è segnato come Scadenza.
 
kirson-7:
Perché il periodo di scadenza standard nella lista dei parametri dell'operatore OrderSend non funziona? Nel mio esempio è segnato come Scadenza.
Questo è per gli ordini in sospeso
 
Aiutatemi a scrivere una funzione: chiudere gli ordini da un lotto più grande a uno più piccolo (stringa Symbol, int type, bool hand orders, int Magic)
Cioè selezione del simbolo, tipo, se gli ordini a mano sono presi in considerazione, numero magico.


 
Ciao a tutti: posso prescrivere in una funzione definita dall'utente l'apertura di una posizione(ad esempio comprare sul mercato), e chiamare questa funzione quando ci sono diversi segnali di acquisto? Per esempio, il MACD è stato indirizzato a questa funzione - posizione aperta, il segnale di _Muwings è stato indirizzato a questa funzione - acquisto di nuovo.... ecc. Oppure in ogni caso specifico, quando il segnale viene elaborato, è necessario scrivere OrderSand(Symbol,OP_BAI, ecc.);