Discussione sull’articolo "20 Segnali di Trading in MQL5" - pagina 4

 

Grazie all'autore per l'articolo!

Non fare quello che consiglia 1CMaster, è solo una sciocchezza.

Fate qualcos'altro, mettete una linea verticale sul grafico, muovendo la quale gli indicatori mostrano lo stato di questo momento (dove si trova la linea verticale), e non quello attuale?

 

Il codice potrebbe essere utile, ma alcuni indicatori sono ridondanti:

Canale BB e deviazione standard - stessa cosa;

Canali Price, Donchian e Gallagher - stessa cosa;

Comunque, grazie per l'articolo...

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Properties - Documentation on MQL5
 

Errore di formazione del segnale alligatore

.....
      if(CopyBuffer(h_al,0,0,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,0,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,0,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- controllare la condizione e impostare il valore per sig
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- restituire il segnale di scambio
   return(sig);
  }


La copia di questi buffer è necessaria per tenere conto dello spostamento delle linee dell'indicatore, ma in questo caso non lo è.

In secondo luogo, perché copiare i valori di due indicatori se si confronta solo una barra, cioè un valore per ogni buffer (linea) è sufficiente.

Segnale da AO: vengono copiati anche molti dati (che non partecipano all'analisi).

     if(CopyBuffer(h_ao,1,0,20,ao_buffer)<20)
         return(0);
      if(!ArraySetAsSeries(ao_buffer,true))
         return(0); 

All'inizio dell'articolo è stato detto che per eliminare il rantolo non analizzeremo la barra zero ma la prima barra della storia, perché copiare la barra zero?

Non risparmiamo risorse ....

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
olyakish:

Errore di formazione del segnale alligatore


La copia di questi buffer è necessaria per tenere conto dello spostamento delle linee dell'indicatore, ma in questo caso non lo è.

In secondo luogo, perché copiare i valori di due indicatori se si confronta solo una barra, cioè un valore per ogni buffer (linea) è sufficiente.

Segnale da AO: vengono copiati anche molti dati (che non partecipano all'analisi).

E all'inizio dell'articolo è stato detto che per eliminare il rantolo non analizzeremo la barra zero ma la prima barra della storia, perché copiare la barra zero?

Non risparmiamo risorse ....



Prima di tutto, è scritto chiaramente nella guida.

Необходимо помнить, что смещение линии является чисто визуальным для отображения и значения в индикаторном буфере хранятся без смещения. 
При получении значений буфера функцией CopyBuffer() значение смещения никакого эффекта иметь не будет.

In secondo luogo, potrei aver commesso qualche errore nella copia dei dati, ma questo non influisce sul punto principale del compito. Lo scopo dell'articolo è mostrare come indirizzare correttamente gli indicatori e i dati.

 

A proposito, personalmente utilizzo una costruzione di questo tipo: in questo caso i dati della funzione possono essere passati direttamente alla query commerciale.

ENUM_ORDER_TYPE ind_01()
  {
   ENUM_ORDER_TYPE sig=WRONG_VALUE;

   if(IND01_handle==INVALID_HANDLE || IND01_handle==0)
     {
      IND01_handle=iAC(_Symbol,TF_01);
      return(WRONG_VALUE);
     }
   else
     {
      if(CopyBuffer(IND01_handle,1,0,AC_shift+3,IND01_buffer1)<AC_shift+3) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer1,true)) return(WRONG_VALUE);

      if(CopyBuffer(IND01_handle,0,0,AC_shift+1,IND01_buffer2)<AC_shift+1) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer2,true)) return(WRONG_VALUE);
     }

   if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0 && IND01_buffer1[AC_shift+2]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1)sig=ORDER_TYPE_SELL;
   else if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1 && IND01_buffer1[AC_shift+2]==1)sig=ORDER_TYPE_SELL;
   else sig=WRONG_VALUE;

   return(sig);
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
sergey1294:

Prima di tutto, è scritto chiaramente nella guida.

In secondo luogo, potrei aver commesso qualche errore nella copia dei dati, ma questo non influisce sul punto principale del compito. Lo scopo dell'articolo è mostrare come affrontare correttamente gli indicatori e i dati.

Sì, è vero che sono visivi, ma noi ci orientiamo sul valore visivo quando entriamo in un'operazione e non su come si trovano nella memoria del terminale, quindi dobbiamo tenerne conto.

Il modo corretto per l'alligatore è 13 per 8, 8 per 5, 5 per 3 (valori standard).

int TradeSignal_17()
  {
   int sig=0;

   if(h_al==INVALID_HANDLE)
     {
      h_al=iAlligator(Symbol(),Period(),13,0,8,0,5,0,MODE_SMMA,PRICE_MEDIAN);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_al,0,8,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,5,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,3,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- controllare la condizione e impostare il valore per sig
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- restituire il segnale di scambio
   return(sig);
  }
 
olyakish:

Sì, è vero che è visivo, ma noi ci orientiamo sul valore visivo quando inseriamo un affare e non sul modo in cui sono nella memoria del terminale, quindi dobbiamo tenerne conto.

Il modo corretto per l'alligatore è 13 su 8, 8 su 5, 5 su 3 (valori standard).

Non lo dico io, ma non credo che tutti utilizzino l'alligatore con un offset. Quindi non c'è alcun errore in questo caso. Voi avevate bisogno di un offset e l'avete aggiunto, così possono fare quelli dell'acciaio che ne hanno bisogno. Ripeto ancora una volta che lo scopo dell'articolo è quello di mostrare come affrontare correttamente gli indicatori e i loro dati, e quanto e in che quantità procurarseli è una questione di ciascuno.
 
sergey1294:
Non lo dirò, ma non credo che tutti utilizzino l'aligatore offset. Quindi non c'è nessun errore in questo caso. Voi avevate bisogno di un offset, l'avete aggiunto, e lo stesso può fare chi ha bisogno di acciaio. Ripeto ancora una volta che lo scopo dell'articolo è quello di mostrare come affrontare correttamente gli indicatori e i loro dati, e quanti e in che quantità procurarseli è una questione di ciascuno.

Riferimento...

L'indicatore tecnico Alligator è una combinazione di linee di equilibrio (medie mobili) che utilizza la geometria frattale e la dinamica non lineare.

  • La linea blu (Mascella dell'Alligatore) è la Balance Line per il periodo di tempo utilizzato per costruire il grafico (media mobile smussata a 13 periodi, spostata di 8 barre nel futuro);
  • La linea rossa (Denti di alligatore) è la linea di equilibrio per un periodo significativo di un ordine di grandezza inferiore (media mobile lisciata a 8 periodi spostata di 5 barre nel futuro);
  • La linea verde (Labbra di alligatore) è la linea di equilibrio per un periodo di tempo significativo di un altro ordine di grandezza inferiore (media mobile lisciata a 5 periodi spostata di 3 barre nel futuro).


Le parole chiave sono in grassetto.

Il risultato del vostro codice è l'analisi delle medie

Il risultato del codice da me proposto è l'analisi delle linee dell'alligatore.

 
Sono davvero utili per l'apprendimento, grazie.
 
Ottimo per i principianti come me, molto utile. grazie.