【问题标题】:How to get the highest value of a standard deviation for last 2 hours in MQL4?如何在 MQL4 中获得最近 2 小时的最高标准偏差值?
【发布时间】:2017-07-08 14:44:41
【问题描述】:

我正在尝试开发一个 EA 交易,到目前为止,我可以理解并编写它,它会在新柱打开时下订单。

int BarsCount = 0;

int start()
{   if ( Bars >  BarsCount )
    {    OrderSend( Symbol(), OP_BUY, 0.01, Ask, 2, NULL, NULL );                            
         BarsCount = Bars;
    }
    return( 0 );
}

如何将过去 2 小时内标准差的最大值转换为变量?

例如: 假设 EA 在 30 分钟图表中运行,bar1 的标准差值为 0.003,bar2 为 0.001,bar3 为 0.004,bar4 为 0.001。 那么,过去 4 小时的最高值是 bar3,其值为 0.004,那么如何将该值传递给变量呢?

当这个公式为真时,我正在尝试让 EA 下订单:

 ( ( current_value_of_standard_deviation
   / highest_value_of_standard_deviation_for_last_2_hours
     )
   * 100
   ) > 10

【问题讨论】:

    标签: quantitative-finance algorithmic-trading mql4


    【解决方案1】:

    使用内置工具:

    input  int    MA_period = 27;
           int    BarsCount = 0;
           int    nCells2CMP= ( PERIOD_H1 * 2 / PERIOD_CURRENT ) - 1;
           double Sig2H[100];
    
    void OnInit(){
         ...
    }
    
    void OnTick(){
         if ( Bars >  BarsCount ){
              if (    BarsCount == 0 ){
                      for ( int i = MA_period; i >  0; i-- ){
                            Sig2H[i] = iStdDev( _Symbol,
                                                PERIOD_CURRENT,
                                                0,
                                                MODE_SMA,
                                                PRICE_CLOSE,
                                                i
                                                );
                      }
              }
              for ( int i = MA_period; i > 1; i-- )  Sig2H[i] = Sig2H[i-1];
              Sig2H[1] = iStdDev( _Symbol,           // symbol 
                                  PERIOD_CURRENT,    // timeframe 
                                  MA_period,         // MA averaging period 
                                  0,                 // MA shift 
                                  MODE_SMA,          // MA averaging method 
                                  PRICE_CLOSE,       // applied price 
                                  1                  // shift 
                                  );
         }
         Sig2H[0] = iStdDev( _Symbol,           // symbol 
                             PERIOD_CURRENT,    // timeframe 
                             MA_period,         // MA averaging period 
                             0,                 // MA shift 
                             MODE_SMA,          // MA averaging method 
                             PRICE_CLOSE,       // applied price 
                             0                  // shift 
                             );
         if ( 0.1 < ( Sig2H[0]
                    / Sig2H[ArrayMaximum( Sig2H,
                                          nCells2CMP,
                                          1
                                          )
                            ]
                      )
              ){...}
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 2012-08-16
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 2019-12-11
      相关资源
      最近更新 更多