我正在尝试访问 MQL5 中图表的先前值或随机值。但我只知道如何计算电流。
我想做的是:
int stochastic_output = iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);
但我不知道如何获得前 15 根蜡烛或前 3 分钟的值。请帮助我如何获得它。
我正在尝试访问 MQL5 中图表的先前值或随机值。但我只知道如何计算电流。
我想做的是:
int stochastic_output = iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);
但我不知道如何获得前 15 根蜡烛或前 3 分钟的值。请帮助我如何获得它。
有一种简单的方法可以做到这一点。
您需要使用 . 复制前 15 根蜡烛每分钟的数据CopyBuffer
。
请参阅示例:
double K[],D[];
ArraySetAsSeries(K,true);
ArraySetAsSeries(D,true);
int stochastic_output = iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);
CopyBuffer(stochastic_output,0,0,15,K);
CopyBuffer(stochastic_output,1,0,15,D);
Print("K size: ",ArraySize(K));
Print("D size: ",ArraySize(D));
上述输出:
K Size: 15
D Size: 15
希望这会帮助你。
//--- inputs
input int Candles=15;
input int NeededCandle=3;
// --- global variables
int stoch_handle;
int OnInit(){
stoch_handle=iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);
if(stoch_handle==INVALID_HANDLE)
return(INIT_FAILED);
}
void OnTick(){
double main[],signal[];
ArrayResize(main,Candles);
ArraySetAsSeries(main,true);
ArrayResize(signal,Candles);
ArraySetAsSeries(signal,true);
if(CopyBuffer(stoch_handle,MAIN_LINE,0,Candles,main)!=Candles)
return;
if(CopyBuffer(stoch_handle,SIGNAL_LINE,0,Candles,signal)!=Candles)
return;
printf("%i - main=%.2f, signal=%.2f",__LINE__,main[NeededCandle-1],signal[NeededCandle-1]);
}