Funzione ICustom - pagina 8

 
 

dai un'occhiata alla funzione iCustom nell'aiuto MQL, fa esattamente ciò che desideri

 

Questo è tutto!

Grazie!

 

iCustom

Ciao a tutti,

A volte il funzionamento di un mio indicatore deve essere leggermente diverso se l'indicatore è stato eseguito come risultato di una chiamata a iCustom rispetto a come l'indicatore verrebbe normalmente eseguito se fosse collegato a un grafico.

Esiste una semplice funzione o un metodo all'interno di MQL che si può utilizzare all'interno di un indicatore per determinare se l'indicatore è stato eseguito esplicitamente perché era collegato a un grafico o se l'indicatore è stato eseguito come risultato di una chiamata a iCustom?

Come espediente ho incluso un parametro booleano ai miei indicatori chiamato 'Custom' con un valore predefinito di false. Se faccio una chiamata a iCustom per eseguire l'indicatore, allora imposto questo parametro a true. In questo modo posso dire all'interno del mio indicatore se l'indicatore viene eseguito come risultato di una chiamata a iCustom.

Sicuramente ci deve essere qualche funzione come ad esempio IsCustom() che restituisce true se l'indicatore è stato eseguito tramite iCustom o false altrimenti.

Qualcuno ha un modo semplice ed elegante per determinare se un indicatore è stato eseguito come risultato di una chiamata tramite iCustom?

Saluti,

Laurence.

 

grazie a tutti per il vostro aiuto!

aj

 

domanda icustom

Ho cercato di fare un indicatore che chiama solo un altro indicatore tramite icustom. Ho fatto questa linea di codice

double COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

Ho provato a mettere la linea in diversi punti del codice e ho giocato con il nome del doppio, ho letto e riletto molti tutorial. Penso che forse devo mettere qualcosa all'inizio come il numero di buffer? Forse non dovrebbe essere un doppio?

Così com'è, ho degli errori quando compilo;

'init' - attesa virgola o punto e virgola

'init' - espressione sull'ambito globale non consentita

qualcuno può per favore aiutarmi a capire questo con qualsiasi indicatore personalizzato? perché sento che i tutorial che ho letto (e credo di averli tutti) mi hanno dato la linea di codice per icustom ma non funziona semplicemente avendo la linea da sola, so che deve essere cambiato per ogni indicatore ma ci sono alcune cose che mancano dalla spiegazione.

 

Ho fatto un grande tentativo con questo Im sono abbastanza orgoglioso di me stesso! Ho preso del codice da Codersguru, l'ho cambiato per un indicatore. lol sembra buono non ha errori durante la compilazione (prima volta mai!!!!!) ma ... fa sì che metatrader "non risponda" quando lo si aggiunge a un grafico.

Ho cambiato tutti i nomi dei buffer degli indicatori (da val1, val2, val3, val4. a value1, value2...etc) perché ho pensato che stessero interferendo l'uno con l'altro dato che ho guardato meglio il codice che aveva fatto Codersguru (ha fatto un codice per chiamare supertrend con icustom) ha cambiato i nomi dei buffer così ho pensato che fosse quello, ma no, ancora non risponde.

//+------------------------------------------------------------------+

//| COG call.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#proprietà indicator_separate_window

#proprietà indicator_buffers 4

#proprietà indicator_color1 Lime

#proprietà indicator_color2 Red

#proprietà indicator_color3 CLR_NONE

#proprietà indicator_color4 CLR_NONE

//---- buffer

doppio valore1[];

doppio valore2[]

doppio valore3[]

doppio valore4[];

//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'indicatore personalizzata |

//+------------------------------------------------------------------+

int init()

{

//---- indicatori

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime);

SetIndexBuffer(0,value1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red);

SetIndexBuffer(1,value2);

SetIndexStyle(2,DRAW_NONE);

SetIndexBuffer(2,value3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,value4);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Funzione personalizzata di deinizializzazione dell'indicatore |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Funzione di iterazione dell'indicatore personalizzato |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//---- controllare eventuali errori

if (counted_bars<0) return(-1);

//---- l'ultima barra contata sarà ricontata

se (counted_bars>0) counted_bars--;

int pos=Bars-counted_bars;

mentre(pos>=0)

{

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

}

return(0);

}

//+------------------------------------------------------------------+

 

questo è il thread dove ho preso il codice fatto da Codersguru;

https://www.mql5.com/en/forum/173108

ho notato che ho lasciato una parte fuori dal mio codice pos alle estremità e pos--;

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

pos--;

proviamo!

 

LOL LOL LOLLLLLLL hahaha! oh mio dio

Ok, ho fatto progressi, ho metà del mio indicatore sullo schermo (solo la parte rossa dell'indicatore, lol, dov'è la parte verde?), questa è la prima cosa che ho mai fatto funzionare a metà, anche se non ci credo, hahaha!

 

hmm ho aggiunto dei numeri alla fine 0,1,2,3 per esperimento. non so perché? ma ha fatto qualcosa, ora ho una linea rossa piatta e verde!!!!

yay! non è giusto però, forse peggio questo è strano! aiutatemi per favore qualcuno... tutti stanno dormendo zzz zzz zzz tranne me!

Motivazione: