MQL5 计算前 15 根蜡烛或 15 分钟的随机值

MQL5 calculate the Stochastic value for previous 15 candle or 15 minutes

我正在尝试访问 MQL5 中图表的先前值或随机指标。但我只知道如何计算电流。

我想做的是:

int stochastic_output = iStochastic(_Symbol,PERIOD_M1,5,3,3,MODE_SMA,STO_LOWHIGH);  

但我不知道如何获得前 15 根蜡烛或前 3 分钟的值。请帮助我如何获得它。

//--- 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]);
}

有一种简单的方法可以做到这一点。

您需要使用 CopyBuffer.
复制前 15 根蜡烛的每分钟数据 参见示例:

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

希望对您有所帮助。