Aiuto per la codifica - pagina 100

 
dasssi:
mladen

prima spero che tu non sia più arrabbiato con me...

secondo ho un errore nel tentativo di caricare l'EA

dasssi

Prova a rinominare l'EA (a causa della lettera francese nel nome potrebbe causarti un problema - nessun altro problema può essere la causa di questo dato che è un EA molto semplice)

 

grazie, ora funziona/

non sembra buono sul tester di strategia

 
dasssi:
grazie, ora funziona/ non ha un bell'aspetto sullo strategy tester

È solo un esempio di come un indicatore dovrebbe essere chiamato da un EA quando si tratta di segnali. Lontano dall'essere un EA completo (date un'occhiata ai nuovi EA nella sezione elite e avanzata e confrontate il codice - vedrete cosa intendo). Quindi, era solo un aiuto per After-rage per risolvere il suo problema di codifica

 

Grazie !!! Funziona bene per inserire posizioni. Non so perché il mio EA non ha funzionato ma non importa. Ho provato ad aggiungere del codice per chiudere gli ordini ma non funziona. Strano perché ho preso come codice di struttura per entrare posizioni e ho solo raddoppiato il volume del lotto. Puoi dare un'occhiata?

File:
 
After-rage:
Grazie !!! Funziona bene per inserire posizioni. Non so perché il mio EA non ha funzionato ma non importa. Così ho provato ad aggiungere il codice per chiudere gli ordini ma non funziona. Strano perché ho preso come codice di struttura per entrare posizioni e ho solo raddoppiato il volume del lotto. Puoi dare un'occhiata?

Dopo la rabbia

Un modo per farlo (chiudere un ordine aperto quando il segnale cambia) è nel codice ora

File:
 

Grazie mille! Funziona molto bene. Lavorerò su questo e vedrò perché ho sbagliato.

 

Qualcuno sa se è possibile cambiare l'impostazione di un indicatore sul tempo di esecuzione via codice? per esempio vorrei avere un CCI dove il periodo è uguale all'ATR così quando l'ATR cambia anche il periodo del CCI cambia...come inittare l'indicatore ad ogni nuova barra... Il problema è che non so come re-inittare l'indi via codice...ho provato a chiamare l'init() quando la nuova barra è aperta e il periodo cambia correttamente ma l'indicatore non si aggiorna...il valore dell'ultima barra è corretto ma voglio che l'intero indi si ridisegni con le nuove impostazioni...spero di essere stato chiaro...grazie

 
AtApi:
Qualcuno sa se è possibile cambiare l'impostazione di un indicatore sul tempo di esecuzione via codice? per esempio vorrei avere un CCI dove il periodo è uguale all'ATR così quando cambia l'ATR cambia anche il periodo del CCI...come se si avviasse l'indicatore ad ogni nuova barra... Il problema è che non so come re-inittare l'indi via codice...ho provato a chiamare l'init() quando la nuova barra è aperta e il periodo cambia correttamente ma l'indicatore non si aggiorna...il valore dell'ultima barra è corretto ma voglio che l'intero indi si ridisegni con le nuove impostazioni...spero di essere stato chiaro...grazie

Se volete ridisegnare tutti i valori degli indi, semplicemente impostate il conteggio del ciclo principale all'inizio a Bars-1 e calcolate i valori con le nuove impostazioni

 

Grazie mladen per la tua rapida risposta...

per favore dai un'occhiata a questo esempio:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

 
AtApi:
Grazie mladen per la tua rapida risposta...

si prega di dare un'occhiata a questo esempio:

extern int IndicatorPeriod = 10;

extern int AtrPeriod= 10;

extern bool DynamicPeriod = TRUE;

int init()

{

if (DynamicPeriod)

{

double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);

IndicatorPeriod = atr;

}

}

int start()

{

datetime lastBarOpenTime;

datetime thisBarOpenTime = Time[0];

if (DynamicPeriod)

{

if(thisBarOpenTime != lastBarOpenTime)

{

lastBarOpenTime = thisBarOpenTime;

init();

}

}

int i,counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

// is this what you are talking about?

int limit=MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--) //MAIN LOOP

{

wherever calculation

}

}

AtApi

Se vuoi salvare i valori nel buffer (un valore per tempo esatto per quella barra) allora sì, questo è il modo corretto. Ma se vuoi che tutte le barre siano "ridipinte", allora imposta il linit per essere sempre uguale aBars-1

Motivazione: