找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 21|回复: 0

协助EA代码编写(2次以内免费)

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-19 04:23:00 | 显示全部楼层 |阅读模式
#property copyright "Copyright 2023, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict


// 趋势判断参数

input int MainTrendPeriod = 50;         // 主趋势判断周期(EMA)

input int TrendFilterPeriod = 20;       // 趋势过滤周期(SMA)


// 加仓参数

input double InitialLot = 0.1;          // 初始手数

input double AddMultiplier = 1.5;       // 加仓乘数

input int MaxAdditions = 3;             // 最大加仓次数

input double RetracementLevel = 0.01;   // 回撤比例(1% = 0.01)


// 止损止盈参数

input int InitialSL = 80;               // 初始止损(点)

input int TakeProfit = 150;             // 止盈(点)

input int HedgeSL = 50;                 // 对冲止损(点)

input int HedgeTP = 80;                 // 对冲止盈(点)


// 风险控制

input double MaxRiskPercent = 2.0;      // 最大风险百分比

input int HedgeTriggerLevel = 30;       // 趋势逆转触发点数


// 内部变量

int trendDirection = 0;                 // 主趋势方向(1=多头, -1=空头, 0=无趋势)

int addCounter = 0;                     // 加仓计数

double lastEntryPrice = 0;              // 最后入场价格

bool isHedging = false;                 // 是否处于对冲状态


//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

{

   // 参数检查

   if(InitialLot <= 0 || AddMultiplier <= 1 || MaxAdditions <= 0)

   {

      Print("无效的加仓参数设置");

      return(INIT_PARAMETERS_INCORRECT);

   }


   if(MaxRiskPercent <= 0 || MaxRiskPercent > 10)

   {

      Print("最大风险百分比必须在0-10之间");

      return(INIT_PARAMETERS_INCORRECT);

   }


   return(INIT_SUCCEEDED);

}


//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

   // 清理代码

}

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

{

   // 确定当前主趋势

   DetermineMainTrend();


   // 检查是否需要对冲

   if(CheckTrendReversal() && !isHedging)

   {

      StartHedging();

      return;

   }


   // 如果处于对冲状态,只管理现有持仓

   if(isHedging)

   {

      ManageHedgingPositions();

      return;

   }


   // 没有持仓且有明确趋势,开初始仓

   if(PositionsTotal() == 0 && trendDirection != 0)

   {

      OpenInitialPosition();

      addCounter = 0;

   }

   // 有持仓,检查是否可以加仓

   else if(PositionsTotal() > 0 && trendDirection != 0)

   {

      CheckAndAddPosition();

      ManageTrendPositions();

   }

}

//+------------------------------------------------------------------+

//| 确定主趋势方向                                                   |

//+------------------------------------------------------------------+
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-10 04:43 , Processed in 0.104226 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表