Programmazione Metatrader aiuto codice MT4 (1 Viewer)

Simgen

Sempre. Comunque.
buongiorno,
sto provando a scrivere la mia strategia con MT4
ma partendo da zero ho trovato subito un problema
che mi ha bloccato totalmente
in quanto in teoria anche tutto il futuro codice
si fonda sullo stesso principio del confronto tra due valori di un array

in pratica sto calcolando 3 array
il primo è nient'altro che uno stocastico
il secondo ha valore +1 se lo stocastico > 80
e lo mantiene fino a quando stocastico < 20 allora diventa -1 e viceversa
il terzo ha valori +1.5 quando il secondo passa da -1 a +1
e -1.5 quando il secondo passa da +1 a -1
e qui arriva il problema... prima il codice dell'indicatore che sto scrivendo:

// indicatore nella finestra del grafico
//#property indicator_chart_window

// indicatore in una nuova finestra
#property indicator_separate_window
// buffer = array di valori
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_minimum -2
#property indicator_maximum 2
#property indicator_label1 "Onde Stocastico"
#property indicator_label2 "Onde Stocastico_"

// tipologia valori
double IperStoca[], Iper_Stoca[],Stoca[];
//--------------------------------------------------------------------
int init()
{

//--------------------------------------------------------------------
SetIndexBuffer(0,IperStoca);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1);
SetIndexBuffer(1,Iper_Stoca);
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,1);


return(0);
}
//--------------------------------------------------------------------
int start()
{
int i,
Counted_bars;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;

ArrayResize(Stoca,Bars);
ArrayResize(IperStoca,Bars);
ArrayResize(Iper_Stoca,Bars);

while(i>=0)
{

Stoca=iStochastic(_Symbol,PERIOD_H1,24,6,6,MODE_SMMA,STO_LOWHIGH,0,i);
if(Stoca>80)
IperStoca=1;
if(Stoca>=20 && Stoca<=80)
IperStoca=IperStoca[i+1];
if(Stoca<20)
IperStoca=-1;


if (IperStoca>IperStoca[i+1])
Iper_Stoca=1.5;


i--;
}






//--------------------------------------------------------------------
return(0);
}
//--------------------------------------------------------------------




dicevo... il problema sta tutto nell'if in nero
MT4 non capisce che deve confrontare i e i+1 :mmmm:
o forse è meglio dire che non gliel'ho spiegato bene :D
anche se il codice non da nessun errore :(

qualcuno può aiutarmi?
 
Ultima modifica:

Simgen

Sempre. Comunque.
Come fa a conoscere il valore di array [i +1]?
Usa due cicli separati.

leggo ora
ho risolto e capito l'arcano
ho messo i=Bars-Counted_bars-2; e gira
mi confondeva e ancora non capisco perchè se tolgo la parte if (IperStoca>IperStoca[i+1])
Iper_Stoca=1.5;

gira bene e mi plotta correttamente
ma anche sopra c'è IperStoca=IperStoca[i+1];
sapresti spiegarmi perchè nel primo caso non lo conosce e nell'altro lo conosce?

edit

perchè il secondo array è in funzione del primo e quindi è come fosse +2?
con due cicli separati invece avrei +1 e +1
mi sono capito? :D
 
Ultima modifica:

Users who are viewing this thread

Alto