Funzione ICustom - pagina 20

 
Jeeves:
Qualche anima gentile potrebbe porre fine alle mie sofferenze e rifare le cose qui sotto per permettere l'uso dell'indicatore 'Advanced_ADX'. So che richiede l'uso della funzione 'icustom', ma non ho idea di come farlo.

/dati h1

double h1adm = iadm(NULL,PERIOD_H1,2,MODE_CLOSE);

/dati h4

double h4adx = iadx(NULL,PERIOD_H4,2,MODE_CLOSE);

//d1 dati

double d1adx = iadx(NULL,PERIOD_D1,2,MODE_CLOSE);

//definire il colore

colore color_h1, color_h4, color_d1;

//definire la stringa

stringa arrow_h1, arrow_h4, arrow_d1;

/tendenza al rialzo di h1

if (h1adx < Bid ) { color_h1 = ColorUpGood; }

//h1 tendenza al ribasso

se (h1adx > Bid ) { color_h1 = ColorDownGood; }

//h4 tendenza al rialzo

se (h4adx < Bid ) { color_h4 = ColorUpGood; }

//h4 tendenza al ribasso

se (h4adx > Bid ) { color_h4 = ColorDownGood; }

//d1 tendenza al rialzo

se (d1adx < Bid ) { color_d1 = ColorUpGood; }

//d1 tendenza al ribasso

if (d1adx > Bid ) { color_d1 = ColorDownGood; }

usa qualcosa del genere:

double h1adp=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI, 0);

double h1adm=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0);

se (h1adp > h1adm ) { color_h1 = ColorUpGood; }

se (h1adp < h1adm ) { color_h1 = ColorDownGood; }

e fallo per tutti i time frame che vuoi testare (potresti voler sostituire lo 0 alla fine con qualche altro numero - 0 => barra corrente, 1 => prima barra chiusa e così via)

 

