0

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

我想做的是:

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

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

4

2 回答 2

1

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

您需要使用 . 复制前 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

希望这会帮助你。

于 2018-03-22T07:24:54.743 回答
1
//--- 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]);
}
于 2018-03-21T11:54:14.283 回答