请大神帮我回测十年以上,请把绩效发给我谢谢!

 
AI - mql4 如果0柱收盘价就平所有仓,如果0柱开盘价就计算仓量和建仓,仓量为前一历史平仓仓量加平台最小手数,如果仓量大于平台最大手数,则仓量等于平台最大仓量,1柱是阳柱就建多仓,1柱是阴柱就建空仓。

void OnTick()
  {
//获取当前柱的开盘价和收盘价
double openPrice   = iOpen(Symbol(), PERIOD_CURRENT, 0);
double closePrice  = iClose(Symbol(), PERIOD_CURRENT, 0);
// 前一柱的收盘价
double prevClosePrice = iClose(Symbol(), PERIOD_CURRENT, 1); 
// 如果0柱收盘价就平所有仓
if(closePrice!= 0)
{
   CloseAllPositions();
}
//如果0柱开盘价就计算仓量和建仓
if(openPrice!= 0)
{
   double lotSize = prevCloseLotSize() + MarketInfo(Symbol(), MODE_MINLOT); // 前一历史平仓仓量加平台最小手数
   if(lotSize > MarketInfo(Symbol(), MODE_MAXLOT))
   {
      lotSize = MarketInfo(Symbol(), MODE_MAXLOT); // 如果仓量大于平台最大手数,则仓量等于平台最大仓量
   }
   //1柱是阳柱就建多仓
   if(iClose(Symbol(), PERIOD_CURRENT, 1) > iOpen(Symbol(), PERIOD_CURRENT, 1))
   {
      OpenLongPosition(lotSize);
   }
   //1柱是阴柱就建空仓
   else if(iClose(Symbol(), PERIOD_CURRENT, 1) < iOpen(Symbol(), PERIOD_CURRENT, 1))
   {
      OpenShortPosition(lotSize);
   }
}
  }
//平掉所有持仓的函数 
void CloseAllPositions()
{
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS))
      {
         if(OrderSymbol() == Symbol())
         {
            OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, clrNONE);
         }
      }
   }
}
//获取前一历史平仓仓量的函数  
double prevCloseLotSize()
{
   double lotSize = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY || OrderType() == OP_SELL)
         {
            lotSize = OrderLots();
            break;
         }
      }
   }
   return lotSize;
}
// 开多仓的函数
void OpenLongPosition(double lotSize)
{
   OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Long Position", MagicNumber, 0, clrNONE);
}
//开空仓的函数 
void OpenShortPosition(double lotSize)
{
   OrderSend(Symbol(), OP_SELL, lotSize, Bid, 3, 0, 0, "Short Position", MagicNumber, 0, clrNONE);
}
 
【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
https://www.mql5.com/zh/forum/448896
【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
  • 2023.06.13
  • Sky All
  • www.mql5.com
大家好,我是官网版主。 官网内部有机器人辅助管理,目的是自动下架一些有误导性的内容。 内容过长,或同一个IP多次注册,容易导致机器人误判,而被无辜删帖。 如果您被无故删帖,我们对这种体验感到万分抱歉。 为了防止机器人误判,请在讨论代码的时候使用代码表述功能...