Come codificare? - pagina 282

 
gilben:
Sto cercando una soluzione per applicare gli algoritmi degli indicatori su array di prezzi.

in MQL4 alcuni indicatori hanno questa funzione, come: iCCIOnArray, iBandsOnArray...

Ma indicatori come ADX non hanno questa funzione.

Qualcuno ha idea di come posso applicare il calcolo degli indicatori su un array predefinito (non dal server delle quotazioni)?

[lang=pl]Se sai come viene calcolato un dato indicatore puoi fare tutto:)

Per favore, spiega più precisamente di cosa hai bisogno

Grazie,

Grzesiek[/lang]

 

...

ADX usa quello che si chiamaatrue range(Max(High,PreviousClose)-Min(Low,PreviousClose) e questa è la base del calcolo di ADX

A causa dei valori High, Low e Close richiesti non può essere applicato ad un array, In generale, se si vede che c'è un prezzo richiesto, allora l'indicatore dovrebbe essere applicabile ad un array. Se non c'è un parametro di prezzo, allora quasi sicuramente non può essere applicato ad una matrice (supponendo che l'indicatore in primo luogo stia operando sui prezzi)

 
g.pociejewski:
[lang=pl]Se sai come viene calcolato un dato indicatore puoi fare tutto:)

Per favore, spiegate più precisamente di cosa avete bisogno

Grazie,

Grzesiek[/lang]

Grazie Grzesiek.

Stavo cercando una buona soluzione. alla fine, la risoluzione migliore è quella di incorporare il codice indi nel codice esperto.

Comunque, a meno che qualcuno non mi mostri un altro modo, lo applicherò in questo modo.

 

Hai il file sorgente? Il file *.ex4 è compilato, quindi non hai accesso al codice sorgente.

Saluti

 

richiesta

mladen:
stella821

Prova questo

________________________

Alcune spiegazioni: Non ho usato quelli che hai postato ma ho fatto questi (l'indicatore allegato nel tuo post ha il mio nome, ma quella versione non è fatta da me, ma questo non è l'unico motivo per cui non ho usato quell'indicatore). ...

saluti

Mladen

ciao Mladen

è possibile adattare l'EA stc per un colore HMA nrp-indi e High-low trend indi?

ho scritto uno pseudo codice (* non so codificare affatto... *):

************************************************************

esterni:

Lotto#

periodo per l'HMA

???.

.....................

ripetere:

ottenere il colore del punto zigzag (chiusura della barra);

ottenere il colore del trend HMA (chiusura della barra);

----------------------------------------------------------------

// aprire vendere

se l'ultimo zigzag-dot = blu && HMA trend = rosso -> aprire ticket SELL (solo una volta per colore HMA trend)

se non è possibile aprire la vendita-> riprova 3 volte

se non c'è successo avviso & email: impossibile aprire la vendita per simbolo, TF, tempo;

altrimenti

// aprire acquisto

se ultimo punto zigzag = rosso && HMA trend = blu -> aprire ticket BUY (solo una volta per colore trend HMA)

se non è possibile aprire buy-> riprova 3 volte

se nessun successo avviso & email: impossibile aprire buy per simbolo,TF, tempo;

-------------------------------------------------------------------

se il trend HMA ( rosso ) cambia in blu -> chiudere vendere, aspettare 10 sec;

se il trend HMA (blu) cambia in rosso -> chiudi acquisto, aspetta 10 sec;

-------------------------------------------------------------------

chiudere tutte le operazioni il venerdì alle 12:00h AM (GMT)...

****************************************************************

so che ci saranno delle perdite ma non mi preoccupa...

non voglio alcun SL ...

saluti

Cado

hma_color_nrp.ex4high_-_low_trend.mq4

 

ATR + MA & Larghezza di banda + MA

[lang=it]Ciao, ho bisogno di un indicatore personalizzato che, in una finestra separata, scriva l'atr e la media mobile e calcoli la stessa cosa per la larghezza di banda. Ho fatto il codice in mql4 e ho usato l'IMAONARRAY per calcolare la MA, ma l'indicatore non funziona.

Questo è uno dei codici di teo.

Grazie

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

for(i=0; i<limit; i++)

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

for(i=0; i<limit; i++)

{

MyArray = AtrBuffer;

}

for(i=0; i<limit; i++)

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

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

[/lang]

 

...

Provalo ora

k3rn3l:
[Ciao, ho bisogno di un indicatore personalizzato che, in una finestra separata, scriva atr e calcoli la media mobile e la stessa cosa per la larghezza di banda. Ho fatto il codice in mql4 e ho usato l'IMAONARRAY per calcolare la MA, ma l'indicatore non funziona.

Questo è uno dei codici di teo...

Grazie

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

for(i=0; i<limit; i++)

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

for(i=0; i<limit; i++)

{

MyArray = AtrBuffer;

}

for(i=0; i<limit; i++)

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+
[/lang]
File:
atr__ma.mq4  2 kb
 

[lang=tr]Ciao Qualcuno può aiutarmi a costruire questa formula nel codice di metatrader

(questo è in formula metastock:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( Tipico(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]

 

...

Interessante

L'unica cosa che dovete regolare per i diversi time frame è la percentuale. L'1% sembra una buona scelta per un grafico a 4 ore, ma ecco un esempio di un grafico a 15 minuti con lo 0,5% invece dell'1% predefinito

PS: Non ho idea di quale sia il nome originale, quindi l'ho chiamato così com'è

saluti

mladen

cedid:
[lang=tr]Ciao Qualcuno può aiutarmi a costruire questa formula nel codice di metatrader

(questo è nella formula di metastock:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( Tipico(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]
File:
levels.gif  22 kb
 
mladen:
Interessante

L'unica cosa che dovete regolare per i diversi time frame è la percentuale. L'1% sembra una buona scelta per un grafico a 4 ore, ma ecco un esempio di un grafico a 15 minuti con lo 0,5% invece dell'1% di default

PS: Non ho idea di quale sia il nome originale, quindi l'ho chiamato così com'è

saluti

mladen

[lang=tr]grazie mladen lo proverò, penso che funzionerà [/lang]

Motivazione: