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
o forse è meglio dire che non gliel'ho spiegato bene
anche se il codice non da nessun errore
qualcuno può aiutarmi?
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
o forse è meglio dire che non gliel'ho spiegato bene
anche se il codice non da nessun errore
qualcuno può aiutarmi?
Ultima modifica: