Aiuto per la codifica - pagina 333

 

Solo un'osservazione:

Codice come questo:

DayLow = iff(dayofmonth != dayofmonth[1], low, min(low, nz(DayLow[1]))

Significa: DayLow è un minimo di un giorno corrente o di un giorno precedente più basso (lo stesso per i massimi). Ora, sembra innocuo quando viene descritto, ma se pensate a ciò che significa "minimo del giorno precedente", capirete presto che sta prendendo in considerazione tutte le barre del grafico. Questo è lo stesso errore che hanno avuto alcuni indicatori di step, che Mark Jurik ha fatto nel suo calcolo di uno stocastico (l'ho poi chiamato "stocastico di lunghezza infinita") e che hanno alcuni altri indicatori ... e porta a due cose: deformazione dei dati calcolati (i minimi e i massimi sono sempre solo più bassi o solo più alti, mai il contrario) e infine riverniciatura (quando si cambia time frame o simbolo, alcune barre che prima erano le più vecchie vengono perse, e questo può influenzare il risultato finale)

 

Ho fatto un tentativo. Non ho molto tempo in questo momento, quindi sentitevi liberi di correggerlo.

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

//| Magarto |

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DimGray

double all4[];

double ma[];

double maslopeB[];

double candleOver[];

double bothElder[];

int init()

{

IndicatorBuffers(5);

SetIndexBuffer(0,all4);

SetIndexBuffer(1,ma);

SetIndexBuffer(2,maslopeB);

SetIndexBuffer(3,candleOver);

SetIndexBuffer(4,bothElder);

IndicatorShortName("Magarto");

return(0);

}

int deinit()

{

return(0);

}

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

//| |

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

int start()

{

int counted_bars = IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

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

for(i=limit; i>=0; i--)

{

ma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

double maslope = ma - ma;

if(maslope < 0) maslopeB = -1;

else if(maslope > 0) maslopeB = 1;

else maslopeB = 0;

if(((Open + Close + High + Low) / 4) > ma) candleOver = 1; else candleOver = -1;

double xMA = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,i);

double DayLow = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayLow = iLow(NULL,PERIOD_D1,i);

else DayLow = MathMin(iLow(NULL,PERIOD_D1,i),iLow(NULL,PERIOD_D1,i+1));

double bearpower = DayLow - xMA;

double DayHigh = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayHigh = iHigh(NULL,PERIOD_D1,i);

else DayHigh = MathMax(iHigh(NULL,PERIOD_D1,i),iHigh(NULL,PERIOD_D1,i+1));

double bullpower = DayHigh - xMA;

if (bearpower > 0 && bullpower > 0) bothElder = 1;

else if(bearpower < 0 && bullpower < 0) bothElder = -1;

else bothElder = 0;

all4 = maslopeB + candleOver + bothElder;

}

return(0);

}

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

//| |

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

 

Ciao, volevo solo chiedere una cosa che è nella mia mente da molto tempo sugli indicatori multi time frame.

Guarda l'immagine: Questo è un grafico a barre di range 6 pip di dow jones con indicatore blau ergodic, ho evidenziato il momento di quel segnale di vendita. Si verifica alla fine di quella candela. Questa candela si apre a 14,43 e si chiude a 14,57.

Ho tracciato l'indicatore nel grafico range bars 2 pip, con le stesse impostazioni, puntandolo sul grafico range bars 6 pip.

Mostra l'inizio del segnale di vendita quando la candela del grafico a 6 pip non è ancora chiusa. So che questo è il comportamento NORMALE dell'indicatore mtf, non potrebbe essere altrimenti.

Il mio obiettivo è solo quello di creare altri 2 colori, rosa chiaro per i segnali di vendita e verde chiaro per i segnali di acquisto quando la candela tf superiore non è ancora chiusa.

Quindi dovrebbe essere così:

La mia domanda è: è possibile farlo? Come dovrei approcciare la cosa?

grazie

File:
my.jpg  114 kb
2_pip.jpg  102 kb
6_pip.jpg  87 kb
 
thefxpros:
Ciao, volevo solo chiedere una cosa che è nella mia mente da molto tempo sugli indicatori multi time frame.

Guarda l'immagine: Questo è un grafico a barre range 6 pip di dow jones con indicatore blau ergodic, ho evidenziato il momento di quel segnale di vendita. Si verifica alla fine di quella candela. Questa candela si apre a 14,43 e si chiude a 14,57.

Ho tracciato l'indicatore nel grafico range bars 2 pip, con le stesse impostazioni, puntandolo sul grafico range bars 6 pip.

Mostra l'inizio del segnale di vendita quando la candela del grafico a 6 pip non è ancora chiusa. So che questo è il comportamento NORMALE dell'indicatore mtf, non potrebbe essere altrimenti.

Il mio obiettivo è solo quello di creare altri 2 colori, rosa chiaro per i segnali di vendita e verde chiaro per i segnali di acquisto quando la candela tf superiore non è ancora chiusa.

Quindi dovrebbe essere così:

La mia domanda è: è possibile farlo? Come dovrei approcciare la cosa?

grazie

Si può fare - basta aggiungere 2 buffer in più per la barra corrente

 
assassin:
Mi è stato inviato il primo link per questo

se siete andati avanti nella funzione con il cursore, vedrete che cos'è

come questo

mladen:
Solo un'osservazione:

Codice come questo :

DayLow = iff(dayofmonth != dayofmonth[1], low, min(low, nz(DayLow[1]))

Significa: DayLow è un minimo di un giorno corrente o di un minimo del giorno precedente (lo stesso per i massimi). Ora, sembra innocuo quando viene descritto, ma se pensate a cosa significa "minimo del giorno precedente", capirete presto che sta prendendo in considerazione tutte le barre del grafico. Questo è lo stesso errore che hanno avuto alcuni indicatori di step, che Mark Jurik ha fatto nel suo calcolo di uno stocastico (l'ho poi chiamato uno "stocastico di lunghezza infinita") e che hanno alcuni altri indicatori ... e porta a due cose: deformazione dei dati calcolati (i minimi e i massimi sono sempre solo più bassi o solo più alti, mai il contrario) e infine riverniciatura (quando si cambia time frame o simbolo, alcune barre che erano le più vecchie prima vengono perse, e questo può influenzare il risultato finale)
airquest:
Ho fatto una prova. Non ho molto tempo al momento, quindi sentitevi liberi di correggerlo.

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

//| Magarto |

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DimGray

double all4[];

double ma[];

double maslopeB[];

double candleOver[];

double bothElder[];

int init()

{

IndicatorBuffers(5);

SetIndexBuffer(0,all4);

SetIndexBuffer(1,ma);

SetIndexBuffer(2,maslopeB);

SetIndexBuffer(3,candleOver);

SetIndexBuffer(4,bothElder);

IndicatorShortName("Magarto");

return(0);

}

int deinit()

{

return(0);

}

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

//| |

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

int start()

{

int counted_bars = IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

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

for(i=limit; i>=0; i--)

{

ma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

double maslope = ma - ma;

if(maslope < 0) maslopeB = -1;

else if(maslope > 0) maslopeB = 1;

else maslopeB = 0;

if(((Open + Close + High + Low) / 4) > ma) candleOver = 1; else candleOver = -1;

double xMA = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,i);

double DayLow = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayLow = iLow(NULL,PERIOD_D1,i);

else DayLow = MathMin(iLow(NULL,PERIOD_D1,i),iLow(NULL,PERIOD_D1,i+1));

double bearpower = DayLow - xMA;

double DayHigh = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayHigh = iHigh(NULL,PERIOD_D1,i);

else DayHigh = MathMax(iHigh(NULL,PERIOD_D1,i),iHigh(NULL,PERIOD_D1,i+1));

double bullpower = DayHigh - xMA;

if (bearpower > 0 && bullpower > 0) bothElder = 1;

else if(bearpower < 0 && bullpower < 0) bothElder = -1;

else bothElder = 0;

all4 = maslopeB + candleOver + bothElder;

}

return(0);

}

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

//| |

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

Buongiorno a tutti

In primo luogo voglio scusarmi, per non essere attento al loro lavoro, mia è una richiesta e non sono stato a guardare le vostre domande

Magarto è un utente spagnolo come hai detto mladen

La piattaforma di lavoro utilizzando e avete visto

Sto cercando di tradurre la sua strategia per MQL4

Ma il mio livello di programmazione è troppo elementare

Voglio ringraziare questo sviluppo molto

Posso chiedere, per favore, se è possibile includere i punti quando l'indicatore raggiunge le estremità

Visualizzare qualcosa di simile

Ancora una volta, molte grazie.

Un abbraccio a tutti fuerte

Hermo

 
Hermo:
Buongiorno a tutti

Prima di tutto voglio scusarmi, per non essere attento al loro lavoro, mia è una richiesta e non sono stato a guardare le vostre domande

Magarto è un utente spagnolo come hai detto mladen

La piattaforma di lavoro utilizzando e hai visto

Sto cercando di tradurre la sua strategia per MQL4

Ma il mio livello di programmazione è troppo elementare

Voglio ringraziare questo sviluppo molto

Posso chiedere, per favore, se è possibile includere i punti quando l'indicatore raggiunge le estremità

Visualizzare qualcosa di simile

Ancora una volta, molte grazie.

Un abbraccio a tutti fuerte

Hermo

Ecco, ho corretto alcune cose. Il codice sembra lo stesso dell'originale, ma su timeframe diversi dal giornaliero, i valori dei risultati sembrano diversi da quelli di tradingview. Non sono sicuro se questo è dovuto alle differenze tra tradingview e MT4 o ad un errore. Dato che usa i massimi e i minimi delle candele, direi che è dovuto alle differenze, perché le candele sono difficilmente uguali da una piattaforma all'altra. Comunque, non credo di poter fare di meglio.

File:
magarto.mq4  4 kb
 
airquest:
Ecco, ho corretto alcune cose. Il codice sembra lo stesso dell'originale, ma su timeframe diversi dal giornaliero, i valori dei risultati sembrano diversi da quelli di tradingview. Non sono sicuro se questo è dovuto alle differenze tra tradingview e MT4 o ad un errore. Dato che usa i massimi e i minimi delle candele, direi che è dovuto alle differenze, perché le candele sono difficilmente uguali da una piattaforma all'altra. Comunque, non credo di poter fare di meglio.

buongiorno

Grazie mille per il vostro lavoro e la vostra dedizione

L'indicatore funziona perfettamente ora

Ancora una volta, grazie mille

ottimo lavoro

Con il tuo permesso, ti chiederò di includere un avvertimento nella sezione corrispondente.

Cordiali saluti.

Hermo.

 

per favore aiutatemi......

spikebars_v3.ex4spikebars_v3.mq4Ciao a tutti, spero che qualcuno possa aiutarmi a impostare il mio expert advisor mt4.

con un indicatore spike bar che misura la dimensione del corpo della candela.

Vorrei che l'ea aprisse una posizione di acquisto o di vendita in base alla dimensione del corpo della candela.

es; comprare quando= appare la candela toro con la dimensione di 30 pips (da regolare).

con stoploss e take profit regolabili e dimensione della posizione regolabile.

vendere quando= la candela dell'orso appare con la dimensione di ex.30 pips (da regolare)

con stoploss e take profit regolabili e dimensione della posizione regolabile.

Così sono in grado di regolare il commercio secondo l'analisi corrente e lasciare che il commercio ea per me.

Spero che chiunque sia gentile possa assistermi, perché sono un principiante.

Grazie mille!

File:
 

Ciao a tutti, spero che qualcuno possa aiutarmi a impostare il mio expert advisor di mt4.

con un indicatore spike bar che misura la dimensione del corpo della candela.

Vorrei che l'ea aprisse una posizione di acquisto o di vendita in base alla dimensione del corpo della candela.

es; comprare quando= appare la candela toro con la dimensione di 30 pips (da regolare).

con stoploss e take profit regolabili e dimensione della posizione regolabile.

vendere quando= la candela dell'orso appare con la dimensione di ex.30 pips (da regolare)

con stoploss e take profit regolabili e dimensione della posizione regolabile.

Così sono in grado di regolare il commercio secondo l'analisi corrente e lasciare che il commercio ea per me.

Spero che chiunque sia gentile possa assistermi, perché sono un principiante.

Grazie mille!

 
faremie:
Ciao a tutti, spero che qualcuno possa aiutarmi a impostare il mio expert advisor mt4.non sono bravo in informatica.ma vorrei fare ed expert advisor

con un indicatore spike bar che misura la dimensione del corpo della candela.

Vorrei che l'ea aprisse una posizione di acquisto o di vendita in base alla dimensione del corpo della candela.

es; comprare quando= appare la candela toro con la dimensione di 30 pips (da regolare).

con stoploss e take profit regolabili e dimensione della posizione regolabile.

vendere quando= la candela dell'orso appare con la dimensione di ex.30 pips (da regolare)

con stoploss e take profit regolabili e dimensione della posizione regolabile.

Così sono in grado di regolare il commercio secondo l'analisi corrente e lasciare che il commercio ea per me.

Spero che chiunque sia gentile possa assistermi, perché sono un principiante.

Grazie mille!

faremie

Sembra che l'indicatore di cui parli non sia allegato. Ti dispiacerebbe allegarlo?

Motivazione: