请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
EA

Breakout Strategy with Prop Firm Helper Functions - MetaTrader 5EA

显示:
190
等级:
(14)
已发布:
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

大家好、

这是"简单而有效的突破策略"的更新。在这段代码中,我为道具公司的挑战添加了一些辅助函数。

一般来说,要通过道具公司的挑战,你需要满足三个主要标准:

  • 目标利润
  • 不违反每日最大损失
  • 不违反最大损失

在这段代码中,我加入了两个函数来检查 "目标利润 "和 "几乎违反每日最大亏损",以自动退出所有仓位并删除所有挂单。至于 "最大损失",这实际上取决于您的策略和风险管理,因此本 MQL5 脚本不会提及。

//+------------------------------------------------------------------+
//| Prop Firm 辅助功能|
//+------------------------------------------------------------------+

// 删除所有挂单并退出所有仓位
void ClearAll(string message)
{
   Comment(message);
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      ulong orderTicket = OrderGetTicket(i);
      if (OrderSelect(orderTicket)) 
      {
         trade.OrderDelete(orderTicket);
      }
   }

   for (int i = PositionsTotal() - 1; i >= 0; i--)
   {
      ulong posTicket = PositionGetTicket(i);
      trade.PositionClose(posTicket);
   }
}

// 检查我们是否实现了利润目标
bool isPassed()
{
   return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA;
}

// 检查我们是否即将突破最大日损失值
bool isDailyLimit()
{
   MqlDateTime date_time;
   TimeToStruct(TimeCurrent(), date_time);
   int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;
   
   // 当前余额
   double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   // 获取今天的平仓交易 PL
   HistorySelect(0, TimeCurrent());
   int orders = HistoryDealsTotal();
   
   double PL = 0.0;
   for (int i = orders - 1; i >= 0; i--)
   {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
      {
         Print("HistoryDealGetTicket failed, no trade history");
         break;
      }
      double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);
      if (profit != 0)
      {
         // 获取交易日期
         MqlDateTime deal_time;
         TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);
         // 检查交易时间
         if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)
         {
            PL += profit;
         }
         else
            break;
      }
   }
   double starting_balance = current_balance - PL;
   double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);
   return current_equity < starting_balance - DAILY_LOSS_LIMIT;
}

我们需要指定的参数是

input string dd = "-------------PROP FIRM CHALLENGE-----------------";
input bool   isChallenge = false;
input double PASS_CRITERIA = 110100.;
input double DAILY_LOSS_LIMIT = 4500.;

希望您能在本脚本中找到相关值。


由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/49713

外汇概率论智能交易系统 外汇概率论智能交易系统

概率论顾问

Babi Ngepet Babi Ngepet

我分享我的专家顾问代码 babi ngepet

Click on the market chart to create a price alert Click on the market chart to create a price alert

这是 MetaTrader 5 的首创。现在,您可以点击图表创建价格警报。

Count consecutive no. of bull or bear bars Count consecutive no. of bull or bear bars

计算牛市或熊市连续条数的示例代码。