3

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

Q1:这怎么可能不间断?

Q2:这还能盈利吗?

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

4

1 回答 1

2

A1:最简单的部分......

代码类型的执行原则上可以不间断地运行,假设执行引擎正在不间断地运行。虽然仍有周末可用于服务和维护任务,但 EA 代码本身可以无限长地运行,具有自动重入安全重新启动自我保护的状态完全 ( )。MQL4 Expert AdvisorMetaTrader Terminal 4OnInit(){...} + 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(){...}后处理设施机制)和前向测试(支持模拟账户正向运行)都是用于量化建模,在任何真正的交易策略被暴露以执行任何真正的市场风险之前。

于 2016-03-26T20:31:49.910 回答