【问题标题】:Writing an expert adviser in [ MQL4 ]在 [ MQL4 ] 中编写专家顾问
【发布时间】:2016-03-26 19:13:05
【问题描述】:

因此,如果我想要一个在 MQL4 中的 EA,它采用开盘价,当当前价格低于开盘价 10 点时,它会下一个买单,而当它比开盘价高 10 点时它会下单卖。一次只下一个订单,而且每天都在变化。

Q1:这怎么可能不间断?

Q2:这还能盈利吗?

我知道这对某些人来说很简单,但对我来说却很令人沮丧。

【问题讨论】:

  • Rob,您是否尝试按照以下发布的方向扩展您的 MQL4 代码?
  • 这个 MQL4 项目有什么新消息吗?

标签: mql4 quantitative-finance algorithmic-trading metatrader4 forex


【解决方案1】:

A1:最简单的部分...

如果执行引擎 MetaTrader 终端 4,正在以不间断模式运行。虽然仍有周末可用于服务和维护任务,但 EA 代码本身可以无限长地运行,具有自动重入安全重新启动自我保护 (OnInit(){...} + OnDeinit(){...}) 的全状态。

#property copyright "Copyright © 1987-2016 [MS]"
#property link      "nowhere.no"
#property version   "0.00"
#property strict

extern   int   minDist2XTO         = 10;     // A minimum Distance To XTO
         bool  aGlobalMUTEX_LOCKED = False;  // LOCK "only one order at a time"

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int      OnInit()
  {   // on-launch intialisation tasks go here:
         return( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void     OnDeinit( const int reason )
  {   // pre-exit sanitisation tasks go here:
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void     OnTick()
  {   // MAIN: this is being executed upon each anFxMarketEVENT's arrival

      // GoLONG();

      // GoSHORT();

  }
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double   OnTester()
  {   // back-testing utility calculation functions go here:
         double  retVal = 0.0;
         return( retVal );
  }
//+------------------------------------------------------------------+
void     GoLONG()
  {   // SELF-CONTROLLABLE ( might even get concurrently run in parallel to GoSHORT on dual resources )
      // -------------------------------------------------------------------------------------------------------
         static bool       aNewBarEVENT   = FALSE;
         static int        aLastBAR       = EMPTY,
                           aCurrBAR       = EMPTY;
         static double     GoLONG_LEVEL   = EMPTY;
      // -------------------------------------------------------------------------------------------------------
      // TEST A STATE-SHIFT

         RefreshRates();

                           aCurrBAR = iBars(_Symbol, PERIOD_D1 );
         if (  aLastBAR != aCurrBAR )
         {     aLastBAR  = aCurrBAR;   // .SET
               aNewBarEVENT = TRUE;    // .FLAG
            // ----------------------- // .RESET in-BAR-registers
               GoLONG_LEVEL =  NormalizeDouble( iOpen( _Symbol, PERIOD_D1, 0 )
                                              - minDist2XTO * _Point
                                                );
            // ----------------------
         }
         else
         {     aNewBarEVENT = FALSE;    // !FLAG
         }
         if ( !aGlobalMUTEX_LOCKED
            && Ask <= GoLONG_LEVEL
            )
         {  
         // XTO ...                     // .XTO
            if ( success ) aGlobalMUTEX_LOCK = True;
         }
    }
//+------------------------------------------------------------------+
void     GoSHORT()
  {   // SELF-CONTROLLABLE ( might even get concurrently run in parallel to GoLONG on dual resources )
         ...
         ..
         .
   } 

A2:

这个问题可以定量地解决。您的交易想法可以在真实市场数据上进行测试和验证,从而提供合理数量的观察结果来支持或限制预期的表现。

如果没有来自足够 TimeDOMAIN 跨度市场季节性不规则性的定量数据,该问题就无法得到合理支持的定量答案 (除了只有意见).

这远远超出了 Q/A 的 StackOverflow 格式,但原则上是回测(支持 double OnTester(){...} 后处理工具的内置机制)和前向测试(在模拟账户远期运行的支持下)都被用于量化建模,在任何真实的交易策略被暴露于执行任何真实的市场风险之前。

【讨论】:

    猜你喜欢
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多