Problemi di programmazione 2 domande pls aiuto (file di log)(indicatore personalizzato / standard Ind

Ciao spero di poter trovare qualcuno che possa aiutarmi a risolvere questo problema, sarei molto grato

  • Situazione iniziale:
  • Abbiamo sviluppato un indicatore di filtro multicanale basato su diversi calcoli di indicatori standard di Metatrader.

    Questo indicatore è stato concepito per essere utilizzato nel nostro expert advisor. La sfida è,

    che in ogni tick tutti i calcoli basati su questi indicatori standard causano innumerevoli voci di registro.

    A causa di questo i nostri trade sono ritardati.

    E' possibile evitare le voci di log?

  • Ilnostro tentativo di risolvere il problema:

Abbiamo programmato degli indicatori personalizzati come gli indicatori standard. Abbiamo provato a cambiare il calcolo del corso standard utilizzato dai diversi indicatori. Ma questo non porta al risultato sperato.

Usando il calcolo del corso standard l'indicatore standard porta lo stesso risultato dell'indicatore personalizzato. Ma cambiando il calcolo del percorso

porta a delle differenze rispetto all'indicatore personalizzato e all'indicatore standard corrispondente?

È possibile ottenere indicatori personalizzati che si comportino esattamente come gli indicatori standard (indipendentemente dal calcolo del corso scelto)?

 
spongebozz:
Ciao spero di poter trovare qualcuno che possa aiutarmi a risolvere questo problema, sarei molto grato
  • Situazione iniziale:
  • Abbiamo sviluppato un indicatore di filtro multicanale basato su diversi calcoli di indicatori standard di Metatrader.

    Questo indicatore è stato concepito per essere utilizzato nel nostro expert advisor. La sfida è,

    che in ogni tick tutti i calcoli basati su questi indicatori standard causano innumerevoli voci di registro.

    A causa di questo i nostri trade sono ritardati.

    E' possibile evitare le voci di log?

  • Ilnostro tentativo di risolvere il problema:

Abbiamo programmato degli indicatori personalizzati come gli indicatori standard. Abbiamo provato a cambiare il calcolo del corso standard utilizzato dai diversi indicatori. Ma questo non porta al risultato sperato.

Usando il calcolo del corso standard l'indicatore standard porta lo stesso risultato dell'indicatore personalizzato. Ma cambiando il calcolo della rotta

porta a delle differenze rispetto all'indicatore personalizzato e all'indicatore standard corrispondente?

È possibile ottenere indicatori personalizzati che si comportino esattamente come gli indicatori standard (non importa quale corso di calcolo sia stato scelto)?

Ciao Spongebozz,

Questo è per la prima parte delle tue domande... per quanto riguarda i log troppo grandi e che rallentano il tuo sistema...

I log sono molto probabilmente creati da dichiarazioni PRINT... troppe... sia nei tuoi EA e/o nei tuoi indicatori...

Puoi rimuovere o cancellare le istruzioni PRINT mettendo 2 slash a destra (//) davanti ad ogni istruzione PRINT che vuoi smettere di stampare nel log.

Esempio:

// Print("Questo è un esempio"); Il // cancellerà la linea di codice e non la stamperà nel log...

Se vuoi...TUTTE...le istruzioni PRINT cancellate...puoi fare un find/replace...

Trova: Stampa

Sostituisci: // Stampa

Il tipo di indicatore standard o personalizzato... non dovrebbe importare...

Importa solo se ha molte istruzioni PRINT che devi rimuovere o cancellare...

E più tardi puoi sempre tornare indietro e cancellare le dichiarazioni PRINT che vuoi... e lasciare le altre cancellate o cancellarle completamente.

Spero che questo ti aiuti,

Robert

 

Ciao ragazzi!

Sto facendo un EA per le opzioni binarie e voglio ottenere "segnali" da un indicatore da ricevere nel mio EA. Come probabilmente sapete, le opzioni binarie fanno solo una PUT o una CALL quindi voglio che iCustom ascolti solo il mio indicatore e faccia le put e le call nel mio EA. Ha senso?

Quindi, cosa devo fare?

Nell'indi ho solo bisogno di mettere qualcosa come questo:

// PUT

if (AlignsForAput == true){

PutBuffer[] = 1;

}

// CALL

if (AlignsForAcall == true){

CallBuffer[] = 1;

}

PutBuffer[] = 0;

CallBuffer[] = 0;

Per favore aiutatemi a scrivere un buon esempio su come far funzionare questo. Cosa devo scrivere e dove devo scriverlo?

Grazie!

 

Apprezzerei molto se qualcuno potesse scrivere un semplice esempio di come dovrebbero essere il codice indi e il codice EA! Si prega di vedere sopra la mia domanda.

 
SantaClaus:
Apprezzerei molto se qualcuno potesse scrivere un semplice esempio di come dovrebbero essere il codice indi e il codice EA! Si prega di vedere sopra la mia domanda.

Per gli indicatori controlla questo: https: //www.mql5.com/en/forum/173032 e questo https://www.mql5.com/en/forum/173054

Per gli EAs controlla questo: https: //www.mql5.com/en/forum/173136 e questo: https: //www.mql5.com/en/forum/173171

 

Quindi mi stai dicendo che ci sono buoni esempi su come usare iCustom per lo scopo di cui sopra?

 
SantaClaus:
Quindi mi stai dicendo che ci sono buoni esempi su come usare iCustom per lo scopo di cui sopra?

Sì, è esattamente quello che sto dicendo (hai chiesto "un semplice esempio di come dovrebbero essere il codice indi e il codice EA" - questi thread possono aiutarti)

 
mladen:
Sì, è esattamente quello che sto dicendo (hai chiesto "un semplice esempio di come il codice indi e il codice EA dovrebbero apparire" - questi thread possono aiutarti)

No, nessuno dei link ha spiegato come uso iCustom come vorrei nella mia prima domanda.

 
SantaClaus:
No, nessuno dei link ha spiegato come uso iCustom come vorrei nella mia prima domanda.

Stai postando in un thread che spiega in dettaglio come usare iCostom() (tutto quello che devi fare è andare alla prima pagina di questo thread) e non riesci a trovare come farlo?

Qui c'è una versione breve :

_________________________

iCustom

Calcola l'indicatore personalizzato specificato e restituisce il suo valore.

[TABLE] doppio iCustom(

string symbol, // symbol

int timeframe, // timeframe

string name, // percorso/nome del programma compilato dell'indicatore personalizzato

... // parametri di input dell'indicatore personalizzato (se necessario)

int mode, // indice della linea

int shift// spostamento

);[/TD]

[/TR]

[/TABLE]

Parametri

simbolo

Nome del simbolo sui dati di cui verrà calcolato l'indicatore. NULL significa il simbolo corrente.

timeframe

Timeframe. Può essere uno qualsiasi dei valori dell'enumerazione ENUM_TIMEFRAMES. 0 significa il timeframe del grafico corrente.

nome

Nome del programma compilato dell'indicatore personalizzato, relativo alla directory principale degli indicatori (MQL4/Indicators/). Se l'indicatore si trova in una sottodirectory, per esempio, in MQL4/Indicators/Examples, il suo nome deve essere specificato come"Examples\indicator_name" (il doppio backslash "\" deve essere specificato come separatore invece di uno singolo).

...

Parametri di input dell'indicatore personalizzato, separati da virgole.

I parametri passati e il loro ordine devono corrispondere all'ordine di dichiarazione e al tipo di variabili esterne dell'indicatore personalizzato. Se i valori dei parametri di input non sono specificati, verranno utilizzati i valori predefiniti.

mode

Indice di linea. Può essere da 0 a 7 e deve corrispondere all'indice, specificato nella chiamata della funzione SetIndexBuffer().

shift

Indice del valore preso dal buffer dell'indicatore (spostamento relativo alla barra corrente il dato numero di periodi precedenti).

Valore restituito

Valore numerico dell'indicatore personalizzato specificato. L'indicatore personalizzato deve essere compilato (file *.EX4) e trovarsi nella directory terminal_directory\MQL4\Indicators\.

Esempio:

[TABLE]

[TR]

[TD] double val=iCustom(NULL,0,"SampleInd",13,1,0); [/TABLE]

_________________________

PS: il "Line index. Può essere da 0 a 7" è l'errore che metatrader ha ancora nella sua documentazione (dovrebbe essere "Line index. Può essere da 0 a 511"), ma finché non cambiano ufficialmente la loro documentazione, mi atterrò alla loro definizione della funzione iCustom()

Buona codifica