From 9859787fe6138171737fba4b05d9360be951a6f0 Mon Sep 17 00:00:00 2001 From: zhangyangbin Date: Sun, 24 May 2026 16:17:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AA=81=E7=A0=B4EA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20260509-突破策略/README.md | 21 - 20260509-突破策略/zyb.20260509.breakout.mq5 | 420 ---- 20260516-突破策略/20260516_Breakout.mq5 | 552 +++-- 20260516-突破策略/README.md | 126 +- 20260519-突破策略/20260519_Breakout.mq5 | 1555 ------------- 20260519-突破策略/README.md | 400 ---- 20260519-突破策略/XAU_1min_v1.set | Bin 2838 -> 0 bytes 20260520-突破马丁/XAU_1min_v2.set | Bin 2532 -> 0 bytes 20260522-突破马丁/20260522_Breakout.mq5 | 2010 +++++++++++++++++ 20260522-突破马丁/README.md | 57 + .../XAU_1min_300000.set | Bin 20260522.png | Bin 0 -> 337485 bytes 20260523.jpg | Bin 0 -> 142937 bytes 20260524.png | Bin 0 -> 8872 bytes EXNESS链接 (10).txt | 81 - .../20260522-突破马丁/20260522_Breakout.mq5 | 0 .../20260522-突破马丁}/README.md | 0 .../20260522-突破马丁/XAU_1min_300000.set | Bin 2238 -> 2312 bytes KVB-50036106/TwisterPro Scalper 1.8 500$.set | Bin 0 -> 822 bytes KVB-50036106/TwisterPro Scalper 1.8.ex5 | Bin 0 -> 94592 bytes tag/20260425-马丁网格策略/20260425.ea.mq5 | 804 ------- tag/20260425-马丁网格策略/README.md | 34 - 马丁策略/README.md | 25 - 马丁策略/zyb.mading.mq5 | 562 ----- 24 files changed, 2436 insertions(+), 4211 deletions(-) delete mode 100644 20260509-突破策略/README.md delete mode 100644 20260509-突破策略/zyb.20260509.breakout.mq5 delete mode 100644 20260519-突破策略/20260519_Breakout.mq5 delete mode 100644 20260519-突破策略/README.md delete mode 100644 20260519-突破策略/XAU_1min_v1.set delete mode 100644 20260520-突破马丁/XAU_1min_v2.set create mode 100644 20260522-突破马丁/20260522_Breakout.mq5 create mode 100644 20260522-突破马丁/README.md rename {20260520-突破马丁 => 20260522-突破马丁}/XAU_1min_300000.set (100%) create mode 100644 20260522.png create mode 100644 20260523.jpg create mode 100644 20260524.png delete mode 100644 EXNESS链接 (10).txt rename 20260520-突破马丁/20260520_Breakout.mq5 => KVB-50036106/20260522-突破马丁/20260522_Breakout.mq5 (100%) rename {20260520-突破马丁 => KVB-50036106/20260522-突破马丁}/README.md (100%) rename 20260520-突破马丁/XAU_1min_v1.set => KVB-50036106/20260522-突破马丁/XAU_1min_300000.set (58%) create mode 100644 KVB-50036106/TwisterPro Scalper 1.8 500$.set create mode 100644 KVB-50036106/TwisterPro Scalper 1.8.ex5 delete mode 100644 tag/20260425-马丁网格策略/20260425.ea.mq5 delete mode 100644 tag/20260425-马丁网格策略/README.md delete mode 100644 马丁策略/README.md delete mode 100644 马丁策略/zyb.mading.mq5 diff --git a/20260509-突破策略/README.md b/20260509-突破策略/README.md deleted file mode 100644 index 484af03..0000000 --- a/20260509-突破策略/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# 均线突破策略 - -## 基础概念 -- 平台:MQL5 -- 品种:XAU - -## 辅助指标 -- 移动平均线(Moving Average) -- 周期默认设置为:14 - -## 核心逻辑 -- K线周期:支持参数设置,默认为1min -- 突破K线:开仓价在均线之下,收盘价在均线之上,称之为多单突破K线,反之亦然 -- 出现多单突破K线时,开多单,反之开空单,开仓时机是基于K线收盘价 -- 每单都是独立的,不限制单方向只能持有一单,止损放在突破K线的最低点或最高点,具体取决于开单方向 -- 止盈基于盈亏比的设置 - -## 补充逻辑 -- 是否复利,支持参数设置 -- 移动止损:支持设置为开单价格的百分比 - diff --git a/20260509-突破策略/zyb.20260509.breakout.mq5 b/20260509-突破策略/zyb.20260509.breakout.mq5 deleted file mode 100644 index 1e998cb..0000000 --- a/20260509-突破策略/zyb.20260509.breakout.mq5 +++ /dev/null @@ -1,420 +0,0 @@ -//+------------------------------------------------------------------+ -//| 均线突破策略 EA — 逻辑见同目录 README.md | -//| MA(默认14) 突破收盘确认;独立持仓;SL/TP;移动止损=开仓价百分比间距。 | -//+------------------------------------------------------------------+ -#property copyright "zyb-ea" -#property version "2.20" -#property description "MA突破:SL=突破K极值;TP=盈亏比;移动止损=开仓价×百分比间距。" - -#include - -CTrade g_trade; - -int g_hMa = INVALID_HANDLE; -static datetime g_lastWorkBar = 0; - -//------------------------------------------------------------ -input group "工作区" -input ENUM_TIMEFRAMES InpWorkTF = PERIOD_M1; // K 线周期(默认 1 分钟) -input int InpSlippage = 30; // 滑点(点) -input int InpMaxSpreadPoints = 0; // 最大点差(点,0=不限制) -input long InpMagic = 20260509; // Magic 识别码 - -input group "移动平均线" -input int InpMAPeriod = 14; // MA 周期 -input int InpMAShift = 0; // MA 位移 -input ENUM_MA_METHOD InpMAMethod = MODE_SMA; // MA 算法 -input ENUM_APPLIED_PRICE InpMAPrice = PRICE_CLOSE; // 应用于 - -input group "下单" -input double InpLot = 0.01; // 基准开仓手数(复利关闭时即为实际手数) - -input group "止盈(盈亏比)" -input double InpRewardRiskRatio = 2.0; // 盈亏比:止盈距离 = 入场相对止损的风险宽度 × 本值(≤0 表示不设止盈) - -input group "移动止损" -input double InpTrailPercentOfOpen = 0.0; // 跟踪间距 = 开仓价 × 本%/100(0=关闭);多:SL=BID−间距;空:SL=ASK+间距 - -input group "复利" -input bool InpUseCompound = false; // 开启后按账户净值相对参考净值缩放手数 -input double InpCompoundRefEquity = 10000.0; // 参考净值:实际手数 ≈ InpLot × (当前净值 / 参考净值) - -input group "其它" -input bool InpLog = true; // 是否打印日志 - -//------------------------------------------------------------ -double MinLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); } -double MaxLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); } -double LotStep() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); } - -double NormalizeVolumeVal(const double v) -{ - const double lo = MinLot(); - const double hi = MaxLot(); - const double st = LotStep(); - if(st <= 0.0 || hi < lo) - return v; - if(v < lo - 1e-12) - return 0.0; - double x = MathMin(v, hi); - x = MathFloor(x / st + 1e-12) * st; - return x; -} - -double CalcOrderLot() -{ - double lot = InpLot; - if(InpUseCompound && InpCompoundRefEquity > 1e-8) - { - const double eq = AccountInfoDouble(ACCOUNT_EQUITY); - lot = InpLot * (eq / InpCompoundRefEquity); - } - return NormalizeVolumeVal(lot); -} - -int SpreadPoints() -{ - return (int)SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); -} - -double StopsMinDistancePrice() -{ - const double pt = SymbolInfoDouble(_Symbol, SYMBOL_POINT); - const int st = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); - const int fr = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL); - return (double)(st + fr) * pt; -} - -// 市价多单:SL 须在 Bid 下方且满足最小止损距离 -bool IsBuyStopLossValid(const double sl) -{ - if(sl <= 0.0) - return false; - const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - const double need = StopsMinDistancePrice(); - const double slN = NormalizeDouble(sl, (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS)); - if(slN >= bid - need) - return false; - return true; -} - -// 市价空单:SL 须在 Ask 上方且满足最小止损距离 -bool IsSellStopLossValid(const double sl) -{ - if(sl <= 0.0) - return false; - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - const double need = StopsMinDistancePrice(); - const double slN = NormalizeDouble(sl, (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS)); - if(slN <= ask + need) - return false; - return true; -} - -// 多单止盈须在 Ask 上方且满足最小距离 -bool IsBuyTakeProfitValid(const double tp) -{ - if(tp <= 0.0) - return false; - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - const double need = StopsMinDistancePrice(); - if(tp <= ask + need) - return false; - return true; -} - -// 空单止盈须在 Bid 下方且满足最小距离 -bool IsSellTakeProfitValid(const double tp) -{ - if(tp <= 0.0) - return false; - const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - const double need = StopsMinDistancePrice(); - if(tp >= bid - need) - return false; - return true; -} - -// 风险宽 = |入场(Ask) − SL|;TP = Ask + 风险×RR -bool CalcBuyTpByRewardRisk(const double sl, double &tp) -{ - tp = 0.0; - if(InpRewardRiskRatio <= 0.0) - return true; - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - const double risk = ask - sl; - if(risk <= 1e-12) - return false; - const int dg = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); - tp = NormalizeDouble(ask + risk * InpRewardRiskRatio, dg); - return IsBuyTakeProfitValid(tp); -} - -// 风险宽 = SL − Ask;TP = Ask − 风险×RR -bool CalcSellTpByRewardRisk(const double sl, double &tp) -{ - tp = 0.0; - if(InpRewardRiskRatio <= 0.0) - return true; - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - const double risk = sl - ask; - if(risk <= 1e-12) - return false; - const int dg = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); - tp = NormalizeDouble(ask - risk * InpRewardRiskRatio, dg); - return IsSellTakeProfitValid(tp); -} - -/// 按开仓价百分比为间距跟踪止损(仅收紧:上移多单 SL、下移空单 SL) -void TryTrailingStopByOpenPercent() -{ - if(InpTrailPercentOfOpen <= 0.0) - return; - - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - - const int dg = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); - const double need = StopsMinDistancePrice(); - const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - const double pt = SymbolInfoDouble(_Symbol, SYMBOL_POINT); - - for(int i = (int)PositionsTotal() - 1; i >= 0; i--) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - - const double openPx = PositionGetDouble(POSITION_PRICE_OPEN); - const double trailDist = openPx * (InpTrailPercentOfOpen / 100.0); - if(trailDist <= 1e-12) - continue; - - const double slOld = PositionGetDouble(POSITION_SL); - const double tpOld = PositionGetDouble(POSITION_TP); - const long typ = (long)PositionGetInteger(POSITION_TYPE); - - if(slOld <= 0.0) - continue; - - if(typ == POSITION_TYPE_BUY) - { - double newSL = NormalizeDouble(bid - trailDist, dg); - if(newSL <= slOld + pt * 0.5) - continue; - if(newSL >= bid - need) - continue; - if(tpOld > 0.0 && newSL >= tpOld) - continue; - if(!g_trade.PositionModify(ticket, newSL, tpOld)) - { - if(InpLog) - Print("移动止损(多)失败 ticket=", ticket, " err=", GetLastError(), - " newSL=", newSL, " oldSL=", slOld); - } - } - else if(typ == POSITION_TYPE_SELL) - { - double newSL = NormalizeDouble(ask + trailDist, dg); - if(newSL >= slOld - pt * 0.5) - continue; - if(newSL <= ask + need) - continue; - if(tpOld > 0.0 && newSL <= tpOld) - continue; - if(!g_trade.PositionModify(ticket, newSL, tpOld)) - { - if(InpLog) - Print("移动止损(空)失败 ticket=", ticket, " err=", GetLastError(), - " newSL=", newSL, " oldSL=", slOld); - } - } - } -} - -//------------------------------------------------------------ -bool CopyBar1OHLCMA(double &o1, double &c1, double &l1, double &h1, double &ma1) -{ - double o[], c[], l[], h[]; - ArraySetAsSeries(o, true); - ArraySetAsSeries(c, true); - ArraySetAsSeries(l, true); - ArraySetAsSeries(h, true); - if(CopyOpen(_Symbol, InpWorkTF, 1, 1, o) != 1) - return false; - if(CopyHigh(_Symbol, InpWorkTF, 1, 1, h) != 1) - return false; - if(CopyLow(_Symbol, InpWorkTF, 1, 1, l) != 1) - return false; - if(CopyClose(_Symbol, InpWorkTF, 1, 1, c) != 1) - return false; - double m[]; - ArraySetAsSeries(m, true); - if(CopyBuffer(g_hMa, 0, 1, 1, m) != 1) - return false; - o1 = o[0]; - c1 = c[0]; - l1 = l[0]; - h1 = h[0]; - ma1 = m[0]; - return true; -} - -/// 新 K 线开盘:上一根已收盘 K 为突破 K;每单独立,带 SL / 可选 RR 止盈 -void OnNewClosedBar() -{ - if(g_hMa == INVALID_HANDLE) - return; - - double o1 = 0.0, c1 = 0.0, l1 = 0.0, h1 = 0.0, ma1 = 0.0; - if(!CopyBar1OHLCMA(o1, c1, l1, h1, ma1)) - return; - - const bool longBreak = (o1 < ma1 && c1 > ma1); - const bool shortBreak = (o1 > ma1 && c1 < ma1); - - if(!longBreak && !shortBreak) - return; - - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - - const double vol = CalcOrderLot(); - if(vol < MinLot() - 1e-12) - { - if(InpLog) - Print("手数过小,跳过开仓"); - return; - } - - const int dg = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); - - if(longBreak) - { - double sl = NormalizeDouble(l1, dg); - if(!IsBuyStopLossValid(sl)) - { - if(InpLog) - Print("多单突破: 止损价不满足券商最小距离或无效,跳过 SL=", sl, - " Bid=", SymbolInfoDouble(_Symbol, SYMBOL_BID), - " 突破K最低=", l1); - return; - } - double tp = 0.0; - if(InpRewardRiskRatio > 0.0) - { - if(!CalcBuyTpByRewardRisk(sl, tp)) - { - if(InpLog) - Print("多单突破: 止盈(盈亏比 ", InpRewardRiskRatio, ") 无效或距离不足,跳过"); - return; - } - } - const string cmt = "突破-多"; - if(!g_trade.Buy(vol, _Symbol, 0.0, sl, tp, cmt)) - { - if(InpLog) - Print("开多单失败 err=", GetLastError(), " SL=", sl, " TP=", tp); - } - else if(InpLog) - Print("多单突破 独立开仓 手数=", vol, " SL=", sl, " TP=", tp, - " RR=", InpRewardRiskRatio, - " O=", o1, " C=", c1, " MA=", ma1); - } - else if(shortBreak) - { - double sl = NormalizeDouble(h1, dg); - if(!IsSellStopLossValid(sl)) - { - if(InpLog) - Print("空单突破: 止损价不满足券商最小距离或无效,跳过 SL=", sl, - " Ask=", SymbolInfoDouble(_Symbol, SYMBOL_ASK), - " 突破K最高=", h1); - return; - } - double tp = 0.0; - if(InpRewardRiskRatio > 0.0) - { - if(!CalcSellTpByRewardRisk(sl, tp)) - { - if(InpLog) - Print("空单突破: 止盈(盈亏比 ", InpRewardRiskRatio, ") 无效或距离不足,跳过"); - return; - } - } - const string cmt = "突破-空"; - if(!g_trade.Sell(vol, _Symbol, 0.0, sl, tp, cmt)) - { - if(InpLog) - Print("开空单失败 err=", GetLastError(), " SL=", sl, " TP=", tp); - } - else if(InpLog) - Print("空单突破 独立开仓 手数=", vol, " SL=", sl, " TP=", tp, - " RR=", InpRewardRiskRatio, - " O=", o1, " C=", c1, " MA=", ma1); - } -} - -//------------------------------------------------------------ -int OnInit() -{ - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - const int filling = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE); - if((filling & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK) - g_trade.SetTypeFilling(ORDER_FILLING_FOK); - else if((filling & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC) - g_trade.SetTypeFilling(ORDER_FILLING_IOC); - else - g_trade.SetTypeFilling(ORDER_FILLING_RETURN); - - g_hMa = iMA(_Symbol, InpWorkTF, InpMAPeriod, InpMAShift, InpMAMethod, InpMAPrice); - if(g_hMa == INVALID_HANDLE) - { - Print("初始化 MA 句柄失败"); - return INIT_FAILED; - } - g_lastWorkBar = 0; - if(InpLog) - Print("均线突破 EA v2.2: ", _Symbol, - " 周期=", EnumToString(InpWorkTF), - " MA=", InpMAPeriod, - " 基准手数=", InpLot, - " 盈亏比RR=", InpRewardRiskRatio, - " 移动止损%=", InpTrailPercentOfOpen, - " 复利=", (InpUseCompound ? "开" : "关"), - (InpUseCompound ? StringFormat(" 参考净值=%.2f 当前手数≈%.4f", InpCompoundRefEquity, CalcOrderLot()) : ""), - " 独立持仓 SL=突破K TP=风险×RR"); - return INIT_SUCCEEDED; -} - -void OnDeinit(const int reason) -{ - if(g_hMa != INVALID_HANDLE) - { - IndicatorRelease(g_hMa); - g_hMa = INVALID_HANDLE; - } -} - -void OnTick() -{ - if(InpMaxSpreadPoints > 0 && SpreadPoints() > InpMaxSpreadPoints) - return; - - TryTrailingStopByOpenPercent(); - - const datetime bar0 = iTime(_Symbol, InpWorkTF, 0); - if(bar0 != 0 && bar0 != g_lastWorkBar) - { - g_lastWorkBar = bar0; - OnNewClosedBar(); - } -} - -//+------------------------------------------------------------------+ diff --git a/20260516-突破策略/20260516_Breakout.mq5 b/20260516-突破策略/20260516_Breakout.mq5 index 592b065..cbe0072 100644 --- a/20260516-突破策略/20260516_Breakout.mq5 +++ b/20260516-突破策略/20260516_Breakout.mq5 @@ -3,11 +3,17 @@ //| 突破交易策略 - 完整交易版本 | //+------------------------------------------------------------------+ #property copyright "Breakout Strategy" -#property version "1.00" +#property version "1.01" #property strict #include +// 手数计算方式 +enum ENUM_LOT_SIZE_MODE { + LOT_SIZE_FIXED = 0, // 固定手数 + LOT_SIZE_RISK_PERCENT = 1 // 结余风险比例(RiskPercent) +}; + //+------------------------------------------------------------------+ //| 输入参数 | //+------------------------------------------------------------------+ @@ -15,20 +21,21 @@ input group "=== 波段识别参数 ===" input ENUM_TIMEFRAMES InpTimeframe = PERIOD_M1; // K线周期 input int InpMAPeriod = 14; // MA周期 input double InpMinWavePercent = 0.1; // 最小波段阈值百分比(%) -input double InpMaxWavePercent = 1.0; // 最大波段阈值百分比(%) +input double InpMaxWavePercent = 10.0; // 最大波段阈值百分比(%) input double InpPullbackTolerance = 0.0; // 反向突破容忍度(%) 0=不容忍 +input int InpMinWaveBars = 3; // 有效波段最少K线数(含两端极值所在K) input group "=== 风险管理参数 ===" -input double InpStopLossPercent = 0.02; // 止损百分比(%) -input int InpMinStopLossPoints = 10; // 最小止损点数 -input double InpRiskRewardRatio = 1.2; // 盈亏比 -input bool InpUseTrailingStop = false; // 使用移动止损 +input int InpStopLossPoints = 200; // 止损点数 +input int InpTakeProfitPoints = 300; // 止盈点数 +input bool InpUseTrailingStop = true; // 使用移动止损 input group "=== 仓位管理参数 ===" -input bool InpUseCompounding = true; // 使用复利模式 -input double InpFixedLots = 0.01; // 固定手数 -input double InpLotsPer500 = 0.05; // 每500$开仓手数(复利模式) -input int InpMaxPositions = 99; // 最大开仓手数 +input ENUM_LOT_SIZE_MODE InpLotSizeMode = LOT_SIZE_RISK_PERCENT; // 手数模式 +input double InpFixedLots = 0.01; // 固定手数(固定模式) +input double InpRiskPercent = 5.0; // 每笔风险占结余%(风险比例模式) +input double InpMaxLots = 99.0; // 单笔最大手数(0=仅受品种限制) +input int InpMaxPositions = 99; // 最大持仓笔数 input bool InpOnePositionPerDirection = true; // 单方向最多持有一单 input group "=== 连续亏损保护 ===" @@ -59,6 +66,9 @@ struct ValidWaveInfo { ValidWaveInfo latest_wave; // 最新有效波段 +double g_sync_wave_high = 0.0; // 已挂单的波段高价(用于检测换波段) +double g_sync_wave_low = 0.0; + // 连续亏损保护相关变量 int consecutive_loss_count = 0; // 连续亏损计数器 datetime freeze_until_time = 0; // 冷冻结束时间(0表示未冷冻) @@ -74,14 +84,24 @@ struct ExtremePoint { // 函数声明 void UpdateLatestValidWave(); +int CountBarsBetweenExtremeTimes(const MqlRates &rates[], const datetime t1, const datetime t2); +bool IsValidWaveByBarCount(const MqlRates &rates[], const datetime t1, const datetime t2); void DrawExtremeMarkers(ExtremePoint &extremes[]); void DrawLatestValidWave(double high_price, datetime high_time, double low_price, datetime low_time); int CheckBreakout(int index, const MqlRates &rates[], const double &ma[]); void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], const MqlRates &rates[], int &filtered_bars[], int &filtered_types[]); -void CheckOpenSignals(); -bool OpenPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, double threshold_points); -double CalculateLotSize(); +void SyncBreakoutPendingOrders(); +void CancelEaPendingOrders(const bool cancel_buy_stop, const bool cancel_sell_stop); +ulong FindEaPendingOrder(const ENUM_ORDER_TYPE order_type); +bool CalcPendingSlTp(const ENUM_ORDER_TYPE pending_type, const double trigger_price, double &sl, double &tp); +bool PlaceBreakoutPendingOrder(const ENUM_ORDER_TYPE pending_type, const double trigger_price, + const double wave_high, const double wave_low); +double GetStopLossOffset(); +double GetTakeProfitOffset(); +double StopLossAmountFromPositionComment(const string &comment); +double CalculateLotSize(const double wave_high, const double wave_low); +double NormalizeVolumeLots(double lots); void ManagePositions(); void CheckTrailingStop(ulong ticket); void CheckAndCloseManualOrders(); @@ -117,20 +137,24 @@ int OnInit() Print("K线周期:", EnumToString(InpTimeframe)); Print("MA周期:", InpMAPeriod); Print("波段阈值范围: ", InpMinWavePercent, "% - ", InpMaxWavePercent, "%"); + Print("有效波段最少K线: ", InpMinWaveBars, " (两极值间含两端,<=1=不限制)"); if(InpPullbackTolerance > 0) Print("反向突破容忍度: ", DoubleToString(InpPullbackTolerance, 1), "% (启用)"); else Print("反向突破容忍度: 0% (禁用 - 保持原有逻辑)"); - Print("止损:", InpStopLossPercent, "% (最小", InpMinStopLossPoints, "点) | 盈亏比:", InpRiskRewardRatio); + Print("止损:", InpStopLossPoints, "点 | 止盈:", InpTakeProfitPoints, "点"); Print("移动止损:", (InpUseTrailingStop ? "启用" : "禁用")); - Print("最大开仓手数:", InpMaxPositions); + Print("最大持仓笔数:", InpMaxPositions, " 单笔最大手数:", InpMaxLots); Print("单方向持仓限制:", (InpOnePositionPerDirection ? "启用 (每方向最多1单)" : "禁用")); if(InpConsecutiveLosses > 0 && InpFreezeBarCount > 0) Print("连续亏损保护: 启用 (", InpConsecutiveLosses, "次亏损→冷冻", InpFreezeBarCount, "根K线)"); else Print("连续亏损保护: 禁用"); - Print("手数模式:", (InpUseCompounding ? "复利" : "固定"), - InpUseCompounding ? StringFormat(" (每500$开%.2f手)", InpLotsPer500) : StringFormat(" (%.2f手)", InpFixedLots)); + if(InpLotSizeMode == LOT_SIZE_RISK_PERCENT) + Print("手数模式: 结余风险比例 ", InpRiskPercent, "% (按止损距离反推手数)"); + else + Print("手数模式: 固定手数 ", InpFixedLots); + Print("开仓方式: 突破挂单 (高点BUY STOP / 低点SELL STOP)"); Print("禁止手工单:", (InpCloseManualOrders ? "启用 (自动平掉手工单)" : "禁用")); Print("========================================"); @@ -147,6 +171,7 @@ void OnDeinit(const int reason) // 删除所有标记 ObjectsDeleteAll(0, "ValidWave_"); + CancelEaPendingOrders(true, true); Print("突破交易策略EA已卸载"); } @@ -158,7 +183,22 @@ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { - // 只在功能启用时处理 + if(trans.type == TRADE_TRANSACTION_DEAL_ADD) { + if(HistoryDealSelect(trans.deal)) { + if(HistoryDealGetString(trans.deal, DEAL_SYMBOL) == _Symbol && + HistoryDealGetInteger(trans.deal, DEAL_MAGIC) == InpMagicNumber && + HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN) { + const ENUM_DEAL_TYPE deal_type = + (ENUM_DEAL_TYPE)HistoryDealGetInteger(trans.deal, DEAL_TYPE); + if(deal_type == DEAL_TYPE_BUY) + latest_wave.high_used = true; + else if(deal_type == DEAL_TYPE_SELL) + latest_wave.low_used = true; + } + } + } + + // 只在功能启用时处理连续亏损 if(InpConsecutiveLosses <= 0 || InpFreezeBarCount <= 0) return; @@ -236,8 +276,8 @@ void OnTick() // 2. 更新最新有效波段 UpdateLatestValidWave(); - // 3. 检查开仓信号 - CheckOpenSignals(); + // 3. 同步突破挂单(BUY STOP@高 / SELL STOP@低) + SyncBreakoutPendingOrders(); // 4. 管理已有持仓 ManagePositions(); @@ -246,6 +286,26 @@ void OnTick() //+------------------------------------------------------------------+ //| 更新最新有效波段 | //+------------------------------------------------------------------+ +int CountBarsBetweenExtremeTimes(const MqlRates &rates[], const datetime t1, const datetime t2) +{ + const datetime t_lo = (t1 <= t2) ? t1 : t2; + const datetime t_hi = (t1 >= t2) ? t1 : t2; + int count = 0; + const int n = ArraySize(rates); + for(int j = 0; j < n; j++) { + if(rates[j].time >= t_lo && rates[j].time <= t_hi) + count++; + } + return count; +} + +bool IsValidWaveByBarCount(const MqlRates &rates[], const datetime t1, const datetime t2) +{ + if(InpMinWaveBars <= 1) + return true; + return (CountBarsBetweenExtremeTimes(rates, t1, t2) >= InpMinWaveBars); +} + void UpdateLatestValidWave() { int bars = Bars(_Symbol, InpTimeframe); @@ -455,7 +515,8 @@ void UpdateLatestValidWave() double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; // 波段必须在最小和最大阈值之间才是有效波段 - if(price_diff_points >= min_threshold && price_diff_points <= max_threshold) { + if(price_diff_points >= min_threshold && price_diff_points <= max_threshold && + IsValidWaveByBarCount(rates, extremes[i - 1].time, extremes[i].time)) { extremes[i-1].is_valid = true; extremes[i].is_valid = true; } @@ -477,7 +538,8 @@ void UpdateLatestValidWave() double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; // 波段必须在最小和最大阈值之间才是有效波段 - if(price_diff_points >= min_threshold && price_diff_points <= max_threshold) { + if(price_diff_points >= min_threshold && price_diff_points <= max_threshold && + IsValidWaveByBarCount(rates, extremes[i - 1].time, extremes[i].time)) { // 找到最新的有效波段 double high = MathMax(extremes[i].price, extremes[i-1].price); double low = MathMin(extremes[i].price, extremes[i-1].price); @@ -506,6 +568,7 @@ void UpdateLatestValidWave() Print("更新最新有效波段 - 高:", DoubleToString(high, _Digits), " 低:", DoubleToString(low, _Digits), " 价差:", (int)price_diff_points, "点", + " K线数:", CountBarsBetweenExtremeTimes(rates, extremes[i - 1].time, extremes[i].time), " 阈值范围:", StringFormat("%.2f%%-%.2f%% (%.0f-%.0f点)", InpMinWavePercent, InpMaxWavePercent, min_threshold, max_threshold)); } @@ -632,39 +695,143 @@ void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], } //+------------------------------------------------------------------+ -//| 检查开仓信号 | +//| 突破挂单管理 | //+------------------------------------------------------------------+ -void CheckOpenSignals() +void CancelEaPendingOrders(const bool cancel_buy_stop, const bool cancel_sell_stop) { - if(!latest_wave.exists) - return; + for(int i = OrdersTotal() - 1; i >= 0; i--) { + const ulong ticket = OrderGetTicket(i); + if(ticket == 0 || !OrderSelect(ticket)) + continue; + if(OrderGetString(ORDER_SYMBOL) != _Symbol) + continue; + if(OrderGetInteger(ORDER_MAGIC) != InpMagicNumber) + continue; - // 检查是否处于冷冻期 - if(InpConsecutiveLosses > 0 && InpFreezeBarCount > 0 && freeze_bar_index > 0) - { - int current_bars = Bars(_Symbol, InpTimeframe); - if(current_bars < freeze_bar_index) - { - // 仍在冷冻期内 - 静默拒绝开仓 + const ENUM_ORDER_TYPE ot = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); + if(cancel_buy_stop && ot == ORDER_TYPE_BUY_STOP) + trade.OrderDelete(ticket); + else if(cancel_sell_stop && ot == ORDER_TYPE_SELL_STOP) + trade.OrderDelete(ticket); + } +} + +ulong FindEaPendingOrder(const ENUM_ORDER_TYPE order_type) +{ + for(int i = OrdersTotal() - 1; i >= 0; i--) { + const ulong ticket = OrderGetTicket(i); + if(ticket == 0 || !OrderSelect(ticket)) + continue; + if(OrderGetString(ORDER_SYMBOL) != _Symbol) + continue; + if(OrderGetInteger(ORDER_MAGIC) != InpMagicNumber) + continue; + if((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE) == order_type) + return ticket; + } + return 0; +} + +bool CalcPendingSlTp(const ENUM_ORDER_TYPE pending_type, const double trigger_price, double &sl, double &tp) +{ + const double stop_loss_amount = GetStopLossOffset(); + const double take_profit_amount = GetTakeProfitOffset(); + const int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); + const double min_stop_distance = stops_level * _Point; + + sl = 0.0; + tp = 0.0; + + if(pending_type == ORDER_TYPE_BUY_STOP) { + sl = NormalizeDouble(trigger_price - stop_loss_amount, _Digits); + tp = NormalizeDouble(trigger_price + take_profit_amount, _Digits); + if(stops_level > 0) { + if(trigger_price - sl < min_stop_distance) + sl = NormalizeDouble(trigger_price - min_stop_distance, _Digits); + if(tp - trigger_price < min_stop_distance) + tp = NormalizeDouble(trigger_price + min_stop_distance, _Digits); + } + } else if(pending_type == ORDER_TYPE_SELL_STOP) { + sl = NormalizeDouble(trigger_price + stop_loss_amount, _Digits); + tp = NormalizeDouble(trigger_price - take_profit_amount, _Digits); + if(stops_level > 0) { + if(sl - trigger_price < min_stop_distance) + sl = NormalizeDouble(trigger_price + min_stop_distance, _Digits); + if(trigger_price - tp < min_stop_distance) + tp = NormalizeDouble(trigger_price - min_stop_distance, _Digits); + } + } else { + return false; + } + return true; +} + +bool PlaceBreakoutPendingOrder(const ENUM_ORDER_TYPE pending_type, const double trigger_price, + const double wave_high, const double wave_low) +{ + const double lots = CalculateLotSize(wave_high, wave_low); + if(lots <= 0.0) + return false; + + double sl = 0.0, tp = 0.0; + if(!CalcPendingSlTp(pending_type, trigger_price, sl, tp)) + return false; + + const int wave_range_points = (int)MathRound(MathAbs(wave_high - wave_low) / _Point); + const string comment = StringFormat("WR%d", wave_range_points); + + bool result = false; + if(pending_type == ORDER_TYPE_BUY_STOP) + result = trade.BuyStop(lots, trigger_price, _Symbol, sl, tp, ORDER_TIME_GTC, 0, comment); + else if(pending_type == ORDER_TYPE_SELL_STOP) + result = trade.SellStop(lots, trigger_price, _Symbol, sl, tp, ORDER_TIME_GTC, 0, comment); + + if(!result) { + Print("挂单失败 ", EnumToString(pending_type), " 触发价:", trigger_price, + " 错误:", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); + return false; + } + + Print("突破挂单成功 ", EnumToString(pending_type), + " 触发:", trigger_price, " 手数:", lots, + " SL:", sl, " TP:", tp, + " 波段 H:", wave_high, " L:", wave_low); + return true; +} + +void SyncBreakoutPendingOrders() +{ + if(!latest_wave.exists) { + CancelEaPendingOrders(true, true); + g_sync_wave_high = 0.0; + g_sync_wave_low = 0.0; + return; + } + + if(InpConsecutiveLosses > 0 && InpFreezeBarCount > 0 && freeze_bar_index > 0) { + const int current_bars = Bars(_Symbol, InpTimeframe); + if(current_bars < freeze_bar_index) { + CancelEaPendingOrders(true, true); return; } - else - { - // 冷冻期结束 - if(freeze_bar_index > 0) - { - Print("【连续亏损保护】冷冻解除,恢复交易"); - consecutive_loss_count = 0; - freeze_bar_index = 0; - freeze_until_time = 0; - } + if(freeze_bar_index > 0) { + Print("【连续亏损保护】冷冻解除,恢复交易"); + consecutive_loss_count = 0; + freeze_bar_index = 0; + freeze_until_time = 0; } } - // 检查当前持仓数量和方向 + if(MathAbs(latest_wave.high_price - g_sync_wave_high) > _Point * 0.5 || + MathAbs(latest_wave.low_price - g_sync_wave_low) > _Point * 0.5) { + CancelEaPendingOrders(true, true); + g_sync_wave_high = latest_wave.high_price; + g_sync_wave_low = latest_wave.low_price; + } + int total_positions = 0; - int buy_positions = 0; // 多单数量 - int sell_positions = 0; // 空单数量 + int buy_positions = 0; + int sell_positions = 0; for(int i = PositionsTotal() - 1; i >= 0; i--) { if(!PositionSelectByTicket(PositionGetTicket(i))) @@ -673,11 +840,8 @@ void CheckOpenSignals() continue; if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) continue; - total_positions++; - - // 统计各方向持仓数量 - ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); + const ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); if(pos_type == POSITION_TYPE_BUY) buy_positions++; else if(pos_type == POSITION_TYPE_SELL) @@ -685,226 +849,131 @@ void CheckOpenSignals() } if(total_positions >= InpMaxPositions) { + CancelEaPendingOrders(true, true); if(InpShowDebugInfo) - Print("已达最大持仓数量限制: ", total_positions, "/", InpMaxPositions); + Print("已达最大持仓笔数,撤销突破挂单: ", total_positions, "/", InpMaxPositions); return; } - double current_price = SymbolInfoDouble(_Symbol, SYMBOL_BID); + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + const double wave_high = latest_wave.high_price; + const double wave_low = latest_wave.low_price; + const double lots = CalculateLotSize(wave_high, wave_low); - // 计算当前波段的实际阈值(百分比模式:取高低点的平均值作为基准) - double base_price = (latest_wave.high_price + latest_wave.low_price) / 2.0; - double wave_threshold_points = (base_price * InpMinWavePercent / 100.0) / _Point; - - // 检查多单信号:突破高点(且该高点未使用过) - if(!latest_wave.high_used && current_price > latest_wave.high_price) { - // 如果启用了单方向持仓限制,检查多单数量 - if(InpOnePositionPerDirection && buy_positions >= 1) { + // 高点 BUY STOP + if(!latest_wave.high_used && (!InpOnePositionPerDirection || buy_positions < 1)) { + if(ask >= wave_high - _Point * 0.5) { + CancelEaPendingOrders(true, false); if(InpShowDebugInfo) - Print("多单信号被忽略 - 已有多单持仓: ", buy_positions); + Print("价格已越过波段高点,暂不挂BUY STOP Ask:", ask, " 高:", wave_high); } else { - if(InpShowDebugInfo) - Print("检测到多单信号 - 价格:", current_price, " 突破高点:", latest_wave.high_price); - - if(OpenPosition(ORDER_TYPE_BUY, latest_wave.high_price, latest_wave.low_price, wave_threshold_points)) { - latest_wave.high_used = true; // 标记高点已使用,该波段高点失效 - if(InpShowDebugInfo) - Print("高点已使用,等待新的有效波段"); + ulong ticket = FindEaPendingOrder(ORDER_TYPE_BUY_STOP); + if(ticket > 0 && OrderSelect(ticket)) { + const double order_price = OrderGetDouble(ORDER_PRICE_OPEN); + const double order_lots = OrderGetDouble(ORDER_VOLUME_CURRENT); + if(MathAbs(order_price - wave_high) > _Point * 0.5 || + MathAbs(order_lots - lots) > 1e-8) { + trade.OrderDelete(ticket); + ticket = 0; + } } + if(ticket == 0) + PlaceBreakoutPendingOrder(ORDER_TYPE_BUY_STOP, wave_high, wave_high, wave_low); } + } else { + CancelEaPendingOrders(true, false); } - // 检查空单信号:突破低点(且该低点未使用过) - if(!latest_wave.low_used && current_price < latest_wave.low_price) { - // 如果启用了单方向持仓限制,检查空单数量 - if(InpOnePositionPerDirection && sell_positions >= 1) { + // 低点 SELL STOP + if(!latest_wave.low_used && (!InpOnePositionPerDirection || sell_positions < 1)) { + if(bid <= wave_low + _Point * 0.5) { + CancelEaPendingOrders(false, true); if(InpShowDebugInfo) - Print("空单信号被忽略 - 已有空单持仓: ", sell_positions); + Print("价格已越过波段低点,暂不挂SELL STOP Bid:", bid, " 低:", wave_low); } else { - if(InpShowDebugInfo) - Print("检测到空单信号 - 价格:", current_price, " 突破低点:", latest_wave.low_price); - - if(OpenPosition(ORDER_TYPE_SELL, latest_wave.high_price, latest_wave.low_price, wave_threshold_points)) { - latest_wave.low_used = true; // 标记低点已使用,该波段低点失效 - if(InpShowDebugInfo) - Print("低点已使用,等待新的有效波段"); + ulong ticket = FindEaPendingOrder(ORDER_TYPE_SELL_STOP); + if(ticket > 0 && OrderSelect(ticket)) { + const double order_price = OrderGetDouble(ORDER_PRICE_OPEN); + const double order_lots = OrderGetDouble(ORDER_VOLUME_CURRENT); + if(MathAbs(order_price - wave_low) > _Point * 0.5 || + MathAbs(order_lots - lots) > 1e-8) { + trade.OrderDelete(ticket); + ticket = 0; + } } + if(ticket == 0) + PlaceBreakoutPendingOrder(ORDER_TYPE_SELL_STOP, wave_low, wave_high, wave_low); } + } else { + CancelEaPendingOrders(false, true); } } //+------------------------------------------------------------------+ -//| 开仓 | +//| 止损/止盈距离(点数) | //+------------------------------------------------------------------+ -bool OpenPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, double threshold_points) +double GetStopLossOffset() { - double lots = CalculateLotSize(); - if(lots <= 0) - return false; + if(InpStopLossPoints <= 0) + return 0.0; + return (double)InpStopLossPoints * _Point; +} - // 生成备注信息:盈亏比和最小止损点数 - string comment = StringFormat("R%.1f SL%d", - InpRiskRewardRatio, - InpMinStopLossPoints); +double GetTakeProfitOffset() +{ + if(InpTakeProfitPoints <= 0) + return 0.0; + return (double)InpTakeProfitPoints * _Point; +} - bool result = false; +double StopLossAmountFromPositionComment(const string &comment) +{ + return GetStopLossOffset(); +} - // 先以市价开仓(不带SL/TP),成交后再根据实际成交价设置SL/TP - if(order_type == ORDER_TYPE_BUY) { - result = trade.Buy(lots, _Symbol, 0, 0, 0, comment); - } else { - result = trade.Sell(lots, _Symbol, 0, 0, 0, comment); - } +//+------------------------------------------------------------------+ +//| 手数规范化 | +//+------------------------------------------------------------------+ +double NormalizeVolumeLots(double lots) +{ + const double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); + const double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + const double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); - if(!result) { - Print("开仓失败: ", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); - return false; - } - - // 等待持仓信息更新 - Sleep(100); - - // 通过符号和魔术号查找刚开的持仓 - ulong ticket = 0; - double open_price = 0; - - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - // 找到最新的持仓(没有SL/TP的) - if(PositionGetDouble(POSITION_SL) == 0 && PositionGetDouble(POSITION_TP) == 0) { - ticket = PositionGetTicket(i); - open_price = PositionGetDouble(POSITION_PRICE_OPEN); - break; - } - } - - if(ticket == 0) { - Print("无法找到刚开的持仓"); - return false; - } - - // 基于实际成交价计算止损金额 - double stop_loss_amount = open_price * InpStopLossPercent / 100.0; - - // 确保止损金额不小于最小止损点数 - double min_stop_loss = InpMinStopLossPoints * _Point; - if(stop_loss_amount < min_stop_loss) { - stop_loss_amount = min_stop_loss; - } - - // 获取平台的最小止损距离 - int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); - double min_stop_distance = stops_level * _Point; - - // 获取当前市场价格 - double current_bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - double current_ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - - double sl = 0, tp = 0; - - if(order_type == ORDER_TYPE_BUY) { - // 先标准化止损价 - sl = NormalizeDouble(open_price - stop_loss_amount, _Digits); - // 根据标准化后的实际止损金额重新计算止盈金额,确保盈亏比准确 - double actual_sl_amount = open_price - sl; - double take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price + take_profit_amount, _Digits); - - // 检查止损距离(多单检查与Bid的距离) - if(stops_level > 0 && (current_bid - sl) < min_stop_distance) { - sl = NormalizeDouble(current_bid - min_stop_distance, _Digits); - // 重新计算止盈 - actual_sl_amount = open_price - sl; - take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price + take_profit_amount, _Digits); - Print("止损距离不足,已调整 - 新止损:", sl); - } - - // 检查止盈距离 - if(stops_level > 0 && (tp - current_ask) < min_stop_distance) { - tp = NormalizeDouble(current_ask + min_stop_distance, _Digits); - Print("止盈距离不足,已调整 - 新止盈:", tp); - } - } else { - // 先标准化止损价 - sl = NormalizeDouble(open_price + stop_loss_amount, _Digits); - // 根据标准化后的实际止损金额重新计算止盈金额,确保盈亏比准确 - double actual_sl_amount = sl - open_price; - double take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price - take_profit_amount, _Digits); - - // 检查止损距离(空单检查与Ask的距离) - if(stops_level > 0 && (sl - current_ask) < min_stop_distance) { - sl = NormalizeDouble(current_ask + min_stop_distance, _Digits); - // 重新计算止盈 - actual_sl_amount = sl - open_price; - take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price - take_profit_amount, _Digits); - Print("止损距离不足,已调整 - 新止损:", sl); - } - - // 检查止盈距离 - if(stops_level > 0 && (current_bid - tp) < min_stop_distance) { - tp = NormalizeDouble(current_bid - min_stop_distance, _Digits); - Print("止盈距离不足,已调整 - 新止盈:", tp); - } - } - - // 修改持仓的SL/TP - if(!trade.PositionModify(ticket, sl, tp)) { - Print("修改SL/TP失败 - Ticket:", ticket, - " 错误码:", trade.ResultRetcode(), - " 描述:", trade.ResultRetcodeDescription(), - " 止损:", sl, " 止盈:", tp, - " 平台最小距离:", stops_level, "点"); - return false; - } - - Print(order_type == ORDER_TYPE_BUY ? "开多单成功" : "开空单成功", - " - 手数:", lots, - " 波段:H:", wave_high, " L:", wave_low, - " 实际成交价:", open_price, - " 止损:", sl, "(", InpStopLossPercent, "%)", - " 止盈:", tp, "(盈亏比", InpRiskRewardRatio, ")"); - - return true; + if(InpMaxLots > 0.0) + lots = MathMin(lots, InpMaxLots); + if(lots < min_lot) + lots = min_lot; + if(lots > max_lot) + lots = max_lot; + if(lot_step > 0.0) + lots = MathFloor(lots / lot_step) * lot_step; + return lots; } //+------------------------------------------------------------------+ //| 计算开仓手数 | //+------------------------------------------------------------------+ -double CalculateLotSize() +double CalculateLotSize(const double wave_high, const double wave_low) { - double lots = 0; + double lots = InpFixedLots; - if(InpUseCompounding) { - // 复利模式 - double balance = AccountInfoDouble(ACCOUNT_BALANCE); - lots = NormalizeDouble((balance / 500.0) * InpLotsPer500, 2); - } else { - // 固定手数模式 - lots = InpFixedLots; + if(InpLotSizeMode == LOT_SIZE_RISK_PERCENT && InpRiskPercent > 0.0) { + const double stop_loss_dist = GetStopLossOffset(); + const double balance = AccountInfoDouble(ACCOUNT_BALANCE); + const double risk_money = balance * InpRiskPercent / 100.0; + + const double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + const double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); + if(stop_loss_dist > 0.0 && tick_size > 0.0 && tick_value > 0.0 && risk_money > 0.0) { + const double loss_per_lot = (stop_loss_dist / tick_size) * tick_value; + if(loss_per_lot > 0.0) + lots = risk_money / loss_per_lot; + } } - // 检查手数限制 - double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); - double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); - double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); - - if(lots < min_lot) lots = min_lot; - if(lots > max_lot) lots = max_lot; - - lots = MathFloor(lots / lot_step) * lot_step; - - return lots; + return NormalizeVolumeLots(lots); } //+------------------------------------------------------------------+ @@ -947,14 +1016,9 @@ void CheckTrailingStop(ulong ticket) SymbolInfoDouble(_Symbol, SYMBOL_BID) : SymbolInfoDouble(_Symbol, SYMBOL_ASK); - // 计算止损金额(开仓价的百分比) - double stop_loss_amount = open_price * InpStopLossPercent / 100.0; - - // 确保止损金额不小于最小止损点数 - double min_stop_loss = InpMinStopLossPoints * _Point; - if(stop_loss_amount < min_stop_loss) { - stop_loss_amount = min_stop_loss; - } + // 计算止损金额(有效波段区间 × 比例,备注中 WR 存区间点数) + const string comment = PositionGetString(POSITION_COMMENT); + const double stop_loss_amount = StopLossAmountFromPositionComment(comment); // 计算浮盈 double profit_amount = 0; diff --git a/20260516-突破策略/README.md b/20260516-突破策略/README.md index e18d257..bd5ae8a 100644 --- a/20260516-突破策略/README.md +++ b/20260516-突破策略/README.md @@ -13,44 +13,68 @@ ## 核心概念 - 突破K线:开盘价在均线下方,收盘价在均线上方,称之为多单突破K线,反之亦然 - 极值点:相邻两根突破K线之间所有K线(包括突破K线)中的最高价或最低价称之为极值点 -- 有效波段:相邻两个极值点的价差达到波段阈值点数时,期间的所有K线(包含突破K线本身)组成的行情,称之为有效波段 +- 有效波段:相邻两个极值点的价差达到波段阈值点数,且**两极值之间至少包含 3 根 K 线**(含两端极值所在 K),期间所有 K 线组成有效波段 ## 开仓逻辑 -- 价格突破有效波段的高点开多单,价格突破有效波点的低点开空单 -- 该开仓逻辑仅适用最新的一个有效波段 -- 止损和止盈基于开仓价的百分比计算,止盈 = 止损金额 × 盈亏比 -- 浮盈达到止损金额后,即可将止损移动至成本价 +- 识别最新有效波段后,在**波段高点挂 BUY STOP**、**波段低点挂 SELL STOP**(突破触发) +- 挂单时一并设置 SL/TP(固定止损/止盈点数) +- 该逻辑仅适用最新的一个有效波段;换波段时撤销旧挂单并重挂 +- 价格已越过极值(无法挂 STOP)时暂不挂单,等高/低侧标记使用后等待新波段 +- 浮盈达到止损点数对应距离后,即可将止损移动至成本价 - 已经开仓后,继续监控新的有效波段突破,每单开仓后就与有效波段无关了 +## 参数默认值对照表 + +| 分组 | 参数 | 默认 | +|------|------|------| +| 波段 | K线周期 / MA周期 | M1 / 14 | +| 波段 | 最小/最大波段% | 0.1 / **10** | +| 波段 | 反向突破容忍度% / 最少K线 | 0 / **3** | +| 风险 | 止损/止盈点数 | **200** / **300** | +| 风险 | 移动止损 | **true** | +| 仓位 | 手数模式 | **结余风险比例** | +| 仓位 | 固定手数 / 风险% | 0.01 / **5** | +| 仓位 | 单笔最大手数 / 最大持仓笔数 | 99 / 99 | +| 仓位 | 单方向最多一单 | **true** | +| 保护 | 连亏冷冻次数 / 冷冻K线 | 3 / 60 | +| 调试 | 调试信息 / 极值标记 / Magic / 禁手工单 | false / **true** / 20260516 / **true** | + ## 参数设置 ### 波段识别参数 - K线周期:支持参数设置,不跟随图表,默认 **1 Minute** - MA周期:默认 **14** -- **最小波段阈值百分比:默认 0.1%**(波段必须 >= 此值才可能是有效波段) -- **最大波段阈值百分比:默认 1.0%**(波段必须 <= 此值才可能是有效波段) -- **有效波段范围:0.1% - 1.0%**(只交易此范围内的波段) -- **反向突破容忍度:默认0.0%(新功能 - 详见下方说明)** +- **最小波段阈值百分比:默认 0.1%** +- **最大波段阈值百分比:默认 10%** +- **有效波段范围:0.1% - 10%** +- **有效波段最少 K 线数:默认 3** +- **反向突破容忍度:默认 0%** ### 风险管理参数 -- 止损百分比:默认 **0.05%**(基于开仓价计算,最小1美元/100点) -- 盈亏比:默认 **1.5**(止盈 = 止损金额 × 盈亏比) -- 使用移动止损:默认 **false**(禁用移动止损功能) -- 最大持仓时间:默认 **5分钟** +- 止损点数:默认 **200** +- 止盈点数:默认 **300** +- 使用移动止损:默认 **true**(浮盈达止损点数后移至成本价) ### 仓位管理参数 -- 使用复利模式:默认 **true**(启用复利模式) +- 手数模式:默认 **结余风险比例 RiskPercent**(可选固定手数) - 固定手数:默认 **0.01手** -- 每500$开仓手数:默认 **0.05手**(复利模式有效) -- 最大开仓手数:默认 **99手** -- 单方向最多持有一单:默认 **true**(每个方向最多持有1单) +- 每笔风险占结余%:默认 **5%** +- 单笔最大手数:默认 **99手** +- 最大持仓笔数:默认 **99** +- 单方向最多持有一单:默认 **true** + +**RiskPercent 手数公式:** +`风险金额 = 结余 × 风险%`;`手数 = 风险金额 ÷ (止损点数对应的每手亏损)` ### 连续亏损保护参数 -- 连续亏损次数触发冷冻:默认 **3**(设为0可禁用该功能) -- 冷冻K线根数:默认 **60**(设为0可禁用该功能) +- 连续亏损次数触发冷冻:默认 **3** +- 冷冻K线根数:默认 **60** -### 手工单管理参数 -- 禁止手工单:默认 **true**(自动平掉所有手工单) +### 调试选项 +- 显示调试信息:默认 **false** +- 显示极值点标记:默认 **true** +- EA魔术号:默认 **20260516** +- 禁止手工单:默认 **true** ## 补充说明 @@ -59,6 +83,8 @@ - 多头有效波段之间,仅允许出现一个多单突破K线和一个空单突破K线,反之亦然 ### 有效波段规则 +- 相邻极值点价差须在最小~最大波段阈值范围内 +- 两极值点之间(含两端极值所在 K)**至少 3 根 K 线**,否则不构成有效波段 - 一个有效波段只能开一单(无论是高点还是低点) - 开仓后该波段立即失效 - 必须等新的有效波段形成才能再次开仓 @@ -67,12 +93,8 @@ 此参数用于控制同一方向的持仓数量,避免单边风险过大。 **参数说明:** -- **false(默认)**:允许同方向开多单,仅受"最大开仓手数"限制 - - 例如:最大开仓手数=3时,可以同时持有3个多单,或3个空单,或2多1空等 -- **true**:每个方向最多持有1单 - - 多单方向:最多持有1个多单 - - 空单方向:最多持有1个空单 - - 最多同时持有1多+1空=2单 +- **false**:允许同方向开多单,仅受「单笔最大手数」「最大持仓笔数」限制 +- **true(默认)**:每个方向最多持有 1 单(最多 1 多 + 1 空) **使用场景:** - **保守型交易者**:建议设置为 **true** @@ -342,12 +364,12 @@ #### 示例说明 假设设置: - 最小阈值:0.1% -- 最大阈值:1.0% +- 最大阈值:10% - 当前价格:2600 **价格2600时的阈值范围:** - 最小阈值 = 2600 × 0.1% = 2.6美元(260点) -- 最大阈值 = 2600 × 1.0% = 26美元(2600点) +- 最大阈值 = 2600 × 10% = 260美元(26000点) **波段筛选结果:** - 波段 2.0美元(200点):< 最小阈值 → ❌ 不交易(波段太小) @@ -357,44 +379,18 @@ **价格4700时的阈值范围:** - 最小阈值 = 4700 × 0.1% = 4.7美元(470点) -- 最大阈值 = 4700 × 1.0% = 47美元(4700点) +- 最大阈值 = 4700 × 10% = 470美元(47000点) #### 参数调整建议 -- **保守型**:0.15% - 0.5%(只交易中小波段) -- **标准型**:0.1% - 1.0%(默认,覆盖大多数波段) -- **激进型**:0.08% - 2.0%(交易范围更广) +- **保守型**:0.15% - 0.5% +- **标准型**:0.1% - 10%(默认) +- **激进型**:0.08% - 15% ### 止损止盈说明 -本策略使用**百分比模式**计算止损和止盈: +- **止损**:开仓价(或挂单触发价)± **止损点数** × Point +- **止盈**:开仓价(或挂单触发价)± **止盈点数** × Point +- **移动止损**(可选):浮盈 ≥ 止损点数对应的价格距离时,将止损移至成本价(仅一次) -- **止损计算**:止损金额 = MAX(开仓价 × 止损百分比, 1美元) - - 示例1(高价位):开仓价2600,止损0.05%,计算值 = 2600 × 0.05% = 1.3美元 > 1美元,使用1.3美元 - - 多单止损价 = 2600 - 1.3 = 2598.7 - - 空单止损价 = 2600 + 1.3 = 2601.3 - - 示例2(低价位):开仓价1500,止损0.05%,计算值 = 1500 × 0.05% = 0.75美元 < 1美元,使用最小值1美元 - - 多单止损价 = 1500 - 1 = 1499.0 - - 空单止损价 = 1500 + 1 = 1501.0 - -- **止盈计算**:止盈金额 = 止损金额 × 盈亏比 - - 示例1:止损金额1.3美元,盈亏比1.5,止盈金额 = 1.3 × 1.5 = 1.95美元 - - 多单止盈价 = 2600 + 1.95 = 2601.95 - - 空单止盈价 = 2600 - 1.95 = 2598.05 - - 示例2:止损金额1美元,盈亏比1.5,止盈金额 = 1 × 1.5 = 1.5美元 - - 多单止盈价 = 1500 + 1.5 = 1501.5 - - 空单止盈价 = 1500 - 1.5 = 1498.5 - -- **移动止损**(可选功能,默认启用): - - **触发条件**:当浮盈 >= 止损金额时触发 - - **移动目标**:将止损移至成本价(开仓价) - - **移动次数**:仅移动一次(保本策略) - - **示例**:开仓价2603.24,止损金额1.30美元 - - 当价格涨至2604.54(浮盈1.30)时,止损从2601.94移至2603.24 - - 之后价格无论涨到多高,止损都保持在2603.24 - - 即使回调至成本价,也能保本离场,不会亏损 - - **开关控制**:可通过参数"使用移动止损"关闭此功能 - -- **最小止损保护**:无论百分比设置多小,止损金额始终不低于1美元(100点),避免止损过小导致频繁触发 - -- **移动止损的作用**: - - ✅ 启用时:浮盈达标后锁定盈亏平衡,避免盈利单变亏损 - - ❌ 禁用时:止损始终保持在初始位置,追求更高止盈,但风险更大 +示例(多单,触发价 2610,止损 200 点、止盈 300 点): +- 止损价 ≈ 2610 − 2.00 = **2608.00**(黄金 2 位小数时按品种 Point 换算) +- 止盈价 ≈ 2610 + 3.00 = **2613.00** diff --git a/20260519-突破策略/20260519_Breakout.mq5 b/20260519-突破策略/20260519_Breakout.mq5 deleted file mode 100644 index d2b1615..0000000 --- a/20260519-突破策略/20260519_Breakout.mq5 +++ /dev/null @@ -1,1555 +0,0 @@ -//+------------------------------------------------------------------+ -//| 20260516_Trade.mq5 | -//| 突破交易策略 - 完整交易版本 | -//+------------------------------------------------------------------+ -#property copyright "Breakout Strategy" -#property version "1.00" -#property strict - -#include - -//+------------------------------------------------------------------+ -//| 输入参数 | -//+------------------------------------------------------------------+ -input group "=== 波段识别参数 ===" -input ENUM_TIMEFRAMES InpTimeframe = PERIOD_M1; // K线周期 -input int InpMAPeriod = 14; // MA周期 -input double InpMinWavePercent = 0.1; // 最小波段阈值百分比(%) -input double InpMaxWavePercent = 1.0; // 最大波段阈值百分比(%) -input double InpPullbackTolerance = 0.0; // 反向突破容忍度(%) 0=不容忍 - -input group "=== 风险管理参数 ===" -input double InpStopLossPercent = 0.02; // 止损百分比(%) -input int InpMinStopLossPoints = 10; // 最小止损点数 -input double InpRiskRewardRatio = 1.2; // 盈亏比 -input bool InpUseTrailingStop = false; // 使用移动止损 - -input group "=== 仓位管理参数 ===" -input bool InpUseCompounding = true; // 使用复利模式 -input double InpFixedLots = 0.01; // 固定手数 -input double InpLotsPer500 = 0.05; // 每500$开仓手数(复利模式) -input int InpMaxPositions = 99; // 最大开仓手数 -input bool InpOnePositionPerDirection = true; // 单方向最多持有一单 - -input group "=== 连续亏损保护 ===" -input int InpConsecutiveLosses = 3; // 连续亏损次数触发冷冻(0=禁用) -input int InpFreezeBarCount = 60; // 冷冻K线根数(0=禁用) - -input group "=== 补偿机制参数 ===" -input bool InpEnableCompensation = true; // 启用补偿机制 -input int InpMinCompensationQueueSize = 1; // 补偿队列最小长度(>=此值才开补偿单) -input double InpMaxCompensationLots = 5.0; // 补偿单最大手数 -input int InpCompensationStopLossPips = 100; // 补偿单止损点数 -input int InpMaxCompensationTakeProfitPips = 300; // 补偿单最大止盈点数 -input int InpMaxConsecutiveCompensations = 5; // 连续补偿次数限制(超过则重置) - -input group "=== 调试选项 ===" -input bool InpShowDebugInfo = false; // 显示调试信息 -input bool InpShowMarkers = true; // 显示极值点标记 -input int InpMagicNumber = 20260516; // EA魔术号 -input bool InpCloseManualOrders = true; // 禁止手工单(自动平掉) - -//+------------------------------------------------------------------+ -//| 全局变量 | -//+------------------------------------------------------------------+ -int ma_handle; // MA指标句柄 -CTrade trade; // 交易对象 - -// 最新有效波段信息 -struct ValidWaveInfo { - bool exists; // 是否存在有效波段 - double high_price; // 高点价格 - double low_price; // 低点价格 - datetime update_time; // 更新时间 - bool high_used; // 高点是否已使用 - bool low_used; // 低点是否已使用 -}; - -ValidWaveInfo latest_wave; // 最新有效波段 - -// 连续亏损保护相关变量 -int consecutive_loss_count = 0; // 连续亏损计数器 -datetime freeze_until_time = 0; // 冷冻结束时间(0表示未冷冻) -int freeze_bar_index = 0; // 冷冻起始K线索引 - -// 极值点结构体定义 -struct ExtremePoint { - datetime time; - double price; - int type; - bool is_valid; -}; - -// 补偿队列项结构体定义 -struct CompensationItem { - int ticket; // 订单号 - double loss; // 亏损金额(正数,美元) - double lots; // 手数 - double stopLossAmount;// 止损金额(正数,美元) - int direction; // 方向(1=多单,-1=空单) - datetime closeTime; // 平仓时间 -}; - -// 补偿机制全局变量 -CompensationItem g_compensationQueue[]; // 补偿队列(待处理) -CompensationItem g_currentCompensationSnapshot[];// 当前补偿单对应的队列快照 -int g_currentCompensationTicket = -1; // 当前补偿单ticket(-1表示无补偿单) -int g_consecutiveCompensationCount = 0; // 连续补偿计数器 - -// 函数声明 -void UpdateLatestValidWave(); -void DrawExtremeMarkers(ExtremePoint &extremes[]); -void DrawLatestValidWave(double high_price, datetime high_time, double low_price, datetime low_time); -int CheckBreakout(int index, const MqlRates &rates[], const double &ma[]); -void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], - const MqlRates &rates[], int &filtered_bars[], int &filtered_types[]); -void CheckOpenSignals(); -bool OpenPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, double threshold_points); -double CalculateLotSize(); -void ManagePositions(); -void CheckTrailingStop(ulong ticket); -void CheckAndCloseManualOrders(); - -// 补偿机制函数声明 -void AddToCompensationQueue(ulong ticket); -bool OpenCompensationOrder(); -void CheckCompensationOrderStatus(); -void ClearCompensationQueue(); - -//+------------------------------------------------------------------+ -//| Expert initialization function | -//+------------------------------------------------------------------+ -int OnInit() -{ - // 创建MA指标(使用指定的K线周期) - ma_handle = iMA(_Symbol, InpTimeframe, InpMAPeriod, 0, MODE_SMA, PRICE_CLOSE); - if(ma_handle == INVALID_HANDLE) { - Print("创建MA指标失败"); - return(INIT_FAILED); - } - - // 设置交易参数 - trade.SetExpertMagicNumber(InpMagicNumber); - trade.SetDeviationInPoints(10); - trade.SetTypeFilling(ORDER_FILLING_IOC); - - // 初始化最新有效波段 - latest_wave.exists = false; - latest_wave.high_price = 0; - latest_wave.low_price = 0; - latest_wave.update_time = 0; - latest_wave.high_used = false; - latest_wave.low_used = false; - - Print("========================================"); - Print("突破交易策略EA初始化成功"); - Print("品种:", _Symbol); - Print("K线周期:", EnumToString(InpTimeframe)); - Print("MA周期:", InpMAPeriod); - Print("波段阈值范围: ", InpMinWavePercent, "% - ", InpMaxWavePercent, "%"); - if(InpPullbackTolerance > 0) - Print("反向突破容忍度: ", DoubleToString(InpPullbackTolerance, 1), "% (启用)"); - else - Print("反向突破容忍度: 0% (禁用 - 保持原有逻辑)"); - Print("止损:", InpStopLossPercent, "% (最小", InpMinStopLossPoints, "点) | 盈亏比:", InpRiskRewardRatio); - Print("移动止损:", (InpUseTrailingStop ? "启用" : "禁用")); - Print("最大开仓手数:", InpMaxPositions); - Print("单方向持仓限制:", (InpOnePositionPerDirection ? "启用 (每方向最多1单)" : "禁用")); - if(InpConsecutiveLosses > 0 && InpFreezeBarCount > 0) - Print("连续亏损保护: 启用 (", InpConsecutiveLosses, "次亏损→冷冻", InpFreezeBarCount, "根K线)"); - else - Print("连续亏损保护: 禁用"); - Print("手数模式:", (InpUseCompounding ? "复利" : "固定"), - InpUseCompounding ? StringFormat(" (每500$开%.2f手)", InpLotsPer500) : StringFormat(" (%.2f手)", InpFixedLots)); - Print("禁止手工单:", (InpCloseManualOrders ? "启用 (自动平掉手工单)" : "禁用")); - if(InpEnableCompensation) - Print("补偿机制: 启用 (队列最小长度:", InpMinCompensationQueueSize, - " 最大手数:", InpMaxCompensationLots, - " 止损:", InpCompensationStopLossPips, "点", - " 最大止盈:", InpMaxCompensationTakeProfitPips, "点", - " 连续限制:", InpMaxConsecutiveCompensations, "次)"); - else - Print("补偿机制: 禁用"); - Print("========================================"); - - return(INIT_SUCCEEDED); -} - -//+------------------------------------------------------------------+ -//| Expert deinitialization function | -//+------------------------------------------------------------------+ -void OnDeinit(const int reason) -{ - if(ma_handle != INVALID_HANDLE) - IndicatorRelease(ma_handle); - - // 删除所有标记 - ObjectsDeleteAll(0, "ValidWave_"); - - Print("突破交易策略EA已卸载"); -} - -//+------------------------------------------------------------------+ -//| 交易事务处理函数 - 用于检测亏损单 | -//+------------------------------------------------------------------+ -void OnTradeTransaction(const MqlTradeTransaction& trans, - const MqlTradeRequest& request, - const MqlTradeResult& result) -{ - // 只在功能启用时处理 - if(InpConsecutiveLosses <= 0 || InpFreezeBarCount <= 0) - return; - - // 只处理订单成交事件 - if(trans.type != TRADE_TRANSACTION_DEAL_ADD) - return; - - // 需要先选择历史记录 - if(!HistorySelect(0, TimeCurrent())) - return; - - // 获取最新的Deal - int total_deals = HistoryDealsTotal(); - if(total_deals <= 0) - return; - - ulong deal_ticket = HistoryDealGetTicket(total_deals - 1); - if(deal_ticket == 0) - return; - - // 检查魔术号 - long deal_magic = HistoryDealGetInteger(deal_ticket, DEAL_MAGIC); - if(deal_magic != InpMagicNumber) - return; - - // 检查是否是平仓交易 - ENUM_DEAL_ENTRY entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket, DEAL_ENTRY); - if(entry != DEAL_ENTRY_OUT) - return; - - // 获取交易详情 - double profit = HistoryDealGetDouble(deal_ticket, DEAL_PROFIT); - double commission = HistoryDealGetDouble(deal_ticket, DEAL_COMMISSION); - double swap = HistoryDealGetDouble(deal_ticket, DEAL_SWAP); - double net_profit = profit + commission + swap; - - // 获取持仓ID用于补偿机制 - long position_id = HistoryDealGetInteger(deal_ticket, DEAL_POSITION_ID); - - // 获取平仓原因 - ENUM_DEAL_REASON reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket, DEAL_REASON); - - // 判断是亏损还是盈利(基于是否触发止损) - if(reason == DEAL_REASON_SL) - { - // 检查是否是补偿单(补偿单不计入连续亏损统计) - string comment = HistoryDealGetString(deal_ticket, DEAL_COMMENT); - bool is_compensation = (StringFind(comment, "[补偿单]") >= 0); - - if(!is_compensation) - { - // 只有正常单亏损才增加计数器 - consecutive_loss_count++; - Print("【连续亏损保护】正常单亏损 ", consecutive_loss_count, "/", InpConsecutiveLosses, - " | 净亏损: $", DoubleToString(net_profit, 2)); - - // 检查是否达到冷冻阈值 - if(consecutive_loss_count >= InpConsecutiveLosses) - { - // 进入冷冻期 - freeze_bar_index = Bars(_Symbol, InpTimeframe) + InpFreezeBarCount; - freeze_until_time = TimeCurrent(); - - Print("!!! 触发交易冷冻 !!! 冷冻", InpFreezeBarCount, "根K线"); - } - } - else - { - Print("【补偿机制】补偿单亏损 - 不计入连续亏损统计 | 净亏损: $", DoubleToString(net_profit, 2)); - } - - // 补偿机制:将亏损单加入补偿队列(正常单和补偿单都加入) - if(InpEnableCompensation) - { - AddToCompensationQueue(position_id); - } - } - else if(reason == DEAL_REASON_TP) - { - // 检查是否是补偿单 - string comment = HistoryDealGetString(deal_ticket, DEAL_COMMENT); - bool is_compensation = (StringFind(comment, "[补偿单]") >= 0); - - if(!is_compensation) - { - // 只有正常单盈利才重置计数器 - if(consecutive_loss_count > 0) - { - Print("【连续亏损保护】正常单止盈 - 计数器重置: ", consecutive_loss_count, " → 0 | 净盈利: $", DoubleToString(net_profit, 2)); - consecutive_loss_count = 0; - } - } - else - { - Print("【补偿机制】补偿单止盈 - 不影响连续亏损计数器 | 净盈利: $", DoubleToString(net_profit, 2)); - } - } -} - -//+------------------------------------------------------------------+ -//| Expert tick function | -//+------------------------------------------------------------------+ -void OnTick() -{ - // 1. 检查并关闭手工单(如果启用) - if(InpCloseManualOrders) - CheckAndCloseManualOrders(); - - // 2. 检查补偿单状态(优先处理补偿机制) - if(InpEnableCompensation) - CheckCompensationOrderStatus(); - - // 3. 更新最新有效波段 - UpdateLatestValidWave(); - - // 4. 检查开仓信号 - CheckOpenSignals(); - - // 5. 管理已有持仓 - ManagePositions(); -} - -//+------------------------------------------------------------------+ -//| 更新最新有效波段 | -//+------------------------------------------------------------------+ -void UpdateLatestValidWave() -{ - int bars = Bars(_Symbol, InpTimeframe); - if(bars < InpMAPeriod + 2) - return; - - // 限制处理的K线数量 - int process_bars = MathMin(bars, 500); - - // 获取价格数据(使用指定的K线周期) - MqlRates rates[]; - ArraySetAsSeries(rates, true); - if(CopyRates(_Symbol, InpTimeframe, 0, process_bars, rates) <= 0) - return; - - // 获取MA数据 - double ma_array[]; - ArraySetAsSeries(ma_array, true); - if(CopyBuffer(ma_handle, 0, 0, process_bars, ma_array) <= 0) - return; - - // 识别突破K线 - int breakout_bars[]; - int breakout_types[]; - ArrayResize(breakout_bars, 0); - ArrayResize(breakout_types, 0); - - for(int i = process_bars - InpMAPeriod - 1; i >= 1; i--) { - int breakout_type = CheckBreakout(i, rates, ma_array); - if(breakout_type != 0) { - int size = ArraySize(breakout_bars); - ArrayResize(breakout_bars, size + 1); - ArrayResize(breakout_types, size + 1); - breakout_bars[size] = i; - breakout_types[size] = breakout_type; - } - } - - // 过滤连续同向突破 - int filtered_bars[]; - int filtered_types[]; - FilterBreakouts(breakout_bars, breakout_types, rates, filtered_bars, filtered_types); - - // 计算极值点(支持反向突破容忍度) - ExtremePoint extremes[]; - ArrayResize(extremes, 0); - - // 如果容忍度为0,使用原有逻辑(相邻突破K线之间的极值) - if(InpPullbackTolerance <= 0.0) - { - for(int i = 0; i < ArraySize(filtered_bars) - 1; i++) { - int current_bar = filtered_bars[i]; - int current_type = filtered_types[i]; - int next_bar = filtered_bars[i + 1]; - - double extreme_price = 0; - datetime extreme_time = 0; - - if(current_type == 1) { - extreme_price = rates[current_bar].high; - extreme_time = rates[current_bar].time; - for(int j = current_bar; j >= next_bar; j--) { - if(rates[j].high > extreme_price) { - extreme_price = rates[j].high; - extreme_time = rates[j].time; - } - } - } else { - extreme_price = rates[current_bar].low; - extreme_time = rates[current_bar].time; - for(int j = current_bar; j >= next_bar; j--) { - if(rates[j].low < extreme_price) { - extreme_price = rates[j].low; - extreme_time = rates[j].time; - } - } - } - - int size = ArraySize(extremes); - ArrayResize(extremes, size + 1); - extremes[size].time = extreme_time; - extremes[size].price = extreme_price; - extremes[size].type = current_type; - extremes[size].is_valid = false; - } - } - else - { - // 容忍模式:跨越反向突破K线计算波段 - for(int i = 0; i < ArraySize(filtered_bars); i++) { - int start_bar = filtered_bars[i]; - int start_type = filtered_types[i]; - - double wave_high = rates[start_bar].high; - double wave_low = rates[start_bar].low; - datetime wave_high_time = rates[start_bar].time; - datetime wave_low_time = rates[start_bar].time; - int end_bar = 0; - bool wave_terminated = false; - - // 向后扫描,直到遇到不可容忍的反向突破 - for(int j = i + 1; j < ArraySize(filtered_bars); j++) { - int current_bar = filtered_bars[j]; - int current_type = filtered_types[j]; - - // 更新波段的高低点 - if(rates[current_bar].high > wave_high) { - wave_high = rates[current_bar].high; - wave_high_time = rates[current_bar].time; - } - if(rates[current_bar].low < wave_low) { - wave_low = rates[current_bar].low; - wave_low_time = rates[current_bar].time; - } - - // 检查中间所有K线的极值 - int prev_bar = (j > 0) ? filtered_bars[j-1] : start_bar; - for(int k = prev_bar; k >= current_bar; k--) { - if(rates[k].high > wave_high) { - wave_high = rates[k].high; - wave_high_time = rates[k].time; - } - if(rates[k].low < wave_low) { - wave_low = rates[k].low; - wave_low_time = rates[k].time; - } - } - - // 如果遇到反向突破K线,检查回撤是否可容忍 - if(current_type != start_type) { - double wave_range = wave_high - wave_low; - double pullback_percent = 0; - - if(start_type == 1) { - // 多头波段遇到空单突破K线 - pullback_percent = ((wave_high - rates[current_bar].close) / wave_range) * 100.0; - } else { - // 空头波段遇到多单突破K线 - pullback_percent = ((rates[current_bar].close - wave_low) / wave_range) * 100.0; - } - - if(pullback_percent > InpPullbackTolerance) { - // 回撤超过容忍度,终止波段 - end_bar = current_bar; - wave_terminated = true; - break; - } - // 否则继续,忽略此反向突破 - } - } - - // 添加极值点 - if(start_type == 1) { - // 多头波段:先低点后高点 - int size = ArraySize(extremes); - ArrayResize(extremes, size + 1); - extremes[size].time = wave_low_time; - extremes[size].price = wave_low; - extremes[size].type = -1; // 低点 - extremes[size].is_valid = false; - - ArrayResize(extremes, size + 2); - extremes[size + 1].time = wave_high_time; - extremes[size + 1].price = wave_high; - extremes[size + 1].type = 1; // 高点 - extremes[size + 1].is_valid = false; - } else { - // 空头波段:先高点后低点 - int size = ArraySize(extremes); - ArrayResize(extremes, size + 1); - extremes[size].time = wave_high_time; - extremes[size].price = wave_high; - extremes[size].type = 1; // 高点 - extremes[size].is_valid = false; - - ArrayResize(extremes, size + 2); - extremes[size + 1].time = wave_low_time; - extremes[size + 1].price = wave_low; - extremes[size + 1].type = -1; // 低点 - extremes[size + 1].is_valid = false; - } - - // 如果波段被终止,跳到终止点继续 - if(wave_terminated) { - // 找到end_bar在filtered_bars中的索引 - for(int k = i + 1; k < ArraySize(filtered_bars); k++) { - if(filtered_bars[k] == end_bar) { - i = k - 1; // -1因为循环会++ - break; - } - } - } else { - // 波段延续到最后 - break; - } - } - } - - // 判断有效波段并标记 - for(int i = 1; i < ArraySize(extremes); i++) { - double price_diff = MathAbs(extremes[i].price - extremes[i-1].price); - double price_diff_points = price_diff / _Point; - - // 计算阈值(百分比模式:以前一个极值点价格为基准计算百分比) - double base_price = extremes[i-1].price; - double min_threshold = (base_price * InpMinWavePercent / 100.0) / _Point; - double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; - - // 波段必须在最小和最大阈值之间才是有效波段 - if(price_diff_points >= min_threshold && price_diff_points <= max_threshold) { - extremes[i-1].is_valid = true; - extremes[i].is_valid = true; - } - } - - // 绘制所有极值点标记 - if(InpShowMarkers) { - DrawExtremeMarkers(extremes); - } - - // 查找最新的有效波段 - for(int i = ArraySize(extremes) - 1; i >= 1; i--) { - double price_diff = MathAbs(extremes[i].price - extremes[i-1].price); - double price_diff_points = price_diff / _Point; - - // 计算阈值(百分比模式) - double base_price = extremes[i-1].price; - double min_threshold = (base_price * InpMinWavePercent / 100.0) / _Point; - double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; - - // 波段必须在最小和最大阈值之间才是有效波段 - if(price_diff_points >= min_threshold && price_diff_points <= max_threshold) { - // 找到最新的有效波段 - double high = MathMax(extremes[i].price, extremes[i-1].price); - double low = MathMin(extremes[i].price, extremes[i-1].price); - datetime high_time = (extremes[i].price > extremes[i-1].price) ? extremes[i].time : extremes[i-1].time; - datetime low_time = (extremes[i].price < extremes[i-1].price) ? extremes[i].time : extremes[i-1].time; - - // 检查是否是新的波段 - if(latest_wave.exists == false || - extremes[i].time > latest_wave.update_time || - high != latest_wave.high_price || - low != latest_wave.low_price) { - - latest_wave.exists = true; - latest_wave.high_price = high; - latest_wave.low_price = low; - latest_wave.update_time = extremes[i].time; - latest_wave.high_used = false; // 新波段,重置使用状态 - latest_wave.low_used = false; - - // 绘制最新有效波段 - if(InpShowMarkers) { - DrawLatestValidWave(high, high_time, low, low_time); - } - - if(InpShowDebugInfo) { - Print("更新最新有效波段 - 高:", DoubleToString(high, _Digits), - " 低:", DoubleToString(low, _Digits), - " 价差:", (int)price_diff_points, "点", - " 阈值范围:", StringFormat("%.2f%%-%.2f%% (%.0f-%.0f点)", - InpMinWavePercent, InpMaxWavePercent, min_threshold, max_threshold)); - } - } - break; - } - } -} - -//+------------------------------------------------------------------+ -//| 绘制所有极值点标记 | -//+------------------------------------------------------------------+ -void DrawExtremeMarkers(ExtremePoint &extremes[]) -{ - // 删除旧的标记 - ObjectsDeleteAll(0, "ValidWave_Extreme_"); - - for(int i = 0; i < ArraySize(extremes); i++) { - string obj_name = "ValidWave_Extreme_" + IntegerToString(i); - - if(extremes[i].type == 1) { - // 高点 - 画下箭头 - ObjectCreate(0, obj_name, OBJ_ARROW, 0, extremes[i].time, extremes[i].price); - ObjectSetInteger(0, obj_name, OBJPROP_ARROWCODE, 234); - ObjectSetInteger(0, obj_name, OBJPROP_COLOR, extremes[i].is_valid ? clrRed : clrDarkRed); - ObjectSetInteger(0, obj_name, OBJPROP_WIDTH, extremes[i].is_valid ? 3 : 1); - ObjectSetInteger(0, obj_name, OBJPROP_ANCHOR, ANCHOR_BOTTOM); - } else { - // 低点 - 画上箭头 - ObjectCreate(0, obj_name, OBJ_ARROW, 0, extremes[i].time, extremes[i].price); - ObjectSetInteger(0, obj_name, OBJPROP_ARROWCODE, 233); - ObjectSetInteger(0, obj_name, OBJPROP_COLOR, extremes[i].is_valid ? clrLime : clrDarkGreen); - ObjectSetInteger(0, obj_name, OBJPROP_WIDTH, extremes[i].is_valid ? 3 : 1); - ObjectSetInteger(0, obj_name, OBJPROP_ANCHOR, ANCHOR_TOP); - } - } -} - -//+------------------------------------------------------------------+ -//| 绘制最新有效波段 | -//+------------------------------------------------------------------+ -void DrawLatestValidWave(double high_price, datetime high_time, double low_price, datetime low_time) -{ - // 删除旧的最新波段标记 - ObjectDelete(0, "ValidWave_Latest_High"); - ObjectDelete(0, "ValidWave_Latest_Low"); - ObjectDelete(0, "ValidWave_Latest_Line"); - - // 标记最新有效波段的高点(更大更亮的箭头) - ObjectCreate(0, "ValidWave_Latest_High", OBJ_ARROW, 0, high_time, high_price); - ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_ARROWCODE, 234); - ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_COLOR, clrYellow); - ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_WIDTH, 4); - ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_ANCHOR, ANCHOR_BOTTOM); - - // 标记最新有效波段的低点 - ObjectCreate(0, "ValidWave_Latest_Low", OBJ_ARROW, 0, low_time, low_price); - ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_ARROWCODE, 233); - ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_COLOR, clrYellow); - ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_WIDTH, 4); - ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_ANCHOR, ANCHOR_TOP); - - // 绘制连接线 - ObjectCreate(0, "ValidWave_Latest_Line", OBJ_TREND, 0, high_time, high_price, low_time, low_price); - ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_COLOR, clrYellow); - ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_WIDTH, 2); - ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_STYLE, STYLE_SOLID); - ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_RAY_RIGHT, false); - ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_BACK, true); -} - -//+------------------------------------------------------------------+ -//| 检查是否是突破K线 | -//+------------------------------------------------------------------+ -int CheckBreakout(int index, const MqlRates &rates[], const double &ma[]) -{ - if(rates[index].open < ma[index] && rates[index].close > ma[index]) - return 1; - if(rates[index].open > ma[index] && rates[index].close < ma[index]) - return -1; - return 0; -} - -//+------------------------------------------------------------------+ -//| 过滤连续同向突破 | -//+------------------------------------------------------------------+ -void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], - const MqlRates &rates[], int &filtered_bars[], int &filtered_types[]) -{ - int total = ArraySize(breakout_bars); - ArrayResize(filtered_bars, 0); - ArrayResize(filtered_types, 0); - - for(int i = 0; i < total; i++) { - int current_bar = breakout_bars[i]; - int current_type = breakout_types[i]; - - bool skip = false; - for(int j = i + 1; j < total; j++) { - if(breakout_types[j] != current_type) - break; - - if(current_type == 1) { - if(rates[breakout_bars[j]].low < rates[current_bar].low) { - skip = true; - break; - } - } else { - if(rates[breakout_bars[j]].high > rates[current_bar].high) { - skip = true; - break; - } - } - } - - if(!skip) { - int size = ArraySize(filtered_bars); - ArrayResize(filtered_bars, size + 1); - ArrayResize(filtered_types, size + 1); - filtered_bars[size] = current_bar; - filtered_types[size] = current_type; - } - } -} - -//+------------------------------------------------------------------+ -//| 检查开仓信号 | -//+------------------------------------------------------------------+ -void CheckOpenSignals() -{ - if(!latest_wave.exists) - return; - - // 检查是否处于冷冻期 - if(InpConsecutiveLosses > 0 && InpFreezeBarCount > 0 && freeze_bar_index > 0) - { - int current_bars = Bars(_Symbol, InpTimeframe); - if(current_bars < freeze_bar_index) - { - // 仍在冷冻期内 - 静默拒绝开仓 - return; - } - else - { - // 冷冻期结束 - if(freeze_bar_index > 0) - { - Print("【连续亏损保护】冷冻解除,恢复交易"); - consecutive_loss_count = 0; - freeze_bar_index = 0; - freeze_until_time = 0; - } - } - } - - // 检查当前持仓数量和方向 - int total_positions = 0; - int buy_positions = 0; // 多单数量 - int sell_positions = 0; // 空单数量 - - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - total_positions++; - - // 统计各方向持仓数量 - ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); - if(pos_type == POSITION_TYPE_BUY) - buy_positions++; - else if(pos_type == POSITION_TYPE_SELL) - sell_positions++; - } - - if(total_positions >= InpMaxPositions) { - if(InpShowDebugInfo) - Print("已达最大持仓数量限制: ", total_positions, "/", InpMaxPositions); - return; - } - - double current_price = SymbolInfoDouble(_Symbol, SYMBOL_BID); - - // 计算当前波段的实际阈值(百分比模式:取高低点的平均值作为基准) - double base_price = (latest_wave.high_price + latest_wave.low_price) / 2.0; - double wave_threshold_points = (base_price * InpMinWavePercent / 100.0) / _Point; - - // 检查多单信号:突破高点(且该高点未使用过) - if(!latest_wave.high_used && current_price > latest_wave.high_price) { - // 如果启用了单方向持仓限制,检查多单数量 - if(InpOnePositionPerDirection && buy_positions >= 1) { - if(InpShowDebugInfo) - Print("多单信号被忽略 - 已有多单持仓: ", buy_positions); - } else { - if(InpShowDebugInfo) - Print("检测到多单信号 - 价格:", current_price, " 突破高点:", latest_wave.high_price); - - if(OpenPosition(ORDER_TYPE_BUY, latest_wave.high_price, latest_wave.low_price, wave_threshold_points)) { - latest_wave.high_used = true; // 标记高点已使用,该波段高点失效 - if(InpShowDebugInfo) - Print("高点已使用,等待新的有效波段"); - } - } - } - - // 检查空单信号:突破低点(且该低点未使用过) - if(!latest_wave.low_used && current_price < latest_wave.low_price) { - // 如果启用了单方向持仓限制,检查空单数量 - if(InpOnePositionPerDirection && sell_positions >= 1) { - if(InpShowDebugInfo) - Print("空单信号被忽略 - 已有空单持仓: ", sell_positions); - } else { - if(InpShowDebugInfo) - Print("检测到空单信号 - 价格:", current_price, " 突破低点:", latest_wave.low_price); - - if(OpenPosition(ORDER_TYPE_SELL, latest_wave.high_price, latest_wave.low_price, wave_threshold_points)) { - latest_wave.low_used = true; // 标记低点已使用,该波段低点失效 - if(InpShowDebugInfo) - Print("低点已使用,等待新的有效波段"); - } - } - } -} - -//+------------------------------------------------------------------+ -//| 开仓 | -//+------------------------------------------------------------------+ -bool OpenPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, double threshold_points) -{ - double lots = CalculateLotSize(); - if(lots <= 0) - return false; - - // 生成备注信息:盈亏比(止损点数会在设置SL后从历史记录计算) - string comment = StringFormat("R%.1f", InpRiskRewardRatio); - - bool result = false; - - // 先以市价开仓(不带SL/TP),成交后再根据实际成交价设置SL/TP - if(order_type == ORDER_TYPE_BUY) { - result = trade.Buy(lots, _Symbol, 0, 0, 0, comment); - } else { - result = trade.Sell(lots, _Symbol, 0, 0, 0, comment); - } - - if(!result) { - Print("开仓失败: ", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); - return false; - } - - // 等待持仓信息更新 - Sleep(100); - - // 通过符号和魔术号查找刚开的持仓 - ulong ticket = 0; - double open_price = 0; - - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - // 找到最新的持仓(没有SL/TP的) - if(PositionGetDouble(POSITION_SL) == 0 && PositionGetDouble(POSITION_TP) == 0) { - ticket = PositionGetTicket(i); - open_price = PositionGetDouble(POSITION_PRICE_OPEN); - break; - } - } - - if(ticket == 0) { - Print("无法找到刚开的持仓"); - return false; - } - - // 基于实际成交价计算止损金额 - double stop_loss_amount = open_price * InpStopLossPercent / 100.0; - - // 确保止损金额不小于最小止损点数 - double min_stop_loss = InpMinStopLossPoints * _Point; - if(stop_loss_amount < min_stop_loss) { - stop_loss_amount = min_stop_loss; - } - - // 获取平台的最小止损距离 - int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); - double min_stop_distance = stops_level * _Point; - - // 获取当前市场价格 - double current_bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - double current_ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - - double sl = 0, tp = 0; - - if(order_type == ORDER_TYPE_BUY) { - // 先标准化止损价 - sl = NormalizeDouble(open_price - stop_loss_amount, _Digits); - // 根据标准化后的实际止损金额重新计算止盈金额,确保盈亏比准确 - double actual_sl_amount = open_price - sl; - double take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price + take_profit_amount, _Digits); - - // 检查止损距离(多单检查与Bid的距离) - if(stops_level > 0 && (current_bid - sl) < min_stop_distance) { - sl = NormalizeDouble(current_bid - min_stop_distance, _Digits); - // 重新计算止盈 - actual_sl_amount = open_price - sl; - take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price + take_profit_amount, _Digits); - Print("止损距离不足,已调整 - 新止损:", sl); - } - - // 检查止盈距离 - if(stops_level > 0 && (tp - current_ask) < min_stop_distance) { - tp = NormalizeDouble(current_ask + min_stop_distance, _Digits); - Print("止盈距离不足,已调整 - 新止盈:", tp); - } - } else { - // 先标准化止损价 - sl = NormalizeDouble(open_price + stop_loss_amount, _Digits); - // 根据标准化后的实际止损金额重新计算止盈金额,确保盈亏比准确 - double actual_sl_amount = sl - open_price; - double take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price - take_profit_amount, _Digits); - - // 检查止损距离(空单检查与Ask的距离) - if(stops_level > 0 && (sl - current_ask) < min_stop_distance) { - sl = NormalizeDouble(current_ask + min_stop_distance, _Digits); - // 重新计算止盈 - actual_sl_amount = sl - open_price; - take_profit_amount = actual_sl_amount * InpRiskRewardRatio; - tp = NormalizeDouble(open_price - take_profit_amount, _Digits); - Print("止损距离不足,已调整 - 新止损:", sl); - } - - // 检查止盈距离 - if(stops_level > 0 && (current_bid - tp) < min_stop_distance) { - tp = NormalizeDouble(current_bid - min_stop_distance, _Digits); - Print("止盈距离不足,已调整 - 新止盈:", tp); - } - } - - // 修改持仓的SL/TP - if(!trade.PositionModify(ticket, sl, tp)) { - Print("修改SL/TP失败 - Ticket:", ticket, - " 错误码:", trade.ResultRetcode(), - " 描述:", trade.ResultRetcodeDescription(), - " 止损:", sl, " 止盈:", tp, - " 平台最小距离:", stops_level, "点"); - return false; - } - - Print(order_type == ORDER_TYPE_BUY ? "开多单成功" : "开空单成功", - " - 手数:", lots, - " 波段:H:", wave_high, " L:", wave_low, - " 实际成交价:", open_price, - " 止损:", sl, "(", InpStopLossPercent, "%)", - " 止盈:", tp, "(盈亏比", InpRiskRewardRatio, ")"); - - return true; -} - -//+------------------------------------------------------------------+ -//| 计算开仓手数 | -//+------------------------------------------------------------------+ -double CalculateLotSize() -{ - double lots = 0; - - if(InpUseCompounding) { - // 复利模式 - double balance = AccountInfoDouble(ACCOUNT_BALANCE); - lots = NormalizeDouble((balance / 500.0) * InpLotsPer500, 2); - } else { - // 固定手数模式 - lots = InpFixedLots; - } - - // 检查手数限制 - double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); - double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); - double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); - - if(lots < min_lot) lots = min_lot; - if(lots > max_lot) lots = max_lot; - - lots = MathFloor(lots / lot_step) * lot_step; - - return lots; -} - -//+------------------------------------------------------------------+ -//| 管理持仓 | -//+------------------------------------------------------------------+ -void ManagePositions() -{ - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - // 检查移动止损 - ulong ticket = PositionGetTicket(i); - CheckTrailingStop(ticket); - } -} - -//+------------------------------------------------------------------+ -//| 检查移动止损 | -//+------------------------------------------------------------------+ -void CheckTrailingStop(ulong ticket) -{ - // 如果未开启移动止损,直接返回 - if(!InpUseTrailingStop) - return; - - if(!PositionSelectByTicket(ticket)) - return; - - // 补偿单不使用移动止损(需要达到完整止盈目标) - string comment = PositionGetString(POSITION_COMMENT); - if(StringFind(comment, "[补偿单]") >= 0) - return; - - double open_price = PositionGetDouble(POSITION_PRICE_OPEN); - double current_sl = PositionGetDouble(POSITION_SL); - ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); - double current_price = (pos_type == POSITION_TYPE_BUY) ? - SymbolInfoDouble(_Symbol, SYMBOL_BID) : - SymbolInfoDouble(_Symbol, SYMBOL_ASK); - - // 计算止损金额(开仓价的百分比) - double stop_loss_amount = open_price * InpStopLossPercent / 100.0; - - // 确保止损金额不小于最小止损点数 - double min_stop_loss = InpMinStopLossPoints * _Point; - if(stop_loss_amount < min_stop_loss) { - stop_loss_amount = min_stop_loss; - } - - // 计算浮盈 - double profit_amount = 0; - if(pos_type == POSITION_TYPE_BUY) { - profit_amount = current_price - open_price; - } else { - profit_amount = open_price - current_price; - } - - // 浮盈达到止损金额,移动止损至成本价 - if(profit_amount >= stop_loss_amount) { - double new_sl = open_price; - - // 检查是否需要更新 - bool need_update = false; - if(pos_type == POSITION_TYPE_BUY && (current_sl < new_sl || current_sl == 0)) { - need_update = true; - } else if(pos_type == POSITION_TYPE_SELL && (current_sl > new_sl || current_sl == 0)) { - need_update = true; - } - - if(need_update) { - double tp = PositionGetDouble(POSITION_TP); - if(trade.PositionModify(ticket, new_sl, tp)) { - Print("移动止损至成本价 - Ticket:", ticket, " 新止损:", new_sl); - } - } - } -} - -//+------------------------------------------------------------------+ -//| 检查并关闭手工单 | -//+------------------------------------------------------------------+ -void CheckAndCloseManualOrders() -{ - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - // 只处理本品种 - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - // 检查magic number:0表示手工单 - long magic = PositionGetInteger(POSITION_MAGIC); - if(magic == 0) { - ulong ticket = PositionGetTicket(i); - - // 平仓手工单 - if(trade.PositionClose(ticket)) { - Print("【禁止手工单】已平掉手工单 - Ticket:", ticket, - " 类型:", (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY ? "多单" : "空单")); - } else { - Print("【禁止手工单】平仓失败 - Ticket:", ticket, " 错误:", GetLastError()); - } - } - } -} - -//+------------------------------------------------------------------+ -//| 将亏损单加入补偿队列 | -//+------------------------------------------------------------------+ -void AddToCompensationQueue(ulong ticket) -{ - if(!InpEnableCompensation) - return; - - // 需要选择历史记录才能获取已平仓订单的信息 - if(!HistorySelectByPosition(ticket)) - return; - - // 查找该持仓的平仓deal - int total_deals = HistoryDealsTotal(); - if(total_deals <= 0) - return; - - // 从最新的deal开始找 - for(int i = total_deals - 1; i >= 0; i--) - { - ulong deal_ticket = HistoryDealGetTicket(i); - if(deal_ticket == 0) - continue; - - // 检查是否是该持仓的平仓交易 - long deal_position = HistoryDealGetInteger(deal_ticket, DEAL_POSITION_ID); - if(deal_position != (long)ticket) - continue; - - // 检查是否是平仓 - ENUM_DEAL_ENTRY entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket, DEAL_ENTRY); - if(entry != DEAL_ENTRY_OUT) - continue; - - // 获取盈亏信息 - double profit = HistoryDealGetDouble(deal_ticket, DEAL_PROFIT); - double commission = HistoryDealGetDouble(deal_ticket, DEAL_COMMISSION); - double swap = HistoryDealGetDouble(deal_ticket, DEAL_SWAP); - double net_profit = profit + commission + swap; - - // 获取平仓原因 - ENUM_DEAL_REASON reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket, DEAL_REASON); - - // 只处理触发止损的单子 - if(reason != DEAL_REASON_SL) - return; - - // 获取订单信息 - double lots = HistoryDealGetDouble(deal_ticket, DEAL_VOLUME); - long deal_type = HistoryDealGetInteger(deal_ticket, DEAL_TYPE); - int direction = (deal_type == DEAL_TYPE_BUY) ? 1 : -1; - - // 从历史记录中查找开仓和平仓价格,计算实际止损金额 - double open_price = 0; - double close_price = 0; - - // 查找该持仓的所有deal - int total_deals_temp = HistoryDealsTotal(); - for(int k = 0; k < total_deals_temp; k++) - { - ulong temp_ticket = HistoryDealGetTicket(k); - if(HistoryDealGetInteger(temp_ticket, DEAL_POSITION_ID) == (long)ticket) - { - ENUM_DEAL_ENTRY temp_entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(temp_ticket, DEAL_ENTRY); - if(temp_entry == DEAL_ENTRY_IN) - { - open_price = HistoryDealGetDouble(temp_ticket, DEAL_PRICE); - } - else if(temp_entry == DEAL_ENTRY_OUT) - { - close_price = HistoryDealGetDouble(temp_ticket, DEAL_PRICE); - } - } - } - - // 计算实际止损金额 = |平仓价 - 开仓价|(亏损单的止损距离) - double stop_loss_amount = MathAbs(close_price - open_price); - - // 加入补偿队列 - int size = ArraySize(g_compensationQueue); - ArrayResize(g_compensationQueue, size + 1); - - g_compensationQueue[size].ticket = (int)ticket; - g_compensationQueue[size].loss = MathAbs(net_profit); - g_compensationQueue[size].lots = lots; - g_compensationQueue[size].stopLossAmount = stop_loss_amount; - g_compensationQueue[size].direction = direction; - g_compensationQueue[size].closeTime = TimeCurrent(); - - Print("【补偿机制】亏损单加入队列 - Ticket:", ticket, - " 亏损:$", DoubleToString(MathAbs(net_profit), 2), - " 手数:", lots, - " 止损金额:$", DoubleToString(stop_loss_amount, 2), - " (", (int)(stop_loss_amount / _Point), "点)", - " 方向:", (direction == 1 ? "多单" : "空单"), - " 开仓:", open_price, " 平仓:", close_price, - " 队列大小:", ArraySize(g_compensationQueue)); - - break; - } -} - -//+------------------------------------------------------------------+ -//| 开立补偿单 | -//+------------------------------------------------------------------+ -bool OpenCompensationOrder() -{ - if(!InpEnableCompensation) - return false; - - // 检查补偿队列长度是否达到最小要求 - int queue_size = ArraySize(g_compensationQueue); - if(queue_size < InpMinCompensationQueueSize) - { - if(queue_size > 0 && InpShowDebugInfo) - Print("【补偿机制】队列长度不足 (", queue_size, "/", InpMinCompensationQueueSize, ") - 暂不开补偿单"); - return false; - } - - // 检查连续补偿次数是否超限 - if(InpMaxConsecutiveCompensations > 0 && g_consecutiveCompensationCount >= InpMaxConsecutiveCompensations) - { - Print("【补偿机制】连续补偿次数达到限制 (", g_consecutiveCompensationCount, "/", InpMaxConsecutiveCompensations, ")"); - Print("【补偿机制】重置补偿队列和计数器,停止补偿"); - - // 清空队列和快照 - ArrayResize(g_compensationQueue, 0); - ArrayResize(g_currentCompensationSnapshot, 0); - - // 重置计数器 - g_consecutiveCompensationCount = 0; - g_currentCompensationTicket = -1; - - return false; - } - - // 检查是否已有补偿单在持仓(双重检查机制) - // 如果有补偿单,则不能开新单(队列累积) - if(g_currentCompensationTicket >= 0) - { - // 检查补偿单是否还在持仓中 - if(PositionSelectByTicket(g_currentCompensationTicket)) - return false; // 还在持仓,不开新单 - else - g_currentCompensationTicket = -1; // 已平仓,重置 - } - - // 二次检查:遍历所有持仓,确保没有其他补偿单 - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - // 检查是否是补偿单 - string pos_comment = PositionGetString(POSITION_COMMENT); - if(StringFind(pos_comment, "[补偿单]") >= 0) - { - Print("【补偿机制】检测到已有补偿单在持仓 - Ticket:", PositionGetTicket(i), " 暂不开新单"); - g_currentCompensationTicket = (int)PositionGetTicket(i); // 同步ticket - return false; // 已有补偿单,拒绝开新单 - } - } - - // 保存当前队列快照(这些亏损单将由本次补偿单负责) - int snapshot_size = ArraySize(g_compensationQueue); - ArrayResize(g_currentCompensationSnapshot, snapshot_size); - for(int i = 0; i < snapshot_size; i++) - { - g_currentCompensationSnapshot[i] = g_compensationQueue[i]; - } - - // 清空待处理队列(快照已保存,新的亏损会加入队列等待下一次补偿) - ArrayResize(g_compensationQueue, 0); - - // 计算补偿单参数(基于快照,此时 g_compensationQueue 已清空) - double lots = 0; - double sl_pips = 0; - double tp_price = 0; - int direction = 0; - - // 计算补偿单参数(基于快照) - double total_loss = 0; - double total_lots = 0; - - for(int i = 0; i < snapshot_size; i++) - { - total_loss += g_currentCompensationSnapshot[i].loss; - total_lots += g_currentCompensationSnapshot[i].lots; - } - - // 补偿单手数 = min(队列总手数, 最大手数限制) - lots = MathMin(total_lots, InpMaxCompensationLots); - - // 补偿单止损点数:使用固定参数 - sl_pips = InpCompensationStopLossPips; - - // 补偿单方向:最近一个亏损单的反方向 - direction = -g_currentCompensationSnapshot[snapshot_size - 1].direction; - - Print("【补偿机制】计算补偿单参数 - 快照大小:", snapshot_size, - " 总手数:", total_lots, - " 补偿手数:", lots, (lots < total_lots ? " (受限于最大手数)" : ""), - " 总亏损:$", DoubleToString(total_loss, 2)); - - if(lots <= 0 || direction == 0) - return false; - - Print("【补偿机制】队列快照已保存 - 快照大小:", snapshot_size, " 待处理队列已清空"); - - // 开仓 - ENUM_ORDER_TYPE order_type = (direction == 1) ? ORDER_TYPE_BUY : ORDER_TYPE_SELL; - string comment = StringFormat("[补偿单] Q%d", snapshot_size); - - bool result = false; - if(order_type == ORDER_TYPE_BUY) { - result = trade.Buy(lots, _Symbol, 0, 0, 0, comment); - } else { - result = trade.Sell(lots, _Symbol, 0, 0, 0, comment); - } - - if(!result) { - Print("【补偿机制】开补偿单失败: ", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); - return false; - } - - // 等待持仓更新 - Sleep(100); - - // 查找刚开的补偿单 - ulong ticket = 0; - double open_price = 0; - - for(int i = PositionsTotal() - 1; i >= 0; i--) { - if(!PositionSelectByTicket(PositionGetTicket(i))) - continue; - - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - - if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) - continue; - - // 查找备注包含"[补偿单]"的持仓 - string pos_comment = PositionGetString(POSITION_COMMENT); - if(StringFind(pos_comment, "[补偿单]") >= 0 && - PositionGetDouble(POSITION_SL) == 0 && - PositionGetDouble(POSITION_TP) == 0) { - ticket = PositionGetTicket(i); - open_price = PositionGetDouble(POSITION_PRICE_OPEN); - break; - } - } - - if(ticket == 0) { - Print("【补偿机制】找不到刚开的补偿单"); - return false; - } - - // 计算止损止盈价格(基于实际成交价和固定参数) - // 止损金额 = 固定止损点数 × 点值 - double sl_amount = InpCompensationStopLossPips * _Point; - - // 计算止盈点数:需要盈利 = 快照队列总亏损 - double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); - double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); - double point_value = tick_value / tick_size * _Point; - double tp_pips_needed = total_loss / (lots * point_value); - - // 限制止盈点数不超过最大值 - bool is_capped = false; - if(tp_pips_needed > InpMaxCompensationTakeProfitPips) { - is_capped = true; - tp_pips_needed = InpMaxCompensationTakeProfitPips; - } - - Print("【补偿机制】止盈计算 - 总亏损:$", DoubleToString(total_loss, 2), - " 手数:", lots, - " Tick价值:$", tick_value, - " Tick大小:", tick_size, - " Point:", _Point, - " 每点价值:$", DoubleToString(point_value, 4), - " 需要止盈:", (int)tp_pips_needed, "点", - is_capped ? " (受限于最大止盈)" : ""); - - double sl = 0; - double tp = 0; - - if(order_type == ORDER_TYPE_BUY) { - sl = NormalizeDouble(open_price - sl_amount, _Digits); - tp = NormalizeDouble(open_price + tp_pips_needed * _Point, _Digits); - } else { - sl = NormalizeDouble(open_price + sl_amount, _Digits); - tp = NormalizeDouble(open_price - tp_pips_needed * _Point, _Digits); - } - - // 获取平台最小止损距离 - int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); - double min_stop_distance = stops_level * _Point; - double current_bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - double current_ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - - // 检查并调整止损距离 - if(order_type == ORDER_TYPE_BUY) { - if(stops_level > 0 && (current_bid - sl) < min_stop_distance) { - sl = NormalizeDouble(current_bid - min_stop_distance, _Digits); - Print("【补偿机制】止损距离不足,已调整 - 新止损:", sl); - } - if(stops_level > 0 && (tp - current_ask) < min_stop_distance) { - tp = NormalizeDouble(current_ask + min_stop_distance, _Digits); - Print("【补偿机制】止盈距离不足,已调整 - 新止盈:", tp); - } - } else { - if(stops_level > 0 && (sl - current_ask) < min_stop_distance) { - sl = NormalizeDouble(current_ask + min_stop_distance, _Digits); - Print("【补偿机制】止损距离不足,已调整 - 新止损:", sl); - } - if(stops_level > 0 && (current_bid - tp) < min_stop_distance) { - tp = NormalizeDouble(current_bid - min_stop_distance, _Digits); - Print("【补偿机制】止盈距离不足,已调整 - 新止盈:", tp); - } - } - - // 修改止损止盈 - if(!trade.PositionModify(ticket, sl, tp)) { - Print("【补偿机制】修改SL/TP失败 - Ticket:", ticket, - " 错误码:", trade.ResultRetcode(), - " 描述:", trade.ResultRetcodeDescription(), - " 开仓价:", open_price, - " 止损:", sl, - " 止盈:", tp, - " 平台最小距离:", stops_level, "点"); - return false; - } - - // 记录当前补偿单 - g_currentCompensationTicket = (int)ticket; - - // 增加连续补偿计数器 - g_consecutiveCompensationCount++; - - Print("【补偿机制】开补偿单成功 - Ticket:", ticket, - " 类型:", (order_type == ORDER_TYPE_BUY ? "多单" : "空单"), - " 手数:", lots, - " 开仓价:", open_price, - " 止损:", sl, " (", InpCompensationStopLossPips, "点)", - " 止盈:", tp, " (", (int)tp_pips_needed, "点)", - " 需补偿:$", DoubleToString(total_loss, 2), - " 连续补偿:", g_consecutiveCompensationCount, "/", InpMaxConsecutiveCompensations); - - return true; -} - -//+------------------------------------------------------------------+ -//| 检查补偿单状态 | -//+------------------------------------------------------------------+ -void CheckCompensationOrderStatus() -{ - if(!InpEnableCompensation) - return; - - // 如果没有补偿单在追踪,尝试开单 - if(g_currentCompensationTicket < 0) - { - // OpenCompensationOrder 内部会检查队列长度是否达到最小要求 - OpenCompensationOrder(); - return; - } - - // 检查补偿单是否还在持仓 - if(PositionSelectByTicket(g_currentCompensationTicket)) - return; // 还在持仓 - - // 补偿单已平仓,检查盈亏 - if(!HistorySelectByPosition(g_currentCompensationTicket)) - { - g_currentCompensationTicket = -1; - return; - } - - // 查找平仓deal - int total_deals = HistoryDealsTotal(); - for(int i = total_deals - 1; i >= 0; i--) - { - ulong deal_ticket = HistoryDealGetTicket(i); - if(deal_ticket == 0) - continue; - - long deal_position = HistoryDealGetInteger(deal_ticket, DEAL_POSITION_ID); - if(deal_position != g_currentCompensationTicket) - continue; - - ENUM_DEAL_ENTRY entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket, DEAL_ENTRY); - if(entry != DEAL_ENTRY_OUT) - continue; - - // 获取盈亏 - double profit = HistoryDealGetDouble(deal_ticket, DEAL_PROFIT); - double commission = HistoryDealGetDouble(deal_ticket, DEAL_COMMISSION); - double swap = HistoryDealGetDouble(deal_ticket, DEAL_SWAP); - double net_profit = profit + commission + swap; - - // 获取平仓原因 - ENUM_DEAL_REASON reason = (ENUM_DEAL_REASON)HistoryDealGetInteger(deal_ticket, DEAL_REASON); - - if(reason == DEAL_REASON_TP) - { - // 补偿单止盈:快照队列成功补偿,清空快照,重置计数器 - Print("【补偿机制】补偿单止盈 - 盈利:$", DoubleToString(net_profit, 2), - " 快照队列已补偿完成 (", ArraySize(g_currentCompensationSnapshot), "单)", - " 待处理队列:", ArraySize(g_compensationQueue), "单"); - ArrayResize(g_currentCompensationSnapshot, 0); - - // 止盈成功,重置连续补偿计数器 - Print("【补偿机制】补偿成功,重置连续补偿计数器: ", g_consecutiveCompensationCount, " → 0"); - g_consecutiveCompensationCount = 0; - } - else if(reason == DEAL_REASON_SL) - { - // 补偿单止损:快照队列需要重新补偿 + 补偿单本身也亏损了 - Print("【补偿机制】补偿单止损 - 亏损:$", DoubleToString(MathAbs(net_profit), 2), - " 快照队列 (", ArraySize(g_currentCompensationSnapshot), "单) 将重新加入待处理队列"); - - // 1. 先把快照队列重新加入待处理队列 - int current_queue_size = ArraySize(g_compensationQueue); - int snapshot_size = ArraySize(g_currentCompensationSnapshot); - ArrayResize(g_compensationQueue, current_queue_size + snapshot_size); - - for(int j = 0; j < snapshot_size; j++) - { - g_compensationQueue[current_queue_size + j] = g_currentCompensationSnapshot[j]; - } - - // 2. 补偿单本身的亏损也加入队列 - AddToCompensationQueue(g_currentCompensationTicket); - - // 3. 清空快照 - ArrayResize(g_currentCompensationSnapshot, 0); - - Print("【补偿机制】待处理队列更新 - 当前大小:", ArraySize(g_compensationQueue), "单"); - } - - g_currentCompensationTicket = -1; - break; - } -} - -//+------------------------------------------------------------------+ -//| 清空补偿队列 | -//+------------------------------------------------------------------+ -void ClearCompensationQueue() -{ - ArrayResize(g_compensationQueue, 0); - Print("【补偿机制】补偿队列已清空"); -} diff --git a/20260519-突破策略/README.md b/20260519-突破策略/README.md deleted file mode 100644 index e18d257..0000000 --- a/20260519-突破策略/README.md +++ /dev/null @@ -1,400 +0,0 @@ -# 突破交易策略 - -## 基础概念 -- 平台:MQL5 -- 品种:XAU黄金 -- 1美金:4100与4101之间相差1美金 -- 1美金 = 100点 - -## 辅助指标 -- 移动平均线(Moving Average) -- 周期默认设置为:14 - -## 核心概念 -- 突破K线:开盘价在均线下方,收盘价在均线上方,称之为多单突破K线,反之亦然 -- 极值点:相邻两根突破K线之间所有K线(包括突破K线)中的最高价或最低价称之为极值点 -- 有效波段:相邻两个极值点的价差达到波段阈值点数时,期间的所有K线(包含突破K线本身)组成的行情,称之为有效波段 - -## 开仓逻辑 -- 价格突破有效波段的高点开多单,价格突破有效波点的低点开空单 -- 该开仓逻辑仅适用最新的一个有效波段 -- 止损和止盈基于开仓价的百分比计算,止盈 = 止损金额 × 盈亏比 -- 浮盈达到止损金额后,即可将止损移动至成本价 -- 已经开仓后,继续监控新的有效波段突破,每单开仓后就与有效波段无关了 - -## 参数设置 - -### 波段识别参数 -- K线周期:支持参数设置,不跟随图表,默认 **1 Minute** -- MA周期:默认 **14** -- **最小波段阈值百分比:默认 0.1%**(波段必须 >= 此值才可能是有效波段) -- **最大波段阈值百分比:默认 1.0%**(波段必须 <= 此值才可能是有效波段) -- **有效波段范围:0.1% - 1.0%**(只交易此范围内的波段) -- **反向突破容忍度:默认0.0%(新功能 - 详见下方说明)** - -### 风险管理参数 -- 止损百分比:默认 **0.05%**(基于开仓价计算,最小1美元/100点) -- 盈亏比:默认 **1.5**(止盈 = 止损金额 × 盈亏比) -- 使用移动止损:默认 **false**(禁用移动止损功能) -- 最大持仓时间:默认 **5分钟** - -### 仓位管理参数 -- 使用复利模式:默认 **true**(启用复利模式) -- 固定手数:默认 **0.01手** -- 每500$开仓手数:默认 **0.05手**(复利模式有效) -- 最大开仓手数:默认 **99手** -- 单方向最多持有一单:默认 **true**(每个方向最多持有1单) - -### 连续亏损保护参数 -- 连续亏损次数触发冷冻:默认 **3**(设为0可禁用该功能) -- 冷冻K线根数:默认 **60**(设为0可禁用该功能) - -### 手工单管理参数 -- 禁止手工单:默认 **true**(自动平掉所有手工单) - -## 补充说明 - -### 突破K线处理 -- 如果出现多个多单突破K线,仅保留最低价更低的那个K线,反之亦然 -- 多头有效波段之间,仅允许出现一个多单突破K线和一个空单突破K线,反之亦然 - -### 有效波段规则 -- 一个有效波段只能开一单(无论是高点还是低点) -- 开仓后该波段立即失效 -- 必须等新的有效波段形成才能再次开仓 - -### 单方向持仓限制 -此参数用于控制同一方向的持仓数量,避免单边风险过大。 - -**参数说明:** -- **false(默认)**:允许同方向开多单,仅受"最大开仓手数"限制 - - 例如:最大开仓手数=3时,可以同时持有3个多单,或3个空单,或2多1空等 -- **true**:每个方向最多持有1单 - - 多单方向:最多持有1个多单 - - 空单方向:最多持有1个空单 - - 最多同时持有1多+1空=2单 - -**使用场景:** -- **保守型交易者**:建议设置为 **true** - - 严格控制风险敞口 - - 避免单边持仓过重 - - 适合波动较大的行情 - -- **激进型交易者**:可设置为 **false** - - 允许同方向加仓 - - 在强趋势行情中获取更多盈利 - - 但需要配合"最大开仓手数"参数控制总风险 - -**示例:** -``` -设置:单方向最多持有一单 = true - -场景1:当前持有1个多单 -- 新的多单信号出现 → ❌ 被忽略(已有多单) -- 新的空单信号出现 → ✅ 可以开仓(空单方向无持仓) - -场景2:当前持有1个多单 + 1个空单 -- 新的多单信号出现 → ❌ 被忽略(已有多单) -- 新的空单信号出现 → ❌ 被忽略(已有空单) -``` - -### 连续亏损保护功能 ⭐ - -此功能用于在连续亏损后自动暂停交易,避免在不利行情中持续亏损。 - -**核心机制:** -- 实时监控每笔交易的盈亏结果(通过 `OnTradeTransaction` 事件) -- 当连续亏损达到设定次数时,自动进入"冷冻期" -- 冷冻期内禁止开新仓,直到指定数量的K线走完 -- 冷冻期结束后自动解除,连续亏损计数器重置为0 - -**参数说明:** - -1. **连续亏损次数触发冷冻**:默认 `3` - - 设置为 `0`:功能完全禁用 - - 设置为 `3`:连续亏损3笔后触发冷冻(推荐值) - - 任何盈利单都会将计数器归零 - -2. **冷冻K线根数**:默认 `60` - - 设置为 `0`:功能完全禁用 - - 设置为 `60`:冷冻期间禁止开仓,直到60根K线走完(M1周期约1小时) - - K线周期取决于"K线周期"参数设置 - -**工作流程:** - -``` -步骤1:监控交易结果 -- 订单平仓后,检测盈亏(包含手续费和隔夜利息) -- 亏损 → 连续亏损计数器 +1 -- 盈利 → 连续亏损计数器归零 - -步骤2:触发冷冻条件 -- 当连续亏损计数器 >= 设定次数时 -- 记录当前K线数量 -- 计算冷冻结束K线数 = 当前K线数 + 冷冻K线根数 -- 打印冷冻提示信息 - -步骤3:冷冻期检查 -- 每次开仓前检查是否处于冷冻期 -- 如果当前K线数 < 冷冻结束K线数 → 拒绝开仓 -- 如果当前K线数 >= 冷冻结束K线数 → 解除冷冻,重置计数器 - -步骤4:冷冻解除 -- 自动打印解除提示 -- 连续亏损计数器重置为0 -- 恢复正常交易 -``` - -**使用场景:** - -1. **震荡行情保护**(默认配置) - - 设置:连续亏损3次 + 冷冻60根K线 - - 效果:在频繁假突破的震荡行情中,连续亏损3次后暂停1小时(M1周期) - - 避免在不利行情中持续开仓亏损 - -2. **回测优化** - - 通过历史数据测试不同参数组合 - - 找到最佳的连续亏损阈值和冷冻时长 - - 提高策略整体盈利能力 - -3. **风险控制** - - 配合"最大开仓手数"和"单方向持仓限制" - - 多层次控制交易风险 - - 保守型交易者建议启用 - -**示例:** - -``` -参数设置: -- 连续亏损次数触发冷冻 = 3 -- 冷冻K线根数 = 10 -- K线周期 = M1 - -交易流程: -时间 09:00 → 开仓多单 → 止损平仓(亏损)→ 连续亏损计数 = 1 -时间 09:05 → 开仓空单 → 止损平仓(亏损)→ 连续亏损计数 = 2 -时间 09:10 → 开仓多单 → 止损平仓(亏损)→ 连续亏损计数 = 3 - -触发冷冻! -- 当前K线数:150 -- 冷冻至K线数:160(150 + 10) -- 打印:=== 触发交易冷冻 === - -冷冻期内(09:10 - 09:20): -- 所有开仓信号被忽略 -- 调试模式下打印:交易冷冻中 - 剩余K线数: X - -时间 09:20(K线数达到160): -- 自动解除冷冻 -- 打印:=== 交易冷冻解除 === -- 连续亏损计数器重置为0 -- 恢复正常交易 -``` - -**注意事项:** - -1. **功能启用条件** - - 两个参数都必须 > 0 才会启用 - - 任一参数为 0,功能完全禁用 - -2. **计数逻辑** - - 仅统计"净亏损"(盈亏 + 手续费 + 隔夜利息) - - 盈亏持平(净盈利约等于0)不会重置计数器 - - 任何盈利单(净盈利 > 0)立即重置计数器 - -3. **冷冻期计算** - - 基于K线根数,不是绝对时间 - - 周末或节假日市场休市时,K线不增加,冷冻期相应延长 - - 建议根据具体交易品种和周期调整参数 - -4. **与其他功能的关系** - - 冷冻期内不影响已有持仓的管理(止损、止盈、移动止损仍正常工作) - - 仅阻止新开仓,不会强制平仓现有持仓 - - 可配合"单方向持仓限制"等功能使用 - -### 禁止手工单功能说明 ⭐ - -**问题背景:** -在EA自动交易过程中,手工开单可能会干扰EA的整体策略逻辑和风险管理,导致: -- 破坏EA的仓位管理计划 -- 影响资金管理和风险控制 -- 与EA策略产生冲突 - -**功能说明:** -- 启用后,EA会自动检测并平掉所有手工单(magic number = 0的订单) -- 仅处理当前品种(_Symbol)的手工单 -- 平仓后会在日志中打印详细信息 - -**识别原理:** -在MQL5中,订单都有一个magic number(魔术号)属性: -- **手工单**:magic number = 0(默认值) -- **EA开单**:magic number = EA设定的值(本策略默认20260516) - -**参数说明:** -- **true(默认)**:启用保护,自动平掉手工单 - - 每个Tick检查一次 - - 发现手工单立即平仓 - - 打印平仓日志:`【禁止手工单】已平掉手工单 - Ticket:xxx 类型:多单/空单` - -- **false**:允许手工单与EA单共存 - - 手工单和EA单可以同时存在 - - 手工单不会被EA管理(不会移动止损等) - - 适合需要手工干预的场景 - -**使用场景:** - -1. **完全自动化交易**(推荐设置:true) - - 避免误操作影响EA策略 - - 确保严格执行EA逻辑 - - 防止情绪化交易 - -2. **半自动化交易**(设置:false) - - 允许手工单和EA单并存 - - 可以手工补仓或对冲 - - 需要手动管理手工单的风险 - -**示例:** - -``` -参数设置:禁止手工单 = true - -情况1:用户在MT5手动开了1个多单 -- EA在下一个Tick检测到该订单的magic=0 -- 自动平掉该订单 -- 打印:【禁止手工单】已平掉手工单 - Ticket:12345 类型:多单 - -情况2:EA自动开了1个多单(magic=20260516) -- EA检测到magic != 0,确认是EA自己开的单 -- 不会平仓,正常管理(移动止损等) - -情况3:其他EA开的单(magic=99999) -- EA检测到magic != 0,确认不是手工单 -- 不会平仓,但也不会管理 -``` - -**注意事项:** - -1. **仅处理当前品种** - - 只平掉当前EA运行品种的手工单 - - 不会影响其他品种的手工单 - -2. **实时检测** - - 每个Tick都会检查 - - 手工单会在极短时间内被平掉 - -3. **与其他功能的关系** - - 不影响EA自身的开仓逻辑 - - 不影响EA的风险管理功能 - - 可配合所有其他参数使用 - -4. **平仓失败处理** - - 如果平仓失败(网络问题等),会打印错误日志 - - 下一个Tick会继续尝试平仓 - -### 反向突破容忍度(新功能)⭐ - -**问题背景:** -在趋势行情中,可能会出现反向突破K线(回调),导致原本完整的波段被"切断",使策略无法识别出肉眼可见的有效波段。 - -**示例:** -``` -价格从2600上涨到2650(涨幅50点) -中间出现一根空单突破K线(回调到2640) - -原有逻辑: -- 波段被切断为:2600→2640 和 2640→2650 -- 每段都不足1000点,无法识别为有效波段 ✗ - -容忍模式(设置30%): -- 回调10点 ÷ 波段50点 = 20% < 30% -- 回撤在容忍范围内,继续计算完整波段 -- 识别出2600→2650的有效波段 ✓ -``` - -**参数说明:** -- **0%(默认)**:不容忍任何反向突破,保持原有逻辑 -- **10-20%**:容忍小幅回调,适合短期趋势 -- **30-40%**:容忍中等回调,适合日内波段 -- **50%以上**:容忍大幅回调,可能识别出更大的波段(但也可能误判) - -**推荐设置:** -- 保守型:0-10% -- 标准型:20-30% -- 激进型:30-50% - -**注意事项:** -1. 设置为0时,完全保持原有逻辑,不影响现有回测结果 -2. 容忍度越高,识别的波段越大,但也可能包含更多噪音 -3. 建议先回测不同容忍度,找到最适合的数值 -4. 容忍度只影响波段识别,不影响止损止盈等其他逻辑 - -### 波段阈值范围说明 -本策略使用**波段范围筛选**机制,只交易特定大小的波段: - -#### 为什么需要波段范围? -- **单一阈值的问题**:传统策略只设置最小阈值(如0.1%),导致0.1%的小波段和5%的大波段都交易,风险收益特征差异巨大 -- **范围筛选的优势**:通过设置最小和最大阈值,只交易特定大小的波段,风险更可控 - -#### 计算方式 -- 以前一个极值点价格为基准,按百分比计算阈值范围 -- 动态适应不同价格水平 - -#### 示例说明 -假设设置: -- 最小阈值:0.1% -- 最大阈值:1.0% -- 当前价格:2600 - -**价格2600时的阈值范围:** -- 最小阈值 = 2600 × 0.1% = 2.6美元(260点) -- 最大阈值 = 2600 × 1.0% = 26美元(2600点) - -**波段筛选结果:** -- 波段 2.0美元(200点):< 最小阈值 → ❌ 不交易(波段太小) -- 波段 5.2美元(520点):在范围内 → ✅ 有效波段,可交易 -- 波段 15美元(1500点):在范围内 → ✅ 有效波段,可交易 -- 波段 30美元(3000点):> 最大阈值 → ❌ 不交易(波段太大) - -**价格4700时的阈值范围:** -- 最小阈值 = 4700 × 0.1% = 4.7美元(470点) -- 最大阈值 = 4700 × 1.0% = 47美元(4700点) - -#### 参数调整建议 -- **保守型**:0.15% - 0.5%(只交易中小波段) -- **标准型**:0.1% - 1.0%(默认,覆盖大多数波段) -- **激进型**:0.08% - 2.0%(交易范围更广) - -### 止损止盈说明 -本策略使用**百分比模式**计算止损和止盈: - -- **止损计算**:止损金额 = MAX(开仓价 × 止损百分比, 1美元) - - 示例1(高价位):开仓价2600,止损0.05%,计算值 = 2600 × 0.05% = 1.3美元 > 1美元,使用1.3美元 - - 多单止损价 = 2600 - 1.3 = 2598.7 - - 空单止损价 = 2600 + 1.3 = 2601.3 - - 示例2(低价位):开仓价1500,止损0.05%,计算值 = 1500 × 0.05% = 0.75美元 < 1美元,使用最小值1美元 - - 多单止损价 = 1500 - 1 = 1499.0 - - 空单止损价 = 1500 + 1 = 1501.0 - -- **止盈计算**:止盈金额 = 止损金额 × 盈亏比 - - 示例1:止损金额1.3美元,盈亏比1.5,止盈金额 = 1.3 × 1.5 = 1.95美元 - - 多单止盈价 = 2600 + 1.95 = 2601.95 - - 空单止盈价 = 2600 - 1.95 = 2598.05 - - 示例2:止损金额1美元,盈亏比1.5,止盈金额 = 1 × 1.5 = 1.5美元 - - 多单止盈价 = 1500 + 1.5 = 1501.5 - - 空单止盈价 = 1500 - 1.5 = 1498.5 - -- **移动止损**(可选功能,默认启用): - - **触发条件**:当浮盈 >= 止损金额时触发 - - **移动目标**:将止损移至成本价(开仓价) - - **移动次数**:仅移动一次(保本策略) - - **示例**:开仓价2603.24,止损金额1.30美元 - - 当价格涨至2604.54(浮盈1.30)时,止损从2601.94移至2603.24 - - 之后价格无论涨到多高,止损都保持在2603.24 - - 即使回调至成本价,也能保本离场,不会亏损 - - **开关控制**:可通过参数"使用移动止损"关闭此功能 - -- **最小止损保护**:无论百分比设置多小,止损金额始终不低于1美元(100点),避免止损过小导致频繁触发 - -- **移动止损的作用**: - - ✅ 启用时:浮盈达标后锁定盈亏平衡,避免盈利单变亏损 - - ❌ 禁用时:止损始终保持在初始位置,追求更高止盈,但风险更大 diff --git a/20260519-突破策略/XAU_1min_v1.set b/20260519-突破策略/XAU_1min_v1.set deleted file mode 100644 index 6408a799f861935a95c4dfdec8f6725fb5b7b9fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2838 zcmbtWOKTHR6h0sb3jT-em6|jUX=N5_Efh>sl8Vccq?0%_&4fH^T1B@)g}Rb%1^FkWh9pj-`+1vgC1B zWC`ywo&{Mks|8t=qTIo=gq<65T_``6rxF1rCmp0g-!r4`hO`b9gsp zhoe5nZAu!uT3 z#&(VZ@bm&#-g}n7TmcLg&Dy3XUzK~Z1*su$V)#SplKINLiN={CrlrZ@6Ijp8Qk*tM zeRve$d*+nd;*auJ%_o;)GXvelwX~Kd*v!&WF!}3noW3+7b^cq=7UI;y)q+2a@-`S@ zo--@@SRuEHVRcxJ=W(-jv6gIXznn(z-ao%OUL4y7SY%Z&*G9M&@yiN!*7#%YC@Li#wmO#o6Sc?C6CzfO68jSE?an+2P#I0E@*CQio~aJj{Uq5}PW%{s-K^HKW2D+2 zz^8pgiXEvBPt}Ht>D~asK-PgVg-yFA`pUoNl&dJ#5q+|`W~<7s+4-V)GpC5EIaM~9 zVzayKq55O?;B-dW`63Nf@ID1TbC>;=apxHkpckze4fd^GaHjF_^RfmRc9t}XTD=BL zo(1h0dVrCO<@sa%_u7Y+ty1=5jR~Vn52%qRPh`5Dtxld5LDFHh&#GU= z1zxQiyF;9FAa2eFwu?35LM1UOs)Kdmx|OnOYlM5g z4(HW;#Iy9PCL*bys)4#4x*xSGZ@wL0dwX~~pJ@&JCB*2PYlv72dC@f)*umOmdWuD* zZ$tEEo@})F{59hu-$fO)!Q2G>uVoMe)4};)ssC&hym_cLBEEPN- z;m)~QpI}}S-uLCM+!5|ixmnQ&iF_aP2w9JCA7lIi==7u+I~2wLJ8!`^1ooY+gYw(l&d4Z&GOn7m41X8QTq|tWwoZj*~?;4pS-K3 z$RB%ywHhKDW_5sC_l=5EbX0*ne%_8X=PRQ+x9 zg^IGiD65IjjAhG3;}|U3Gz!1dzc(8vpD%Bv<(+M_^A-YqN7k zLR*msc1Z#q5P2V$Opw)K`pRSk}Tt^M!6|1WsN8KMpmxLe|z+B1keVf9}U`;%j` cQf5=F6jwH@;X08X`QLyHoFIChHUFE#A3(dOZvX%Q diff --git a/20260522-突破马丁/20260522_Breakout.mq5 b/20260522-突破马丁/20260522_Breakout.mq5 new file mode 100644 index 0000000..484067e --- /dev/null +++ b/20260522-突破马丁/20260522_Breakout.mq5 @@ -0,0 +1,2010 @@ +//+------------------------------------------------------------------+ +//| 20260520_Breakout.mq5 | +//| 突破策略 - 单笔突破开仓 | +//+------------------------------------------------------------------+ +#property copyright "Breakout Strategy" +#property version "3.18" +#property strict + +#include + +// 破高/破低开仓方向 +enum ENUM_BREAKOUT_DIRECTION { + BREAKOUT_DIR_FOLLOW = 0, // 顺势(破高多/破低空) + BREAKOUT_DIR_REVERSE = 1, // 反向(破高空/破低多) + BREAKOUT_DIR_RANDOM = 2, // 随机(每次突破独立随机) + BREAKOUT_DIR_PREV_DAY_MA = 3, // 前日收线相对日MA(下方只空/上方只多) + BREAKOUT_DIR_DAILY_MA_DEVIATION = 4 // 日MA偏离率反向(偏离超阈值才开反向单) +}; + +// 当前轮多空同向均达满档后的处理 +enum ENUM_DUAL_FULL_ACTION { + DUAL_FULL_CLEAR_ALL = 0, // 清仓(平掉全部EA持仓) + DUAL_FULL_NEW_ROUND = 1 // 不处理旧仓,开始下一轮 +}; + +//+------------------------------------------------------------------+ +//| 输入参数 | +//+------------------------------------------------------------------+ +input group "=== 波段识别参数 ===" +input ENUM_TIMEFRAMES InpTimeframe = PERIOD_M1; // K线周期 +input int InpMAPeriod = 14; // MA周期 +input double InpMinWavePercent = 0.1; // 最小波段阈值百分比(%) +input double InpMaxWavePercent = 0.25; // 最大波段阈值百分比(%) +input double InpPullbackTolerance = 0.05; // 反向突破容忍度(%) 0=不容忍 +input int InpMinWaveBars = 3; // 有效波段最少K线数(含两端极值所在K) + +input group "=== 突破交易参数 ===" +input ENUM_BREAKOUT_DIRECTION InpBreakoutDirection = BREAKOUT_DIR_RANDOM; // 开仓方向 +input double InpDailyMADevThreshold = 1.0; // 日MA偏离率阈值(%),|偏离|超过才触发反向,0=关 +input int InpBatchTakeProfitPoints = 300; // 按批统盈点数(0=关):均价±点数平该批 +input double InpStopLossBalancePct = 30.0; // 止损:持仓浮亏达结余比例(%)全部清仓,0=关 +input double InpLargeLotMinVolume = 1.0; // 大单独立止盈手数阈值(>=,0=关) +input int InpLargeLotTakeProfitPoints = 500; // 大单最大止盈点数(0=关,不参与统盈) +input bool InpEnablePullbackReverse = true; // 启用突破回落反向 +input int InpPullbackReverseWatchBars = 3; // 回落监测K线数(突破K+后2根=3) + +input group "=== 仓位管理参数 ===" +input string InpTierLotsList = + "0.05,0.05,0.05,0.8,0.8,1.1,1,2,2,1,1,1,2,2,1,1,1,5,5"; // 各档手数(逗号分隔,档数=最多开仓笔数) +input double InpMaxLots = 99.0; // 同向最大合计手数(0=不限制) +input double InpMinSameDirAddSpacingPercent = 0.0; // 同向最小开仓间距(%) 0=不限制 +input ENUM_DUAL_FULL_ACTION InpDualFullAction = DUAL_FULL_CLEAR_ALL; // 双向满档后处理 + +input group "=== 调试选项 ===" +input bool InpShowDebugInfo = false; // 显示调试信息 +input bool InpShowMarkers = true; // 显示极值点标记 +input int InpMagicNumber = 20260520; // EA魔术号 +input bool InpCloseManualOrders = true; // 禁止手工单(自动平掉) + +//+------------------------------------------------------------------+ +//| 全局变量 | +//+------------------------------------------------------------------+ +int ma_handle; // MA指标句柄 +int daily_ma_handle; // 日K MA(前日收线方向过滤) +CTrade trade; // 交易对象 + +// 最新有效波段信息 +struct ValidWaveInfo { + bool exists; // 是否存在有效波段 + double high_price; // 高点价格 + double low_price; // 低点价格 + datetime update_time; // 更新时间 + bool high_breakout_used; // 高点-突破开仓已用(每极值限1次) + bool low_breakout_used; // 低点-突破开仓已用(每极值限1次) + bool high_pullback_reverse_used; // 高点-回落反向已用(每极值限1次) + bool low_pullback_reverse_used; // 低点-回落反向已用(每极值限1次) +}; + +struct PullbackWatchState { + bool active; + double extreme_price; + int bars_checked; +}; + +ValidWaveInfo latest_wave; // 最新有效波段 + +datetime g_breakout_bar_time_high = 0; // 破高:同K线限1笔 +bool g_breakout_opened_on_bar_high = false; +datetime g_breakout_bar_time_low = 0; // 破低:同K线限1笔 +bool g_breakout_opened_on_bar_low = false; + +int g_trade_round = 1; // 当前交易轮次(新轮仅统计该轮持仓) +bool g_dual_full_handled = false; // 本轮双向满档是否已处理 + +double g_tier_lots[]; +int g_tier_lots_count = 0; + +PullbackWatchState g_high_pullback_watch; +PullbackWatchState g_low_pullback_watch; +datetime g_pullback_bar_time_high = 0; +bool g_pullback_opened_on_bar_high = false; +datetime g_pullback_bar_time_low = 0; +bool g_pullback_opened_on_bar_low = false; + +int g_prev_day_ma_bias = 0; // -1=前日收<日MA 1=前日收>日MA +datetime g_prev_day_ma_update_d1 = 0; + +// 极值点结构体定义 +struct ExtremePoint { + datetime time; + double price; + int type; + bool is_valid; +}; + +// 函数声明 +void UpdateLatestValidWave(); +int CountBarsBetweenExtremeTimes(const MqlRates &rates[], const datetime t1, const datetime t2); +bool IsValidWaveByBarCount(const MqlRates &rates[], const datetime t1, const datetime t2); +void DrawExtremeMarkers(ExtremePoint &extremes[]); +void DrawLatestValidWave(double high_price, datetime high_time, double low_price, datetime low_time); +int CheckBreakout(int index, const MqlRates &rates[], const double &ma[]); +void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], + const MqlRates &rates[], int &filtered_bars[], int &filtered_types[]); +ENUM_ORDER_TYPE RandomBreakoutOrderType(); +int ParseRoundFromComment(const string &comment); +bool IsEaBreakoutComment(const string &comment); +string FormatBreakoutComment(const int round); +int CountBreakoutPositions(const long pos_type_filter = -1); +int CountAllBreakoutPositions(); +double TotalLotsInDirection(const long pos_type); +bool IsDirectionFullActive(const long pos_type); +void ResetBreakoutWaveEntryFlags(); +void CheckDualSideFullCapacity(); +double NormalizeVolume(double lots); +bool InitTierLotsFromInput(); +int GetMaxTierSlots(); +double LotForTierIndex(const int tier_index); +double CalculateLotSize(const long pos_type); +bool IsSameDirectionTierSlotsFull(const long pos_type); +long PosTypeOnHighBreakout(); +long PosTypeOnLowBreakout(); +void CheckBreakoutSignals(); +void CheckPullbackReverseSignals(); +void TryArmPullbackWatch(); +void ProcessPullbackReverseOnNewBar(); +ENUM_ORDER_TYPE OrderTypeOnHighPullbackReverse(); +ENUM_ORDER_TYPE OrderTypeOnLowPullbackReverse(); +string FormatPullbackReverseComment(const int round); +bool IsPullbackBarOpenAllowed(const bool for_high_extreme); +void MarkPullbackBarOpened(const bool for_high_extreme); +bool OpenPullbackReversePosition(ENUM_ORDER_TYPE order_type, const bool from_high_extreme, + const double extreme_price); +ENUM_ORDER_TYPE OrderTypeOnHighBreakout(); +ENUM_ORDER_TYPE OrderTypeOnLowBreakout(); +void CheckAndCloseManualOrders(); +double TotalBreakoutFloatingPL(); +bool CloseAllBreakoutPositions(const string reason); +void CollectAllTradeRounds(int &rounds[], int &n_rounds); +bool BatchRoundAvgPrice(const int round_id, const long pos_type, double &avg, double &sum_lots); +bool CloseBreakoutRoundBatch(const int round_id, const long pos_type, const string reason); +void CheckBreakoutBatchTakeProfit(); +void CheckBreakoutBalanceStopLoss(); +bool IsLargeLotVolume(const double volume); +double CalcTakeProfitPrice(const long pos_type, const double open_price, const int tp_points); +bool SetLargeLotTakeProfitOnTicket(const ulong ticket); +bool ApplyLargeLotTakeProfitAfterOpen(const long pos_type); +void CheckLargeLotTakeProfit(); +bool OpenBreakoutPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, + const bool from_high_extreme); +void SyncBreakoutBarLock(const bool for_high_extreme); +bool IsBreakoutBarOpenAllowed(const bool for_high_extreme); +void MarkBreakoutBarOpened(const bool for_high_extreme); +bool GetLastSameDirectionOpenPrice(const long pos_type, double &last_open); +bool IsSameDirMinSpacingSatisfied(const long pos_type); +bool IsPrevDayMAFilterMode(); +void UpdatePrevDayMACloseBias(); +int GetPrevDayMACloseBias(); +bool ShouldOpenHighBreakoutPrevDayMA(); +bool ShouldOpenLowBreakoutPrevDayMA(); +bool ShouldOpenHighPullbackPrevDayMA(); +bool ShouldOpenLowPullbackPrevDayMA(); +bool IsDailyMADevFilterMode(); +double GetDailyMADeviationPercent(); +bool ShouldOpenHighBreakoutDailyMADev(); +bool ShouldOpenLowBreakoutDailyMADev(); +bool ShouldOpenHighPullbackDailyMADev(); +bool ShouldOpenLowPullbackDailyMADev(); +bool IsHighBreakoutSignalAllowed(); +bool IsLowBreakoutSignalAllowed(); +bool IsHighPullbackSignalAllowed(); +bool IsLowPullbackSignalAllowed(); + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + // 创建MA指标(使用指定的K线周期) + ma_handle = iMA(_Symbol, InpTimeframe, InpMAPeriod, 0, MODE_SMA, PRICE_CLOSE); + if(ma_handle == INVALID_HANDLE) { + Print("创建MA指标失败"); + return(INIT_FAILED); + } + + daily_ma_handle = iMA(_Symbol, PERIOD_D1, InpMAPeriod, 0, MODE_SMA, PRICE_CLOSE); + if(daily_ma_handle == INVALID_HANDLE) { + Print("创建日K MA指标失败"); + IndicatorRelease(ma_handle); + return(INIT_FAILED); + } + + g_prev_day_ma_bias = 0; + g_prev_day_ma_update_d1 = 0; + + // 设置交易参数 + trade.SetExpertMagicNumber(InpMagicNumber); + trade.SetDeviationInPoints(10); + trade.SetTypeFilling(ORDER_FILLING_IOC); + + // 初始化最新有效波段 + latest_wave.exists = false; + latest_wave.high_price = 0; + latest_wave.low_price = 0; + latest_wave.update_time = 0; + latest_wave.high_breakout_used = false; + latest_wave.low_breakout_used = false; + latest_wave.high_pullback_reverse_used = false; + latest_wave.low_pullback_reverse_used = false; + g_high_pullback_watch.active = false; + g_low_pullback_watch.active = false; + + MathSrand((int)(TimeLocal() ^ GetTickCount())); + + g_trade_round = 1; + g_dual_full_handled = false; + + if(!InitTierLotsFromInput()) { + Print("解析各档手数失败,请检查 InpTierLotsList"); + return(INIT_FAILED); + } + + Print("========================================"); + Print("突破EA初始化成功 (极值点突破开仓)"); + Print("品种:", _Symbol); + Print("K线周期:", EnumToString(InpTimeframe)); + Print("MA周期:", InpMAPeriod); + Print("波段阈值范围: ", InpMinWavePercent, "% - ", InpMaxWavePercent, "%"); + Print("有效波段最少K线: ", InpMinWaveBars, " (两极值间含两端,<=1=不限制)"); + if(InpPullbackTolerance > 0) + Print("反向突破容忍度: ", DoubleToString(InpPullbackTolerance, 1), "% (启用)"); + else + Print("反向突破容忍度: 0% (禁用)"); + if(InpBreakoutDirection == BREAKOUT_DIR_FOLLOW) + Print("开仓方向: 顺势(破高多/破低空)"); + else if(InpBreakoutDirection == BREAKOUT_DIR_REVERSE) + Print("开仓方向: 反向(破高空/破低多)"); + else if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + Print("开仓方向: 前日收线相对日MA(下方:破低空+高极值反向;上方:破高多+低极值反向)"); + else if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + Print("开仓方向: 日MA偏离率反向(偏离>", InpDailyMADevThreshold, + "%:价高于MA做空;偏离<-", InpDailyMADevThreshold, "%:价低于MA做多)"); + else + Print("开仓方向: 随机(每次突破独立随机)"); + Print("开仓限制: 每个极值点(破高/破低)各最多1笔,可多笔并存"); + Print("按批统盈点数:", InpBatchTakeProfitPoints, " (0=关闭,均价±点数平该轮该向)"); + Print("止损(结余%):", InpStopLossBalancePct, " (0=关闭,达标全部清仓)"); + if(InpLargeLotMinVolume > 0.0 && InpLargeLotTakeProfitPoints > 0) + Print("大单独立止盈: >=", InpLargeLotMinVolume, "手 止盈", InpLargeLotTakeProfitPoints, + "点(不参与统盈,平仓后马丁/统盈按剩余持仓重计)"); + else + Print("大单独立止盈: 关"); + if(InpEnablePullbackReverse) + Print("回落反向: 开 破极值后监测", InpPullbackReverseWatchBars, + "根K收盘回到极值内开反向单(与突破开仓独立)"); + else + Print("回落反向: 关"); + Print("同向各档手数: 共", g_tier_lots_count, "档(第1档=", g_tier_lots[0], + " 末档=", g_tier_lots[g_tier_lots_count - 1], ")"); + if(InpMaxLots > 0.0) + Print("同向合计手数上限:", InpMaxLots); + else + Print("同向合计手数上限: 不限制"); + if(InpMinSameDirAddSpacingPercent > 0.0) + Print("同向最小间距%:", InpMinSameDirAddSpacingPercent, + " (多:现价须≤上一笔×(1-%); 空:现价须≥上一笔×(1+%))"); + else + Print("同向最小间距%: 0 (不限制)"); + if(InpDualFullAction == DUAL_FULL_CLEAR_ALL) + Print("双向满档后: 清仓"); + else + Print("双向满档后: 不处理旧仓,开始下一轮(备注带轮次)"); + Print("禁止手工单:", (InpCloseManualOrders ? "启用 (自动平掉手工单)" : "禁用")); + Print("========================================"); + + return(INIT_SUCCEEDED); +} + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ + if(ma_handle != INVALID_HANDLE) + IndicatorRelease(ma_handle); + if(daily_ma_handle != INVALID_HANDLE) + IndicatorRelease(daily_ma_handle); + + // 删除所有标记 + ObjectsDeleteAll(0, "ValidWave_"); + + Print("突破EA已卸载"); +} + +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() +{ + // 1. 检查并关闭手工单(如果启用) + if(InpCloseManualOrders) + CheckAndCloseManualOrders(); + + // 2. 前日收线相对日MA方向(仅该模式) + if(IsPrevDayMAFilterMode()) + UpdatePrevDayMACloseBias(); + + // 3. 更新最新有效波段 + UpdateLatestValidWave(); + + // 4. 大单独立止盈 / 按批统盈(均价+点数) / 结余比例止损(全部持仓) + CheckLargeLotTakeProfit(); + CheckBreakoutBatchTakeProfit(); + CheckBreakoutBalanceStopLoss(); + + // 5. 当前轮双向同向均满档 → 清仓或开新轮 + CheckDualSideFullCapacity(); + + // 6. 突破回落反向(破极值后K线收盘回到极值内) + CheckPullbackReverseSignals(); + + // 7. 突破信号(破极值开仓,每极值点各限1笔,与回落反向独立) + CheckBreakoutSignals(); +} + +//+------------------------------------------------------------------+ +//| 更新最新有效波段 | +//+------------------------------------------------------------------+ +int CountBarsBetweenExtremeTimes(const MqlRates &rates[], const datetime t1, const datetime t2) +{ + const datetime t_lo = (t1 <= t2) ? t1 : t2; + const datetime t_hi = (t1 >= t2) ? t1 : t2; + int count = 0; + const int n = ArraySize(rates); + for(int j = 0; j < n; j++) { + if(rates[j].time >= t_lo && rates[j].time <= t_hi) + count++; + } + return count; +} + +bool IsValidWaveByBarCount(const MqlRates &rates[], const datetime t1, const datetime t2) +{ + if(InpMinWaveBars <= 1) + return true; + return (CountBarsBetweenExtremeTimes(rates, t1, t2) >= InpMinWaveBars); +} + +void UpdateLatestValidWave() +{ + int bars = Bars(_Symbol, InpTimeframe); + if(bars < InpMAPeriod + 2) + return; + + // 限制处理的K线数量 + int process_bars = MathMin(bars, 500); + + // 获取价格数据(使用指定的K线周期) + MqlRates rates[]; + ArraySetAsSeries(rates, true); + if(CopyRates(_Symbol, InpTimeframe, 0, process_bars, rates) <= 0) + return; + + // 获取MA数据 + double ma_array[]; + ArraySetAsSeries(ma_array, true); + if(CopyBuffer(ma_handle, 0, 0, process_bars, ma_array) <= 0) + return; + + // 识别突破K线 + int breakout_bars[]; + int breakout_types[]; + ArrayResize(breakout_bars, 0); + ArrayResize(breakout_types, 0); + + for(int i = process_bars - InpMAPeriod - 1; i >= 1; i--) { + int breakout_type = CheckBreakout(i, rates, ma_array); + if(breakout_type != 0) { + int size = ArraySize(breakout_bars); + ArrayResize(breakout_bars, size + 1); + ArrayResize(breakout_types, size + 1); + breakout_bars[size] = i; + breakout_types[size] = breakout_type; + } + } + + // 过滤连续同向突破 + int filtered_bars[]; + int filtered_types[]; + FilterBreakouts(breakout_bars, breakout_types, rates, filtered_bars, filtered_types); + + // 计算极值点(支持反向突破容忍度) + ExtremePoint extremes[]; + ArrayResize(extremes, 0); + + // 如果容忍度为0,使用原有逻辑(相邻突破K线之间的极值) + if(InpPullbackTolerance <= 0.0) + { + for(int i = 0; i < ArraySize(filtered_bars) - 1; i++) { + int current_bar = filtered_bars[i]; + int current_type = filtered_types[i]; + int next_bar = filtered_bars[i + 1]; + + double extreme_price = 0; + datetime extreme_time = 0; + + if(current_type == 1) { + extreme_price = rates[current_bar].high; + extreme_time = rates[current_bar].time; + for(int j = current_bar; j >= next_bar; j--) { + if(rates[j].high > extreme_price) { + extreme_price = rates[j].high; + extreme_time = rates[j].time; + } + } + } else { + extreme_price = rates[current_bar].low; + extreme_time = rates[current_bar].time; + for(int j = current_bar; j >= next_bar; j--) { + if(rates[j].low < extreme_price) { + extreme_price = rates[j].low; + extreme_time = rates[j].time; + } + } + } + + int size = ArraySize(extremes); + ArrayResize(extremes, size + 1); + extremes[size].time = extreme_time; + extremes[size].price = extreme_price; + extremes[size].type = current_type; + extremes[size].is_valid = false; + } + } + else + { + // 容忍模式:跨越反向突破K线计算波段 + for(int i = 0; i < ArraySize(filtered_bars); i++) { + int start_bar = filtered_bars[i]; + int start_type = filtered_types[i]; + + double wave_high = rates[start_bar].high; + double wave_low = rates[start_bar].low; + datetime wave_high_time = rates[start_bar].time; + datetime wave_low_time = rates[start_bar].time; + int end_bar = 0; + bool wave_terminated = false; + + // 向后扫描,直到遇到不可容忍的反向突破 + for(int j = i + 1; j < ArraySize(filtered_bars); j++) { + int current_bar = filtered_bars[j]; + int current_type = filtered_types[j]; + + // 更新波段的高低点 + if(rates[current_bar].high > wave_high) { + wave_high = rates[current_bar].high; + wave_high_time = rates[current_bar].time; + } + if(rates[current_bar].low < wave_low) { + wave_low = rates[current_bar].low; + wave_low_time = rates[current_bar].time; + } + + // 检查中间所有K线的极值 + int prev_bar = (j > 0) ? filtered_bars[j-1] : start_bar; + for(int k = prev_bar; k >= current_bar; k--) { + if(rates[k].high > wave_high) { + wave_high = rates[k].high; + wave_high_time = rates[k].time; + } + if(rates[k].low < wave_low) { + wave_low = rates[k].low; + wave_low_time = rates[k].time; + } + } + + // 如果遇到反向突破K线,检查回撤是否可容忍 + if(current_type != start_type) { + double wave_range = wave_high - wave_low; + double pullback_percent = 0; + + if(start_type == 1) { + // 多头波段遇到空单突破K线 + pullback_percent = ((wave_high - rates[current_bar].close) / wave_range) * 100.0; + } else { + // 空头波段遇到多单突破K线 + pullback_percent = ((rates[current_bar].close - wave_low) / wave_range) * 100.0; + } + + if(pullback_percent > InpPullbackTolerance) { + // 回撤超过容忍度,终止波段 + end_bar = current_bar; + wave_terminated = true; + break; + } + // 否则继续,忽略此反向突破 + } + } + + // 添加极值点 + if(start_type == 1) { + // 多头波段:先低点后高点 + int size = ArraySize(extremes); + ArrayResize(extremes, size + 1); + extremes[size].time = wave_low_time; + extremes[size].price = wave_low; + extremes[size].type = -1; // 低点 + extremes[size].is_valid = false; + + ArrayResize(extremes, size + 2); + extremes[size + 1].time = wave_high_time; + extremes[size + 1].price = wave_high; + extremes[size + 1].type = 1; // 高点 + extremes[size + 1].is_valid = false; + } else { + // 空头波段:先高点后低点 + int size = ArraySize(extremes); + ArrayResize(extremes, size + 1); + extremes[size].time = wave_high_time; + extremes[size].price = wave_high; + extremes[size].type = 1; // 高点 + extremes[size].is_valid = false; + + ArrayResize(extremes, size + 2); + extremes[size + 1].time = wave_low_time; + extremes[size + 1].price = wave_low; + extremes[size + 1].type = -1; // 低点 + extremes[size + 1].is_valid = false; + } + + // 如果波段被终止,跳到终止点继续 + if(wave_terminated) { + // 找到end_bar在filtered_bars中的索引 + for(int k = i + 1; k < ArraySize(filtered_bars); k++) { + if(filtered_bars[k] == end_bar) { + i = k - 1; // -1因为循环会++ + break; + } + } + } else { + // 波段延续到最后 + break; + } + } + } + + // 判断有效波段并标记 + for(int i = 1; i < ArraySize(extremes); i++) { + double price_diff = MathAbs(extremes[i].price - extremes[i-1].price); + double price_diff_points = price_diff / _Point; + + // 计算阈值(百分比模式:以前一个极值点价格为基准计算百分比) + double base_price = extremes[i-1].price; + double min_threshold = (base_price * InpMinWavePercent / 100.0) / _Point; + double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; + + // 波段必须在最小和最大阈值之间才是有效波段 + if(price_diff_points >= min_threshold && price_diff_points <= max_threshold && + IsValidWaveByBarCount(rates, extremes[i - 1].time, extremes[i].time)) { + extremes[i-1].is_valid = true; + extremes[i].is_valid = true; + } + } + + // 绘制所有极值点标记 + if(InpShowMarkers) { + DrawExtremeMarkers(extremes); + } + + // 查找最新的有效波段 + for(int i = ArraySize(extremes) - 1; i >= 1; i--) { + double price_diff = MathAbs(extremes[i].price - extremes[i-1].price); + double price_diff_points = price_diff / _Point; + + // 计算阈值(百分比模式) + double base_price = extremes[i-1].price; + double min_threshold = (base_price * InpMinWavePercent / 100.0) / _Point; + double max_threshold = (base_price * InpMaxWavePercent / 100.0) / _Point; + + // 波段必须在最小和最大阈值之间才是有效波段 + if(price_diff_points >= min_threshold && price_diff_points <= max_threshold && + IsValidWaveByBarCount(rates, extremes[i - 1].time, extremes[i].time)) { + // 找到最新的有效波段 + double high = MathMax(extremes[i].price, extremes[i-1].price); + double low = MathMin(extremes[i].price, extremes[i-1].price); + datetime high_time = (extremes[i].price > extremes[i-1].price) ? extremes[i].time : extremes[i-1].time; + datetime low_time = (extremes[i].price < extremes[i-1].price) ? extremes[i].time : extremes[i-1].time; + + // 检查是否是新的波段 + if(latest_wave.exists == false || + extremes[i].time > latest_wave.update_time || + high != latest_wave.high_price || + low != latest_wave.low_price) { + + const double prev_high = latest_wave.high_price; + const double prev_low = latest_wave.low_price; + + latest_wave.exists = true; + latest_wave.high_price = high; + latest_wave.low_price = low; + latest_wave.update_time = extremes[i].time; + + // 极值价格更新 → 该侧可再开1笔(与是否已有其它持仓无关) + if(high != prev_high) { + latest_wave.high_breakout_used = false; + latest_wave.high_pullback_reverse_used = false; + g_high_pullback_watch.active = false; + } + if(low != prev_low) { + latest_wave.low_breakout_used = false; + latest_wave.low_pullback_reverse_used = false; + g_low_pullback_watch.active = false; + } + + // 绘制最新有效波段 + if(InpShowMarkers) { + DrawLatestValidWave(high, high_time, low, low_time); + } + + if(InpShowDebugInfo) { + Print("更新最新有效波段 - 高:", DoubleToString(high, _Digits), + " 低:", DoubleToString(low, _Digits), + " 价差:", (int)price_diff_points, "点", + " K线数:", CountBarsBetweenExtremeTimes(rates, extremes[i - 1].time, extremes[i].time), + " 阈值范围:", StringFormat("%.2f%%-%.2f%% (%.0f-%.0f点)", + InpMinWavePercent, InpMaxWavePercent, min_threshold, max_threshold)); + } + } + break; + } + } +} + +//+------------------------------------------------------------------+ +//| 绘制所有极值点标记 | +//+------------------------------------------------------------------+ +void DrawExtremeMarkers(ExtremePoint &extremes[]) +{ + // 删除旧的标记 + ObjectsDeleteAll(0, "ValidWave_Extreme_"); + + for(int i = 0; i < ArraySize(extremes); i++) { + string obj_name = "ValidWave_Extreme_" + IntegerToString(i); + + if(extremes[i].type == 1) { + // 高点 - 画下箭头 + ObjectCreate(0, obj_name, OBJ_ARROW, 0, extremes[i].time, extremes[i].price); + ObjectSetInteger(0, obj_name, OBJPROP_ARROWCODE, 234); + ObjectSetInteger(0, obj_name, OBJPROP_COLOR, extremes[i].is_valid ? clrRed : clrDarkRed); + ObjectSetInteger(0, obj_name, OBJPROP_WIDTH, extremes[i].is_valid ? 3 : 1); + ObjectSetInteger(0, obj_name, OBJPROP_ANCHOR, ANCHOR_BOTTOM); + } else { + // 低点 - 画上箭头 + ObjectCreate(0, obj_name, OBJ_ARROW, 0, extremes[i].time, extremes[i].price); + ObjectSetInteger(0, obj_name, OBJPROP_ARROWCODE, 233); + ObjectSetInteger(0, obj_name, OBJPROP_COLOR, extremes[i].is_valid ? clrLime : clrDarkGreen); + ObjectSetInteger(0, obj_name, OBJPROP_WIDTH, extremes[i].is_valid ? 3 : 1); + ObjectSetInteger(0, obj_name, OBJPROP_ANCHOR, ANCHOR_TOP); + } + } +} + +//+------------------------------------------------------------------+ +//| 绘制最新有效波段 | +//+------------------------------------------------------------------+ +void DrawLatestValidWave(double high_price, datetime high_time, double low_price, datetime low_time) +{ + // 删除旧的最新波段标记 + ObjectDelete(0, "ValidWave_Latest_High"); + ObjectDelete(0, "ValidWave_Latest_Low"); + ObjectDelete(0, "ValidWave_Latest_Line"); + + // 标记最新有效波段的高点(更大更亮的箭头) + ObjectCreate(0, "ValidWave_Latest_High", OBJ_ARROW, 0, high_time, high_price); + ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_ARROWCODE, 234); + ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_COLOR, clrYellow); + ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_WIDTH, 4); + ObjectSetInteger(0, "ValidWave_Latest_High", OBJPROP_ANCHOR, ANCHOR_BOTTOM); + + // 标记最新有效波段的低点 + ObjectCreate(0, "ValidWave_Latest_Low", OBJ_ARROW, 0, low_time, low_price); + ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_ARROWCODE, 233); + ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_COLOR, clrYellow); + ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_WIDTH, 4); + ObjectSetInteger(0, "ValidWave_Latest_Low", OBJPROP_ANCHOR, ANCHOR_TOP); + + // 绘制连接线 + ObjectCreate(0, "ValidWave_Latest_Line", OBJ_TREND, 0, high_time, high_price, low_time, low_price); + ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_COLOR, clrYellow); + ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_WIDTH, 2); + ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_STYLE, STYLE_SOLID); + ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_RAY_RIGHT, false); + ObjectSetInteger(0, "ValidWave_Latest_Line", OBJPROP_BACK, true); +} + +//+------------------------------------------------------------------+ +//| 检查是否是突破K线 | +//+------------------------------------------------------------------+ +int CheckBreakout(int index, const MqlRates &rates[], const double &ma[]) +{ + if(rates[index].open < ma[index] && rates[index].close > ma[index]) + return 1; + if(rates[index].open > ma[index] && rates[index].close < ma[index]) + return -1; + return 0; +} + +//+------------------------------------------------------------------+ +//| 过滤连续同向突破 | +//+------------------------------------------------------------------+ +void FilterBreakouts(const int &breakout_bars[], const int &breakout_types[], + const MqlRates &rates[], int &filtered_bars[], int &filtered_types[]) +{ + int total = ArraySize(breakout_bars); + ArrayResize(filtered_bars, 0); + ArrayResize(filtered_types, 0); + + for(int i = 0; i < total; i++) { + int current_bar = breakout_bars[i]; + int current_type = breakout_types[i]; + + bool skip = false; + for(int j = i + 1; j < total; j++) { + if(breakout_types[j] != current_type) + break; + + if(current_type == 1) { + if(rates[breakout_bars[j]].low < rates[current_bar].low) { + skip = true; + break; + } + } else { + if(rates[breakout_bars[j]].high > rates[current_bar].high) { + skip = true; + break; + } + } + } + + if(!skip) { + int size = ArraySize(filtered_bars); + ArrayResize(filtered_bars, size + 1); + ArrayResize(filtered_types, size + 1); + filtered_bars[size] = current_bar; + filtered_types[size] = current_type; + } + } +} + +ENUM_ORDER_TYPE RandomBreakoutOrderType() +{ + return ((MathRand() & 1) != 0) ? ORDER_TYPE_BUY : ORDER_TYPE_SELL; +} + +bool IsPrevDayMAFilterMode() +{ + return (InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA); +} + +void UpdatePrevDayMACloseBias() +{ + const datetime d1_time = iTime(_Symbol, PERIOD_D1, 0); + if(d1_time == 0) + return; + if(g_prev_day_ma_update_d1 == d1_time) + return; + + g_prev_day_ma_update_d1 = d1_time; + g_prev_day_ma_bias = 0; + + const double prev_close = iClose(_Symbol, PERIOD_D1, 1); + if(prev_close <= 0.0) + return; + + double ma_buf[]; + ArraySetAsSeries(ma_buf, true); + if(CopyBuffer(daily_ma_handle, 0, 1, 1, ma_buf) <= 0) + return; + + const double daily_ma = ma_buf[0]; + if(daily_ma <= 0.0) + return; + + if(prev_close < daily_ma - _Point * 0.5) + g_prev_day_ma_bias = -1; + else if(prev_close > daily_ma + _Point * 0.5) + g_prev_day_ma_bias = 1; + else + g_prev_day_ma_bias = 0; + + if(InpShowDebugInfo) { + Print("【前日MA方向】前日收:", DoubleToString(prev_close, _Digits), + " 日MA(", InpMAPeriod, "):", DoubleToString(daily_ma, _Digits), + " 偏向:", (g_prev_day_ma_bias < 0 ? "只空" : (g_prev_day_ma_bias > 0 ? "只多" : "中性"))); + } +} + +int GetPrevDayMACloseBias() +{ + return g_prev_day_ma_bias; +} + +bool ShouldOpenHighBreakoutPrevDayMA() +{ + return (GetPrevDayMACloseBias() > 0); +} + +bool ShouldOpenLowBreakoutPrevDayMA() +{ + return (GetPrevDayMACloseBias() < 0); +} + +bool ShouldOpenHighPullbackPrevDayMA() +{ + return (GetPrevDayMACloseBias() < 0); +} + +bool ShouldOpenLowPullbackPrevDayMA() +{ + return (GetPrevDayMACloseBias() > 0); +} + +bool IsDailyMADevFilterMode() +{ + return (InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION); +} + +double GetDailyMADeviationPercent() +{ + if(InpDailyMADevThreshold <= 0.0) + return 0.0; + + double ma_buf[]; + ArraySetAsSeries(ma_buf, true); + if(CopyBuffer(daily_ma_handle, 0, 0, 1, ma_buf) <= 0) + return 0.0; + + const double daily_ma = ma_buf[0]; + if(daily_ma <= 0.0) + return 0.0; + + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + const double price = (bid + ask) * 0.5; + return (price - daily_ma) / daily_ma * 100.0; +} + +bool ShouldOpenHighBreakoutDailyMADev() +{ + if(InpDailyMADevThreshold <= 0.0) + return false; + return (GetDailyMADeviationPercent() > InpDailyMADevThreshold); +} + +bool ShouldOpenLowBreakoutDailyMADev() +{ + if(InpDailyMADevThreshold <= 0.0) + return false; + return (GetDailyMADeviationPercent() < -InpDailyMADevThreshold); +} + +bool ShouldOpenHighPullbackDailyMADev() +{ + return ShouldOpenHighBreakoutDailyMADev(); +} + +bool ShouldOpenLowPullbackDailyMADev() +{ + return ShouldOpenLowBreakoutDailyMADev(); +} + +bool IsHighBreakoutSignalAllowed() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + return ShouldOpenHighBreakoutPrevDayMA(); + if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return ShouldOpenHighBreakoutDailyMADev(); + return true; +} + +bool IsLowBreakoutSignalAllowed() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + return ShouldOpenLowBreakoutPrevDayMA(); + if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return ShouldOpenLowBreakoutDailyMADev(); + return true; +} + +bool IsHighPullbackSignalAllowed() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + return ShouldOpenHighPullbackPrevDayMA(); + if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return ShouldOpenHighPullbackDailyMADev(); + return true; +} + +bool IsLowPullbackSignalAllowed() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + return ShouldOpenLowPullbackPrevDayMA(); + if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return ShouldOpenLowPullbackDailyMADev(); + return true; +} + +int ParseRoundFromComment(const string &comment) +{ + if(StringFind(comment, "[突破") != 0) + return 0; + const int i_r = StringFind(comment, "-R"); + if(i_r < 0) + return 1; + const int start = i_r + 2; + const int end_br = StringFind(comment, "]", start); + if(end_br <= start) + return 1; + const int r = (int)StringToInteger(StringSubstr(comment, start, end_br - start)); + return (r >= 1) ? r : 1; +} + +bool IsEaBreakoutComment(const string &comment) +{ + return (StringFind(comment, "[突破") == 0); +} + +string FormatBreakoutComment(const int round) +{ + if(round <= 1) + return "[突破]"; + return StringFormat("[突破-R%d]", round); +} + +string FormatPullbackReverseComment(const int round) +{ + if(round <= 1) + return "[突破-回落]"; + return StringFormat("[突破-回落-R%d]", round); +} + +ENUM_ORDER_TYPE OrderTypeOnHighPullbackReverse() +{ + return ORDER_TYPE_SELL; +} + +ENUM_ORDER_TYPE OrderTypeOnLowPullbackReverse() +{ + return ORDER_TYPE_BUY; +} + +void SyncPullbackBarLock(const bool for_high_extreme) +{ + const datetime bar_time = iTime(_Symbol, InpTimeframe, 0); + if(bar_time == 0) + return; + if(for_high_extreme) { + if(bar_time != g_pullback_bar_time_high) { + g_pullback_bar_time_high = bar_time; + g_pullback_opened_on_bar_high = false; + } + } else { + if(bar_time != g_pullback_bar_time_low) { + g_pullback_bar_time_low = bar_time; + g_pullback_opened_on_bar_low = false; + } + } +} + +bool IsPullbackBarOpenAllowed(const bool for_high_extreme) +{ + SyncPullbackBarLock(for_high_extreme); + if(for_high_extreme) + return !g_pullback_opened_on_bar_high; + return !g_pullback_opened_on_bar_low; +} + +void MarkPullbackBarOpened(const bool for_high_extreme) +{ + SyncPullbackBarLock(for_high_extreme); + if(for_high_extreme) + g_pullback_opened_on_bar_high = true; + else + g_pullback_opened_on_bar_low = true; +} + +bool OpenPullbackReversePosition(ENUM_ORDER_TYPE order_type, const bool from_high_extreme, + const double extreme_price) +{ + if(!IsPullbackBarOpenAllowed(from_high_extreme)) + return false; + + const long pos_type = (order_type == ORDER_TYPE_BUY) ? POSITION_TYPE_BUY : POSITION_TYPE_SELL; + const double lots = CalculateLotSize(pos_type); + if(lots <= 0.0) + return false; + + if(InpMaxLots > 0.0) { + const double cur_lots = TotalLotsInDirection(pos_type); + if(cur_lots + lots > InpMaxLots + 1e-8) { + if(InpShowDebugInfo) + Print("【回落反向】开仓跳过 - 同向合计将超上限 ", InpMaxLots); + return false; + } + } + + if(!IsSameDirMinSpacingSatisfied(pos_type)) { + if(InpShowDebugInfo) + Print("【回落反向】开仓跳过 - 未达同向最小间距%"); + return false; + } + + const string comment = FormatPullbackReverseComment(g_trade_round); + bool result = false; + if(order_type == ORDER_TYPE_BUY) + result = trade.Buy(lots, _Symbol, 0, 0, 0, comment); + else + result = trade.Sell(lots, _Symbol, 0, 0, 0, comment); + + if(!result) { + Print("【回落反向】开仓失败: ", trade.ResultRetcode(), " - ", + trade.ResultRetcodeDescription()); + return false; + } + + MarkPullbackBarOpened(from_high_extreme); + ApplyLargeLotTakeProfitAfterOpen(pos_type); + Print("【回落反向】开仓成功 ", (order_type == ORDER_TYPE_BUY ? "多" : "空"), + " 手数:", lots, " 极值:", extreme_price, " 备注:", comment); + return true; +} + +void TryArmPullbackWatch() +{ + if(!InpEnablePullbackReverse || !latest_wave.exists) + return; + + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + + if(ask > latest_wave.high_price && !latest_wave.high_pullback_reverse_used) { + if(!g_high_pullback_watch.active || + g_high_pullback_watch.extreme_price != latest_wave.high_price) { + g_high_pullback_watch.active = true; + g_high_pullback_watch.extreme_price = latest_wave.high_price; + g_high_pullback_watch.bars_checked = 0; + if(InpShowDebugInfo) + Print("【回落反向】开始监测破高 极值:", latest_wave.high_price, + " 共", InpPullbackReverseWatchBars, "根K"); + } + } + + if(bid < latest_wave.low_price && !latest_wave.low_pullback_reverse_used) { + if(!g_low_pullback_watch.active || + g_low_pullback_watch.extreme_price != latest_wave.low_price) { + g_low_pullback_watch.active = true; + g_low_pullback_watch.extreme_price = latest_wave.low_price; + g_low_pullback_watch.bars_checked = 0; + if(InpShowDebugInfo) + Print("【回落反向】开始监测破低 极值:", latest_wave.low_price, + " 共", InpPullbackReverseWatchBars, "根K"); + } + } +} + +void ProcessPullbackReverseOnNewBar() +{ + if(!InpEnablePullbackReverse || !latest_wave.exists) + return; + + const int max_bars = MathMax(1, InpPullbackReverseWatchBars); + + if(g_high_pullback_watch.active && !latest_wave.high_pullback_reverse_used) { + const double close1 = iClose(_Symbol, InpTimeframe, 1); + if(close1 > 0.0 && close1 <= g_high_pullback_watch.extreme_price) { + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA && !IsHighPullbackSignalAllowed()) { + if(InpShowDebugInfo) + Print("【回落反向】破高反向跳过 - 前日收线在日MA上方,仅处理低极值回落多"); + latest_wave.high_pullback_reverse_used = true; + } else if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION && + !IsHighPullbackSignalAllowed()) { + if(InpShowDebugInfo) + Print("【回落反向】破高反向跳过 - 日MA偏离未超阈值或方向不符 偏离率:", + DoubleToString(GetDailyMADeviationPercent(), 2), "%"); + latest_wave.high_pullback_reverse_used = true; + } else if(OpenPullbackReversePosition(OrderTypeOnHighPullbackReverse(), true, + g_high_pullback_watch.extreme_price)) { + latest_wave.high_pullback_reverse_used = true; + } + g_high_pullback_watch.active = false; + } else { + g_high_pullback_watch.bars_checked++; + if(g_high_pullback_watch.bars_checked >= max_bars) { + if(InpShowDebugInfo) + Print("【回落反向】破高监测结束 未回落极值内"); + g_high_pullback_watch.active = false; + } + } + } + + if(g_low_pullback_watch.active && !latest_wave.low_pullback_reverse_used) { + const double close1 = iClose(_Symbol, InpTimeframe, 1); + if(close1 > 0.0 && close1 >= g_low_pullback_watch.extreme_price) { + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA && !IsLowPullbackSignalAllowed()) { + if(InpShowDebugInfo) + Print("【回落反向】破低反向跳过 - 前日收线在日MA下方,仅处理高极值回落空"); + latest_wave.low_pullback_reverse_used = true; + } else if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION && + !IsLowPullbackSignalAllowed()) { + if(InpShowDebugInfo) + Print("【回落反向】破低反向跳过 - 日MA偏离未超阈值或方向不符 偏离率:", + DoubleToString(GetDailyMADeviationPercent(), 2), "%"); + latest_wave.low_pullback_reverse_used = true; + } else if(OpenPullbackReversePosition(OrderTypeOnLowPullbackReverse(), false, + g_low_pullback_watch.extreme_price)) { + latest_wave.low_pullback_reverse_used = true; + } + g_low_pullback_watch.active = false; + } else { + g_low_pullback_watch.bars_checked++; + if(g_low_pullback_watch.bars_checked >= max_bars) { + if(InpShowDebugInfo) + Print("【回落反向】破低监测结束 未回升极值内"); + g_low_pullback_watch.active = false; + } + } + } +} + +void CheckPullbackReverseSignals() +{ + if(!InpEnablePullbackReverse) + return; + + TryArmPullbackWatch(); + + static datetime s_last_bar_time = 0; + const datetime bar_time = iTime(_Symbol, InpTimeframe, 0); + if(bar_time == 0 || bar_time == s_last_bar_time) + return; + s_last_bar_time = bar_time; + + ProcessPullbackReverseOnNewBar(); +} + +void ResetBreakoutWaveEntryFlags() +{ + latest_wave.high_breakout_used = false; + latest_wave.low_breakout_used = false; + latest_wave.high_pullback_reverse_used = false; + latest_wave.low_pullback_reverse_used = false; + g_high_pullback_watch.active = false; + g_low_pullback_watch.active = false; +} + +int CountAllBreakoutPositions() +{ + int count = 0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + continue; + count++; + } + return count; +} + +int CountBreakoutPositions(const long pos_type_filter) +{ + int count = 0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + const string c = PositionGetString(POSITION_COMMENT); + if(ParseRoundFromComment(c) != g_trade_round) + continue; + if(pos_type_filter >= 0 && PositionGetInteger(POSITION_TYPE) != pos_type_filter) + continue; + count++; + } + return count; +} + +double TotalLotsInDirection(const long pos_type) +{ + double sum = 0.0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(PositionGetInteger(POSITION_TYPE) != pos_type) + continue; + if(ParseRoundFromComment(PositionGetString(POSITION_COMMENT)) != g_trade_round) + continue; + sum += PositionGetDouble(POSITION_VOLUME); + } + return sum; +} + +bool IsSameDirectionTierSlotsFull(const long pos_type) +{ + const int tier = CountBreakoutPositions(pos_type); + if(tier >= g_tier_lots_count) + return true; + const double next_lot = LotForTierIndex(tier); + if(next_lot <= 0.0) + return true; + if(InpMaxLots > 0.0) { + const double cur = TotalLotsInDirection(pos_type); + if(cur >= InpMaxLots - 1e-8) + return true; + if(cur + next_lot > InpMaxLots + 1e-8) + return true; + } + return false; +} + +bool IsDirectionFullActive(const long pos_type) +{ + return IsSameDirectionTierSlotsFull(pos_type); +} + +void CheckDualSideFullCapacity() +{ + const bool buy_full = IsDirectionFullActive(POSITION_TYPE_BUY); + const bool sell_full = IsDirectionFullActive(POSITION_TYPE_SELL); + + if(!buy_full || !sell_full) { + g_dual_full_handled = false; + return; + } + + if(g_dual_full_handled) + return; + + g_dual_full_handled = true; + + const double buy_lots = TotalLotsInDirection(POSITION_TYPE_BUY); + const double sell_lots = TotalLotsInDirection(POSITION_TYPE_SELL); + + if(InpDualFullAction == DUAL_FULL_CLEAR_ALL) { + CloseAllBreakoutPositions( + StringFormat("双向满档清仓 本轮多%.2f空%.2f上限%.2f", buy_lots, sell_lots, InpMaxLots)); + g_trade_round = 1; + ResetBreakoutWaveEntryFlags(); + g_breakout_opened_on_bar_high = false; + g_breakout_opened_on_bar_low = false; + return; + } + + g_trade_round++; + ResetBreakoutWaveEntryFlags(); + g_breakout_opened_on_bar_high = false; + g_breakout_opened_on_bar_low = false; + Print("【突破】双向满档 开始第", g_trade_round, "轮 (旧仓保留,本轮从基准手数重计 多", + DoubleToString(buy_lots, 2), " 空", DoubleToString(sell_lots, 2), " 上限", InpMaxLots, ")"); +} + +long PosTypeOnHighBreakout() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_REVERSE || + InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return POSITION_TYPE_SELL; + return POSITION_TYPE_BUY; +} + +long PosTypeOnLowBreakout() +{ + if(InpBreakoutDirection == BREAKOUT_DIR_REVERSE || + InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + return POSITION_TYPE_BUY; + return POSITION_TYPE_SELL; +} + +ENUM_ORDER_TYPE OrderTypeOnHighBreakout() +{ + return (ENUM_ORDER_TYPE)PosTypeOnHighBreakout(); +} + +ENUM_ORDER_TYPE OrderTypeOnLowBreakout() +{ + return (ENUM_ORDER_TYPE)PosTypeOnLowBreakout(); +} + +//+------------------------------------------------------------------+ +//| 突破信号:破极值开仓(每极值点各限1笔,可多笔并存) | +//+------------------------------------------------------------------+ +void CheckBreakoutSignals() +{ + if(!latest_wave.exists) + return; + + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + + if(ask > latest_wave.high_price) { + if(!latest_wave.high_breakout_used && IsBreakoutBarOpenAllowed(true)) { + if(!IsHighBreakoutSignalAllowed()) { + if(InpShowDebugInfo) { + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + Print("【突破】破高跳过 - 前日收线在日MA下方,仅处理破低空/高极值回落反向"); + else if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + Print("【突破】破高跳过 - 日MA偏离未超+", InpDailyMADevThreshold, + "% 当前:", DoubleToString(GetDailyMADeviationPercent(), 2), "%"); + } + latest_wave.high_breakout_used = true; + } else { + ENUM_ORDER_TYPE ot; + if(InpBreakoutDirection == BREAKOUT_DIR_RANDOM) + ot = RandomBreakoutOrderType(); + else + ot = OrderTypeOnHighBreakout(); + if(InpShowDebugInfo) + Print("【突破】破高开仓 ", (ot == ORDER_TYPE_BUY ? "多" : "空"), + " Ask:", ask, " 高点:", latest_wave.high_price); + if(OpenBreakoutPosition(ot, latest_wave.high_price, latest_wave.low_price, true)) + latest_wave.high_breakout_used = true; + } + } + } + + if(bid < latest_wave.low_price) { + if(!latest_wave.low_breakout_used && IsBreakoutBarOpenAllowed(false)) { + if(!IsLowBreakoutSignalAllowed()) { + if(InpShowDebugInfo) { + if(InpBreakoutDirection == BREAKOUT_DIR_PREV_DAY_MA) + Print("【突破】破低跳过 - 前日收线在日MA上方,仅处理破高多/低极值回落反向"); + else if(InpBreakoutDirection == BREAKOUT_DIR_DAILY_MA_DEVIATION) + Print("【突破】破低跳过 - 日MA偏离未超-", InpDailyMADevThreshold, + "% 当前:", DoubleToString(GetDailyMADeviationPercent(), 2), "%"); + } + latest_wave.low_breakout_used = true; + } else { + ENUM_ORDER_TYPE ot; + if(InpBreakoutDirection == BREAKOUT_DIR_RANDOM) + ot = RandomBreakoutOrderType(); + else + ot = OrderTypeOnLowBreakout(); + if(InpShowDebugInfo) + Print("【突破】破低开仓 ", (ot == ORDER_TYPE_BUY ? "多" : "空"), + " Bid:", bid, " 低点:", latest_wave.low_price); + if(OpenBreakoutPosition(ot, latest_wave.high_price, latest_wave.low_price, false)) + latest_wave.low_breakout_used = true; + } + } + } +} + +//+------------------------------------------------------------------+ +//| 手数规范化 | +//+------------------------------------------------------------------+ +double NormalizeVolume(double lots) +{ + const double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); + const double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + const double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); + if(lots < min_lot) + lots = min_lot; + if(lots > max_lot) + lots = max_lot; + if(lot_step > 0.0) + lots = MathFloor(lots / lot_step) * lot_step; + return lots; +} + +bool InitTierLotsFromInput() +{ + ArrayResize(g_tier_lots, 0); + g_tier_lots_count = 0; + + string parts[]; + const int n = StringSplit(InpTierLotsList, ',', parts); + if(n <= 0) + return false; + + for(int i = 0; i < n; i++) { + string token = parts[i]; + StringTrimLeft(token); + StringTrimRight(token); + if(StringLen(token) == 0) + continue; + const double v = StringToDouble(token); + if(v <= 0.0) + continue; + ArrayResize(g_tier_lots, g_tier_lots_count + 1); + g_tier_lots[g_tier_lots_count++] = v; + } + return (g_tier_lots_count > 0); +} + +int GetMaxTierSlots() +{ + return g_tier_lots_count; +} + +double LotForTierIndex(const int tier_index) +{ + if(tier_index < 0 || tier_index >= g_tier_lots_count) + return 0.0; + double vol = g_tier_lots[tier_index]; + if(InpMaxLots > 0.0) + vol = MathMin(vol, InpMaxLots); + return NormalizeVolume(vol); +} + +//+------------------------------------------------------------------+ +//| 按同向已有笔数取下一档手数(tier=0为第1笔) | +//+------------------------------------------------------------------+ +double CalculateLotSize(const long pos_type) +{ + const int tier = CountBreakoutPositions(pos_type); + return LotForTierIndex(tier); +} + +bool GetLastSameDirectionOpenPrice(const long pos_type, double &last_open) +{ + last_open = 0.0; + datetime last_tm = 0; + bool found = false; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(PositionGetInteger(POSITION_TYPE) != pos_type) + continue; + if(ParseRoundFromComment(PositionGetString(POSITION_COMMENT)) != g_trade_round) + continue; + const datetime tm = (datetime)PositionGetInteger(POSITION_TIME); + if(!found || tm >= last_tm) { + last_tm = tm; + last_open = PositionGetDouble(POSITION_PRICE_OPEN); + found = true; + } + } + return found; +} + +bool IsSameDirMinSpacingSatisfied(const long pos_type) +{ + if(InpMinSameDirAddSpacingPercent <= 0.0) + return true; + + if(CountBreakoutPositions(pos_type) <= 0) + return true; + + double last_open = 0.0; + if(!GetLastSameDirectionOpenPrice(pos_type, last_open)) + return true; + + const double ratio = InpMinSameDirAddSpacingPercent / 100.0; + if(pos_type == POSITION_TYPE_BUY) { + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + const double need = last_open * (1.0 - ratio); + return (ask <= need); + } + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + const double need = last_open * (1.0 + ratio); + return (bid >= need); +} + +double TotalBreakoutFloatingPL() +{ + double sum = 0.0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + continue; + sum += PositionGetDouble(POSITION_PROFIT); + sum += PositionGetDouble(POSITION_SWAP); + } + return sum; +} + +bool CloseAllBreakoutPositions(const string reason) +{ + ulong tickets[]; + int n = 0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + continue; + ArrayResize(tickets, n + 1); + tickets[n++] = PositionGetTicket(i); + } + bool ok = true; + for(int j = 0; j < n; j++) { + if(!trade.PositionClose(tickets[j])) + ok = false; + } + if(ok && n > 0) { + g_trade_round = 1; + g_dual_full_handled = false; + ResetBreakoutWaveEntryFlags(); + Print("【突破】全部清仓 笔数=", n, " 原因:", reason); + } + return ok && n > 0; +} + +bool IsLargeLotVolume(const double volume) +{ + return (InpLargeLotMinVolume > 0.0 && volume >= InpLargeLotMinVolume - 1e-8); +} + +double CalcTakeProfitPrice(const long pos_type, const double open_price, const int tp_points) +{ + if(tp_points <= 0) + return 0.0; + + const double tp_off = (double)tp_points * _Point; + double tp = (pos_type == POSITION_TYPE_BUY) ? (open_price + tp_off) : (open_price - tp_off); + + const int stops_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); + if(stops_level > 0) { + const double min_dist = (double)stops_level * _Point; + if(pos_type == POSITION_TYPE_BUY) { + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + if(tp - bid < min_dist) + tp = bid + min_dist; + } else { + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + if(ask - tp < min_dist) + tp = ask - min_dist; + } + } + return NormalizeDouble(tp, _Digits); +} + +bool SetLargeLotTakeProfitOnTicket(const ulong ticket) +{ + if(InpLargeLotMinVolume <= 0.0 || InpLargeLotTakeProfitPoints <= 0) + return true; + if(!PositionSelectByTicket(ticket)) + return false; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + return false; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + return false; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + return false; + + const double vol = PositionGetDouble(POSITION_VOLUME); + if(!IsLargeLotVolume(vol)) + return true; + + const long pos_type = PositionGetInteger(POSITION_TYPE); + const double open = PositionGetDouble(POSITION_PRICE_OPEN); + const double tp = CalcTakeProfitPrice(pos_type, open, InpLargeLotTakeProfitPoints); + if(tp <= 0.0) + return false; + + const double cur_tp = PositionGetDouble(POSITION_TP); + if(MathAbs(cur_tp - tp) <= _Point * 0.5) + return true; + + const double sl = PositionGetDouble(POSITION_SL); + if(!trade.PositionModify(ticket, sl, tp)) { + Print("【大单止盈】设置TP失败 Ticket:", ticket, " 手数:", vol, + " TP:", tp, " 错误:", trade.ResultRetcodeDescription()); + return false; + } + Print("【大单止盈】已设TP Ticket:", ticket, " 手数:", vol, + " 开仓:", open, " 止盈:", tp, " (", InpLargeLotTakeProfitPoints, "点,不参与统盈)"); + return true; +} + +bool ApplyLargeLotTakeProfitAfterOpen(const long pos_type) +{ + if(InpLargeLotMinVolume <= 0.0 || InpLargeLotTakeProfitPoints <= 0) + return true; + + ulong best_ticket = 0; + datetime best_time = 0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + const ulong ticket = PositionGetTicket(i); + if(!PositionSelectByTicket(ticket)) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(PositionGetInteger(POSITION_TYPE) != pos_type) + continue; + if(ParseRoundFromComment(PositionGetString(POSITION_COMMENT)) != g_trade_round) + continue; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + continue; + const datetime tm = (datetime)PositionGetInteger(POSITION_TIME); + if(tm >= best_time) { + best_time = tm; + best_ticket = ticket; + } + } + if(best_ticket == 0) + return false; + return SetLargeLotTakeProfitOnTicket(best_ticket); +} + +void CheckLargeLotTakeProfit() +{ + if(InpLargeLotMinVolume <= 0.0 || InpLargeLotTakeProfitPoints <= 0) + return; + + const double tp_off = (double)InpLargeLotTakeProfitPoints * _Point; + const int total = PositionsTotal(); + for(int i = total - 1; i >= 0; i--) { + const ulong ticket = PositionGetTicket(i); + if(!PositionSelectByTicket(ticket)) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(!IsEaBreakoutComment(PositionGetString(POSITION_COMMENT))) + continue; + + const double vol = PositionGetDouble(POSITION_VOLUME); + if(!IsLargeLotVolume(vol)) + continue; + + SetLargeLotTakeProfitOnTicket(ticket); + + const long pos_type = PositionGetInteger(POSITION_TYPE); + const double open = PositionGetDouble(POSITION_PRICE_OPEN); + bool hit = false; + if(pos_type == POSITION_TYPE_BUY) { + const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + hit = (bid >= open + tp_off - 1e-12); + } else { + const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + hit = (ask <= open - tp_off + 1e-12); + } + if(!hit) + continue; + + const int round_id = ParseRoundFromComment(PositionGetString(POSITION_COMMENT)); + if(trade.PositionClose(ticket)) { + Print("【大单止盈】平仓 Ticket:", ticket, " 手数:", vol, + " 轮次:", round_id, " 开仓:", open, " 止盈点数:", InpLargeLotTakeProfitPoints, + " (剩余持仓重计马丁档/统盈均价)"); + if(round_id == g_trade_round) + g_dual_full_handled = false; + } + } +} + +void CollectAllTradeRounds(int &rounds[], int &n_rounds) +{ + n_rounds = 0; + ArrayResize(rounds, 0); + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + const int r = ParseRoundFromComment(PositionGetString(POSITION_COMMENT)); + if(r < 1) + continue; + bool found = false; + for(int j = 0; j < n_rounds; j++) { + if(rounds[j] == r) { + found = true; + break; + } + } + if(!found) { + ArrayResize(rounds, n_rounds + 1); + rounds[n_rounds++] = r; + } + } +} + +bool BatchRoundAvgPrice(const int round_id, const long pos_type, double &avg, double &sum_lots) +{ + avg = 0.0; + sum_lots = 0.0; + double sum_px_vol = 0.0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(PositionGetInteger(POSITION_TYPE) != pos_type) + continue; + if(ParseRoundFromComment(PositionGetString(POSITION_COMMENT)) != round_id) + continue; + const double v = PositionGetDouble(POSITION_VOLUME); + if(IsLargeLotVolume(v)) + continue; + const double p = PositionGetDouble(POSITION_PRICE_OPEN); + sum_px_vol += p * v; + sum_lots += v; + } + if(sum_lots <= 1e-12) + return false; + avg = sum_px_vol / sum_lots; + return true; +} + +bool CloseBreakoutRoundBatch(const int round_id, const long pos_type, const string reason) +{ + ulong tickets[]; + int n = 0; + const int total = PositionsTotal(); + for(int i = 0; i < total; i++) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + if(PositionGetInteger(POSITION_MAGIC) != InpMagicNumber) + continue; + if(PositionGetInteger(POSITION_TYPE) != pos_type) + continue; + if(ParseRoundFromComment(PositionGetString(POSITION_COMMENT)) != round_id) + continue; + ArrayResize(tickets, n + 1); + tickets[n++] = PositionGetTicket(i); + } + if(n <= 0) + return false; + + bool ok = true; + for(int j = 0; j < n; j++) { + if(!trade.PositionClose(tickets[j])) + ok = false; + } + if(ok) { + Print("【突破】", (pos_type == POSITION_TYPE_BUY ? "多单" : "空单"), + " 第", round_id, "轮批平仓 笔数=", n, " 原因:", reason); + if(round_id == g_trade_round && CountBreakoutPositions(pos_type) == 0) + g_dual_full_handled = false; + } + return ok; +} + +void CheckBreakoutBatchTakeProfitForRoundDir(const int round_id, const long pos_type) +{ + double avg = 0.0, sum_lots = 0.0; + if(!BatchRoundAvgPrice(round_id, pos_type, avg, sum_lots)) + return; + + const double tp_off = (double)InpBatchTakeProfitPoints * _Point; + bool hit = false; + + if(pos_type == POSITION_TYPE_BUY) { + const double px = SymbolInfoDouble(_Symbol, SYMBOL_BID); + hit = (px >= avg + tp_off); + } else { + const double px = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + hit = (px <= avg - tp_off); + } + + if(!hit) + return; + + const double target = (pos_type == POSITION_TYPE_BUY) ? (avg + tp_off) : (avg - tp_off); + CloseBreakoutRoundBatch(round_id, pos_type, + StringFormat("统盈 均价%s+%d点 目标%s", + DoubleToString(avg, _Digits), InpBatchTakeProfitPoints, + DoubleToString(target, _Digits))); +} + +void CheckBreakoutBatchTakeProfit() +{ + if(InpBatchTakeProfitPoints <= 0) + return; + + int rounds[]; + int n_rounds = 0; + CollectAllTradeRounds(rounds, n_rounds); + + for(int i = 0; i < n_rounds; i++) { + CheckBreakoutBatchTakeProfitForRoundDir(rounds[i], POSITION_TYPE_BUY); + CheckBreakoutBatchTakeProfitForRoundDir(rounds[i], POSITION_TYPE_SELL); + } +} + +void CheckBreakoutBalanceStopLoss() +{ + if(InpStopLossBalancePct <= 0.0) + return; + + if(CountAllBreakoutPositions() == 0) + return; + + const double balance = AccountInfoDouble(ACCOUNT_BALANCE); + if(balance <= 0.0) + return; + + const double fpl = TotalBreakoutFloatingPL(); + const double sl_need = balance * (InpStopLossBalancePct / 100.0); + if(fpl <= -sl_need) + CloseAllBreakoutPositions( + StringFormat("止损:浮亏%.2f达结余%.2f%%", fpl, InpStopLossBalancePct)); +} + +void SyncBreakoutBarLock(const bool for_high_extreme) +{ + const datetime bar_time = iTime(_Symbol, InpTimeframe, 0); + if(bar_time == 0) + return; + + if(for_high_extreme) { + if(bar_time != g_breakout_bar_time_high) { + g_breakout_bar_time_high = bar_time; + g_breakout_opened_on_bar_high = false; + } + } else { + if(bar_time != g_breakout_bar_time_low) { + g_breakout_bar_time_low = bar_time; + g_breakout_opened_on_bar_low = false; + } + } +} + +bool IsBreakoutBarOpenAllowed(const bool for_high_extreme) +{ + SyncBreakoutBarLock(for_high_extreme); + if(for_high_extreme) + return !g_breakout_opened_on_bar_high; + return !g_breakout_opened_on_bar_low; +} + +void MarkBreakoutBarOpened(const bool for_high_extreme) +{ + SyncBreakoutBarLock(for_high_extreme); + if(for_high_extreme) + g_breakout_opened_on_bar_high = true; + else + g_breakout_opened_on_bar_low = true; +} + +bool OpenBreakoutPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low, + const bool from_high_extreme) +{ + if(!IsBreakoutBarOpenAllowed(from_high_extreme)) + return false; + + const long pos_type = (order_type == ORDER_TYPE_BUY) ? POSITION_TYPE_BUY : POSITION_TYPE_SELL; + const double lots = CalculateLotSize(pos_type); + if(lots <= 0.0) + return false; + + if(lots <= 0.0) { + Print("【突破】开仓跳过 - 同向已达最大档数 ", g_tier_lots_count); + return false; + } + if(InpMaxLots > 0.0) { + const double cur_lots = TotalLotsInDirection(pos_type); + if(cur_lots + lots > InpMaxLots + 1e-8) { + Print("【突破】开仓跳过 - 同向合计将超上限 ", InpMaxLots, + " 当前:", cur_lots, " 拟开:", lots); + return false; + } + } + + if(!IsSameDirMinSpacingSatisfied(pos_type)) { + if(InpShowDebugInfo) { + double last_open = 0.0; + GetLastSameDirectionOpenPrice(pos_type, last_open); + Print("【突破】开仓跳过 - 未达同向最小间距% ", InpMinSameDirAddSpacingPercent, + " 上一笔:", last_open, " 当前:", + (pos_type == POSITION_TYPE_BUY ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) + : SymbolInfoDouble(_Symbol, SYMBOL_BID))); + } + return false; + } + + const string comment = FormatBreakoutComment(g_trade_round); + bool result = false; + if(order_type == ORDER_TYPE_BUY) + result = trade.Buy(lots, _Symbol, 0, 0, 0, comment); + else + result = trade.Sell(lots, _Symbol, 0, 0, 0, comment); + + if(!result) { + Print("【突破】开仓失败: ", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); + return false; + } + + MarkBreakoutBarOpened(from_high_extreme); + ApplyLargeLotTakeProfitAfterOpen(pos_type); + const int tier = CountBreakoutPositions(pos_type); + Print("【突破】开仓成功 ", (order_type == ORDER_TYPE_BUY ? "多" : "空"), + " 手数:", lots, " 轮次:", g_trade_round, " 同向第", tier, "/", g_tier_lots_count, "档", + " 备注:", comment, " 波段 H:", wave_high, " L:", wave_low); + return true; +} + +//+------------------------------------------------------------------+ +//| 检查并关闭手工单 | +//+------------------------------------------------------------------+ +void CheckAndCloseManualOrders() +{ + for(int i = PositionsTotal() - 1; i >= 0; i--) { + if(!PositionSelectByTicket(PositionGetTicket(i))) + continue; + + // 只处理本品种 + if(PositionGetString(POSITION_SYMBOL) != _Symbol) + continue; + + // 检查magic number:0表示手工单 + long magic = PositionGetInteger(POSITION_MAGIC); + if(magic == 0) { + ulong ticket = PositionGetTicket(i); + + // 平仓手工单 + if(trade.PositionClose(ticket)) { + Print("【禁止手工单】已平掉手工单 - Ticket:", ticket, + " 类型:", (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY ? "多单" : "空单")); + } else { + Print("【禁止手工单】平仓失败 - Ticket:", ticket, " 错误:", GetLastError()); + } + } + } +} + +//+------------------------------------------------------------------+ +//| 成交事件(大单被平台TP平仓时重置满档状态) | +//+------------------------------------------------------------------+ +void OnTradeTransaction(const MqlTradeTransaction& trans, + const MqlTradeRequest& request, + const MqlTradeResult& result) +{ + if(trans.type != TRADE_TRANSACTION_DEAL_ADD) + return; + if(!HistoryDealSelect(trans.deal)) + return; + if(HistoryDealGetString(trans.deal, DEAL_SYMBOL) != _Symbol) + return; + if(HistoryDealGetInteger(trans.deal, DEAL_MAGIC) != InpMagicNumber) + return; + if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) != DEAL_ENTRY_OUT) + return; + if(HistoryDealGetInteger(trans.deal, DEAL_REASON) != DEAL_REASON_TP) + return; + + const string comment = HistoryDealGetString(trans.deal, DEAL_COMMENT); + if(!IsEaBreakoutComment(comment)) + return; + + const double vol = HistoryDealGetDouble(trans.deal, DEAL_VOLUME); + if(!IsLargeLotVolume(vol)) + return; + + const int round_id = ParseRoundFromComment(comment); + if(round_id == g_trade_round) + g_dual_full_handled = false; + + Print("【大单止盈】成交平仓 手数:", vol, " 轮次:", round_id, + " 备注:", comment, " (剩余持仓重计马丁档/统盈均价)"); +} diff --git a/20260522-突破马丁/README.md b/20260522-突破马丁/README.md new file mode 100644 index 0000000..9ead0db --- /dev/null +++ b/20260522-突破马丁/README.md @@ -0,0 +1,57 @@ +# 突破策略(极值点突破开仓) + +MQL5 EA:`20260522_Breakout.mq5`(v3.18)。 + +## 参数默认值(与输入界面一致) + +| 分组 | 参数 | 默认 | +|------|------|------| +| 波段 | K线周期 / MA周期 | M1 / 14 | +| 波段 | 最小/最大波段% | 0.1 / **0.25** | +| 波段 | 有效波段最少K线 | **3** | +| 波段 | 反向突破容忍度% | **0.05** | +| 交易 | 开仓方向 | **随机**(可选:顺势 / 反向 / 前日收线相对日MA / **日MA偏离率反向**) | +| 交易 | 日MA偏离率阈值% | **1.0**(\|偏离\|超过才触发,0=关) | +| 交易 | 按批统盈点数 / 止损% | **300** / **30** | +| 交易 | 大单止盈阈值 / 点数 | **1.0手** / **500点** | +| 交易 | 回落反向 / 监测K线数 | **开** / **3** | +| 仓位 | 各档手数(19档) | 见下 | +| 仓位 | 同向最大合计 / 最小间距% / 满档后 | 99 / **0** / **清仓** | +| 调试 | 调试 / 极值标记 / Magic / 禁手工单 | false / true / 20260520 / true | + +**各档手数:** `0.05,0.05,0.05,0.8,0.8,1.1,1,2,2,1,1,1,2,2,1,1,1,5,5`(19 档) + +## 前日收线相对日MA(开仓方向选项) + +取**前一交易日**日 K **收盘价**与**日 K 上同周期 MA**(默认 MA14)比较: + +| 前日收线位置 | 允许开仓 | +|-------------|----------| +| **在日 MA 下方** | 破**低**极值 → 空;**高**极值出现回落反向 → 空 | +| **在日 MA 上方** | 破**高**极值 → 多;**低**极值出现回落反向 → 多 | + +- 偏空时不做「破高」突破单,等高极值**回落反向**或等破低;偏多时不做「破低」突破单,等低极值**回落反向**或等破高。 +- 前日收线恰在 MA 上(中性)时,该模式不开仓。 + +## 日 MA 偏离率反向(开仓方向选项) + +**偏离率** = (当前价 − 日 MA) ÷ 日 MA × 100%(当前价取买卖中间价,日 MA 周期同 `InpMAPeriod`)。 + +| 偏离率 | 含义 | 允许开仓(反向/均值回归) | +|--------|------|--------------------------| +| **> +阈值%** | 价显著高于日 MA | 破**高** → 空;**高**极值回落反向 → 空 | +| **< −阈值%** | 价显著低于日 MA | 破**低** → 多;**低**极值回落反向 → 多 | +| \|偏离\| ≤ 阈值 | 未超阈值 | **不开仓** | + +参数 `日MA偏离率阈值` 默认 **1.0%**,设为 **0** 关闭此逻辑。 + +## 大单独立止盈 + +- 开仓手数 **≥ 大单止盈阈值**(默认 1 手)的单子,按 **大单最大止盈点数** 单独止盈,**不参与按批统盈**的加权均价计算。 +- 大单止盈平仓后(平台 TP 或 EA 监测触发),**下一档马丁手数**与**统盈均价**均仅按**当前仍持仓**的单子重算,与已平大单无关。 +- 阈值或点数设为 **0** 时关闭此功能,所有单子统一走按批统盈。 + +## 说明 + +- 突破开仓与回落反向共用档位手数;列表长度 = 同向最多开仓笔数。 +- 按批统盈、结余%止损、双向满档逻辑见 EA 输入注释。 diff --git a/20260520-突破马丁/XAU_1min_300000.set b/20260522-突破马丁/XAU_1min_300000.set similarity index 100% rename from 20260520-突破马丁/XAU_1min_300000.set rename to 20260522-突破马丁/XAU_1min_300000.set diff --git a/20260522.png b/20260522.png new file mode 100644 index 0000000000000000000000000000000000000000..68bf7a6d0fd0bca530d9263fb8a533843feca9db GIT binary patch literal 337485 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

|po{qt69qiIXNqPkozx!xTR5fn^ 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

DihXsxP9E+PQ8!RLEmy=_}~8 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с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ž|`(ur0h+) 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
Ze=+l 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 MuB@e0p=ciRe=M@Z!vFvP literal 0 HcmV?d00001 diff --git a/EXNESS链接 (10).txt b/EXNESS链接 (10).txt deleted file mode 100644 index e9ace60..0000000 --- a/EXNESS链接 (10).txt +++ /dev/null @@ -1,81 +0,0 @@ -EXNESS平台自动反用到帐时间:平仓后的第二天晚上十二点之前会自动反 用到交易帐号里面,请注意查收! - - -2026年EXNESS自动日反开户链接:(可开代理) - -https://one.exnessonelink.com/intl/zh/a/xiao2 - -合作伙伴代码:xiao2 - -EXNESS的后台又升级了,用这个链接开出来的帐号不需要人工上报申请日反了,是平台直接自动日反到帐号。 - - - - - - -2026年以前老代理名下客户注册链接: - -https://www.extraders.market/pa/a/10795827 - -https://www.extraders.direct/pa/a/10795827 - -https://www.extraders.direct/a/10795827 - -https://www.extraders.asia/a/10795827 - -https://www.ex-markets.guide/a/10795827 - -https://www.ex-markets.pro/a/10795827 - -https://www.extrading.pro/a/10795827 - -https://www.ex-markets.direct/a/10795827 - -https://www.ex-markets.digital/a/10795827 - -https://one.exness-track.com/a/10795827 - -https://www.extrading.markets/a/10795827 - -https://www.ex-markets.expert/a/10795827 - -https://one.exnesstrack.org/boarding/sign-up/a/10795827 - -注册时请填写合作伙伴代码:10795827 - -一定要记得打开链接之后第一时间去注册,这个很重要 - - -EXNESS开户需要:身份证正面和反面照片,邮箱,手机号 - -打开链接后,请直接点击:开立帐户 - -关于内转: - -第一是,平台不允许我们这样做 - -第二是,我们也被骗过 - -第三,为了客户的资金安全,我们也不会和任何客户发现任何金钱往来 - -注意:谁先付款都有隐患,因为没有第三方担保。所以我们一般都会建议客户直接通过平台进行出入米,客户和平台之间有金钱往来,出了问题,平台还可以去查,去处理。 - - - -EXNESS代理: -1.您和您下面客户开户,都需要找我拿开户链接(只能用我们的开户链接开户) - -2.您客户开完户之后,需要把资料发给我查询是否在我们代理下,同步把客户的交易帐号绑定到您的代理返佣后台(请在第一时间去绑定,以免影响到您的返佣) - -3.您本人的交易帐号是平台自动日返到交易帐号,您下面客户的返佣是周返到您的指定交易帐号(需绑定代理返佣后台) - -注:开户之后请第一时间发帐号给我核查代理归属,并上报平台反用,谢谢 - - -关于EXNESS平台情况说明:身为代理,我们只提供基础服务:链接和返佣 - - 任何平台方面的问题(入金,出金,品种,交易,服务器等等),请客户自己联系平台客服处理,因为平台现在提供的服务人员只有平台客服,没有其它,全球所有的客户都是一样的,只能自己联系平台客服去处理问题,我们这么大一个代理,有事儿找平台也是联系平台客服进行处理! - -(不要说什么我是在你这儿开的户,出了问题,你就要处理的这种话,我们只是代理,但是代表不了平台。我们重来没有强迫任何客户去开户,开户是你自己自愿开的,你不开也没人强迫你开,交易是你自己操作的,我们重来不会干预客户的任何交易,不闻,不问,不管,不干预!你来找我要链接,我就给,你来找我处理反用,我就上报,没有其它更多的了) - diff --git a/20260520-突破马丁/20260520_Breakout.mq5 b/KVB-50036106/20260522-突破马丁/20260522_Breakout.mq5 similarity index 100% rename from 20260520-突破马丁/20260520_Breakout.mq5 rename to KVB-50036106/20260522-突破马丁/20260522_Breakout.mq5 diff --git a/20260520-突破马丁/README.md b/KVB-50036106/20260522-突破马丁/README.md similarity index 100% rename from 20260520-突破马丁/README.md rename to KVB-50036106/20260522-突破马丁/README.md diff --git a/20260520-突破马丁/XAU_1min_v1.set b/KVB-50036106/20260522-突破马丁/XAU_1min_300000.set similarity index 58% rename from 20260520-突破马丁/XAU_1min_v1.set rename to KVB-50036106/20260522-突破马丁/XAU_1min_300000.set index ac0538d32717bc3e80545a6d8de097aaed6c9fac..1f40d2d9727522ec7b375a6fb0bf7a2c1baefd5b 100644 GIT binary patch delta 478 zcmdld*da7QOW24(fx(c$jKPY*1V~#km@=4dv|Y%=YQUh!U_ALTQ|9DtY&MhonEe=y zCf{XN=5%66WGG=sX2_WQpIKBhfFYkDlOYc%Qp{k>V8mbmgf&2Dh{OW(CqHBppPa{% zHd%q0P16;qBatDAA%`KAA%LM2Nap}~i9l1c8G?XfWk6g6G%O+8T1exdqbS=oGK0tmkkYx*Wr5@17I#i=U zW|;u7F%TO8u^|u}gb`^8refx!?6tr(0MEPvI1!a)5-tYY$sQ- z@=Tt>?8Im=`8u<*b_hcvLpDPyLjXe&Lq0- z&XXfp(tsvtxw`>XRsdyF7<_>GN*IcPDhzA&6xFbPs|J;u(M;ObpDQ?8qWM z`2Z7(W)aYgOrVYFV7pTp9Dydo%yt6WkPoy0))F#rGn diff --git a/KVB-50036106/TwisterPro Scalper 1.8 500$.set b/KVB-50036106/TwisterPro Scalper 1.8 500$.set new file mode 100644 index 0000000000000000000000000000000000000000..e8aa0bd4d5ef64ed50c45ed11001a81626e7a1b2 GIT binary patch literal 822 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
?mF{$aNK78BB?)_=5%K64mT>BKA#eANvg*w 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 ZSj*E{-+2u0@z615Lj)h

sW5|1ZR5#s>fZ literal 0 HcmV?d00001 diff --git a/tag/20260425-马丁网格策略/20260425.ea.mq5 b/tag/20260425-马丁网格策略/20260425.ea.mq5 deleted file mode 100644 index b5f333e..0000000 --- a/tag/20260425-马丁网格策略/20260425.ea.mq5 +++ /dev/null @@ -1,804 +0,0 @@ -//+------------------------------------------------------------------+ -//| 20260425.ea.mq5 | -//| 马丁网格:小周期震荡、加仓后整体盈利平仓;K 线周期可独立于图表 | -//+------------------------------------------------------------------+ -#property copyright "EA-2026" -#property link "" -#property version "1.11" -#property description "Martin grid: TP/统盈/加仓间距=%% of ref price; max orders/side; no K-timeout close (v1.11+)" - -#include -#include -#include - -CTrade g_trade; -CSymbolInfo g_sym; -CPositionInfo g_pos; - -// 内置 20 档(解析 InpLotLadder 失败或节数不足时回退) — 与当前默认字符串一致 -const double g_builtinLadder[20] = - { - 0.05, 0.05, 0.05, 0.10, 0.10, 0.10, 0.15, 0.20, 0.20, 0.25, - 0.30, 0.35, 0.45, 0.55, 0.65, 0.75, 0.90, 1.2, 1.4, 1.5 - }; -double g_lotLadder[20]; -#define MGRID_VTP_B "MGvTP_20260425_BUY" -#define MGRID_VTP_S "MGvTP_20260425_SELL" -#define MGRID_TGT_L "MG_20260425_TGTLIST" - -//--- 以下三处为「相对**参考价**的价距%」, 在运行时按当刻价格换算为实际价格步长(非点) -input group "滑点" -input int InpSlippage = 30; // 滑点(点) - -input group "识别" -input long InpMagic = 20260425; // Magics - -input group "首单与统盈(百分比,见底部说明)" -input double InpFirstTpPercent = 0.05; // 首档(仅1~Lot1层)止盈:每单= **该笔开仓价**×% 为价距;>=2层用统盈% ;<=0=不挂首档TP(单档时改按统盈%平) -input double InpAveTpPercent = 0.05; // 统盈:相对**整体成本价** 的价距%(>=2 档整篮; 1档且未挂首档TP时亦用) - -input group "加仓" -input double InpDisPercent = 0.1; // 与上一同向**开仓价** 的间距:价距= lastOpen×%(市价多=Ask,空=Bid 与 last 比) -input double InpAddTimes = 1.2; // 满 20 单后再加仓:在 Lot20 上乘此倍率 (Add_times) -input int InpMaxOrdersPerSide = 20; // 单方向最多同时持仓**笔数**;达到后不再开新仓(不平仓,可手工);0=不限制 - -input group "头寸(第1~20档,一行逗号分隔)" -input string InpLotLadder = "0.05,0.05,0.05,0.10,0.10,0.10,0.15,0.20,0.20,0.25,0.30,0.35,0.45,0.55,0.65,0.75,0.90,1.2,1.4,1.5"; - -input group "拆单" -input int InpOrdersPerAdd = 1; // 每次加仓/首单 同时下几笔同向单(>=1,总手数仍为一档合计) - -input group "其它" -input int InpMaxSpreadPoints = 0; // 最大点差(点),0=不限制 -input bool InpLog = true; // 专家日志 - -input group "图表(统盈参考线)" -input bool InpDrawVtp = true; // 多/空各一条虚拟水平线(仅参考,非真实挂单) -input int InpVtpLineWidth = 1; -input color InpVtpColorLong = clrDodgerBlue; -input color InpVtpColorShort = clrDarkOrange; -input bool InpShowBasketTgtList = true; // 图上列表:每单#、开仓、统盈目标价(与程序整篮价一致,非订单TP栏) -input color InpTgtListColor = clrNavy; -input int InpTgtListFont = 9; - -//+------------------------------------------------------------------+ -double PointValue() - { - if(!g_sym.Name(_Symbol)) - return _Point; - g_sym.RefreshRates(); - return g_sym.Point(); - } - -//+------------------------------------------------------------------+ -// 价距 = 参考价 × (参数百分比/100);参考为各用途各自给定的开仓/成本(见输入说明) -//+------------------------------------------------------------------+ -double PctOfPrice(const double refPrice, const double pct) - { - if(refPrice <= 0.0) - return 0.0; - if(pct <= 0.0) - return 0.0; - return refPrice * (pct / 100.0); - } - -//+------------------------------------------------------------------+ -double MinLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); } -double MaxLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); } -double LotStep(){ return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); } - -//+------------------------------------------------------------------+ -string TrimToken(const string u) - { - string t = u; - const int L0 = (int)StringLen(t); - for(int a = 0; a < L0; a++) - { - if(StringGetCharacter(t, 0) != 32) - break; - t = StringSubstr(t, 1); - } - int L = (int)StringLen(t); - for(int b = 0; b < L; b++) - { - if(StringGetCharacter(t, L - 1) != 32) - break; - t = StringSubstr(t, 0, L - 1); - L = (int)StringLen(t); - } - return t; - } - -//+------------------------------------------------------------------+ -// 自 InpLotLadder 解析 20 档; 节数/数值不对则回退 g_builtinLadder -//+------------------------------------------------------------------+ -void InitLotLadder() - { - for(int a = 0; a < 20; a++) - g_lotLadder[a] = g_builtinLadder[a]; - const int slen = (int)StringLen(InpLotLadder); - if(slen < 1) - { - if(InpLog) - Print("InpLotLadder empty, using builtin 20-lot"); - return; - } - string toks[]; - // StringSplit(…,ushort,[]) 无隐式 string→ushort 警告 - int n = StringSplit(InpLotLadder, (ushort)44, toks); - if(n < 20) - { - n = StringSplit(InpLotLadder, (ushort)59, toks); - } - if(n < 20) - { - if(InpLog) - Print("InpLotLadder need 20 numbers, got ", n, " — builtin"); - return; - } - for(int k = 0; k < 20; k++) - { - const double w = StringToDouble(TrimToken(toks[k])); - if(w <= 0.0) - { - g_lotLadder[k] = g_builtinLadder[k]; - } - else - g_lotLadder[k] = w; - } - } - -//+------------------------------------------------------------------+ -void LogInitDiagnostics() - { - if(!InpLog) - return; - Print("20260425 v1.11 ", _Symbol, " magic=", (long)InpMagic, - " 首档TP%=", InpFirstTpPercent, " 统盈%=", InpAveTpPercent, " 加仓距%=", InpDisPercent, - " 单向最多笔数=", InpMaxOrdersPerSide); - } - -//+------------------------------------------------------------------+ -bool SpreadOk() - { - if(InpMaxSpreadPoints <= 0) - return true; - const int sp = (int)SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); - if(sp > InpMaxSpreadPoints) - return false; - return true; - } - -//+------------------------------------------------------------------+ -// 0-based 第 idx 档同向总手数(第0档=第1单 … 第19档=第20单; 第20档起为 第20档手数*倍率^n) -//+------------------------------------------------------------------+ -double LotForLayerIndex(const int idx) - { - const double m = InpAddTimes; - if(idx < 0) - return MinLot(); - if(idx < 20) - return g_lotLadder[idx]; - // idx >= 20: 以第20档(索引19)为基准 - const int p = idx - 19; - return g_lotLadder[19] * MathPow(m, p); - } - -//+------------------------------------------------------------------+ -double NormalizeVolume(const double v) - { - double o = v; - const double st = LotStep(); - const double lo = MinLot(); - const double hi = MaxLot(); - if(st > 0.0) - o = MathRound(o / st) * st; - o = MathMax(lo, MathMin(hi, o)); - o = MathMax(lo, o); - return o; - } - -//+------------------------------------------------------------------+ -int OrdersPerAdd() - { - return MathMax(1, InpOrdersPerAdd); - } - -//+------------------------------------------------------------------+ -// InpMaxOrdersPerSide<=0 不限制;否则本次若开仓则持仓笔数不超过上限(含拆单) -//+------------------------------------------------------------------+ -bool CanOpenMoreOrders(const int currentOrderCount) - { - if(InpMaxOrdersPerSide <= 0) - return true; - const int nOrd = OrdersPerAdd(); - return (currentOrderCount + nOrd <= InpMaxOrdersPerSide); - } - -//+------------------------------------------------------------------+ -// 将一层总手数拆成多笔(README:加仓可同时下多笔同向单),总和≈ total -//+------------------------------------------------------------------+ -void SplitVolumeToOrders(const double total, double &parts[]) - { - const int n = OrdersPerAdd(); - ArrayResize(parts, n); - if(n == 1) - { - parts[0] = NormalizeVolume(total); - return; - } - const double t = NormalizeVolume(total); - if(t < MinLot() * n - 1e-12) - { - parts[0] = NormalizeVolume(total); - for(int k = 1; k < n; k++) - parts[k] = MinLot(); - return; - } - const double st = MathMax(LotStep(), 0.0000000001); - const int steps = (int)MathRound((t - MinLot() * n) / st); - if(steps < 0) - { - for(int i = 0; i < n; i++) - parts[i] = MinLot(); - return; - } - const int base = steps / n; - int rem = (int)(steps - base * n); - for(int j = 0; j < n; j++) - { - const int add = base + (rem > 0 ? 1 : 0); - if(rem > 0) - rem--; - parts[j] = NormalizeVolume(MinLot() + (double)add * st); - } - } - -//+------------------------------------------------------------------+ -struct SBasket - { - int count; - double lastPrice; // 时间上最后一笔的开仓价 - double avgPrice; // 成本价 - double sumLots; - }; - -//+------------------------------------------------------------------+ -bool BuildBasket(const ENUM_POSITION_TYPE ptype, SBasket &b) - { - b.count = 0; - b.lastPrice = 0.0; - b.avgPrice = 0.0; - b.sumLots = 0.0; - double sumP = 0.0; - datetime tLast = 0; - ulong lastTix = 0; - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic) - continue; - if(g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != ptype) - continue; - b.count++; - const datetime tt = g_pos.Time(); - const double op = g_pos.PriceOpen(); - const double vl = g_pos.Volume(); - const ulong tix = (ulong)g_pos.Ticket(); - sumP += op * vl; - b.sumLots += vl; - if(tLast == 0 || tt > tLast || (tt == tLast && tix > lastTix)) - { - tLast = tt; - lastTix = tix; - b.lastPrice = op; - } - } - if(b.count < 1 || b.sumLots <= 0.0) - return false; - b.avgPrice = sumP / b.sumLots; - return true; - } - -//+------------------------------------------------------------------+ -bool CloseType(const ENUM_POSITION_TYPE ptype, const string reason) - { - bool ok = true; - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != ptype) - continue; - if(!g_trade.PositionClose(g_pos.Ticket(), InpSlippage)) - { - ok = false; - if(InpLog) - Print("20260425 close fail ticket=", (ulong)g_pos.Ticket(), " err=", GetLastError()); - } - } - if(InpLog && ok) - Print("20260425 全部平", ptype == POSITION_TYPE_BUY ? "多" : "空", " 原因: ", reason); - return ok; - } - -//+------------------------------------------------------------------+ -void RemoveTakeProfitsType(const ENUM_POSITION_TYPE ptype) - { - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != ptype) - continue; - if(g_pos.TakeProfit() == 0.0) - continue; - g_trade.PositionModify(g_pos.Ticket(), g_pos.StopLoss(), 0.0); - } - } - -//+------------------------------------------------------------------+ -int PriceDigits() { return (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS); } - -//+------------------------------------------------------------------+ -bool OpenChunkBuy(const double vol, const string cmt) - { - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - g_trade.SetTypeFillingBySymbol(_Symbol); - if(!g_trade.Buy(NormalizeVolume(vol), _Symbol, 0, 0, 0, cmt)) - { - if(InpLog) - Print("20260425 Buy fail vol=", vol, " err=", g_trade.ResultRetcodeDescription()); - return false; - } - g_sym.RefreshRates(); - return true; - } - -//+------------------------------------------------------------------+ -bool OpenChunkSell(const double vol, const string cmt) - { - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - g_trade.SetTypeFillingBySymbol(_Symbol); - if(!g_trade.Sell(NormalizeVolume(vol), _Symbol, 0, 0, 0, cmt)) - { - if(InpLog) - Print("20260425 Sell fail vol=", vol, " err=", g_trade.ResultRetcodeDescription()); - return false; - } - g_sym.RefreshRates(); - return true; - } - -//+------------------------------------------------------------------+ -bool OpenBuyLayersForTotal(const int layerIdx, const string tag) - { - const double want = LotForLayerIndex(layerIdx); - if(want < MinLot() - 0.0000001) - { - if(InpLog) - Print("20260425 手数过小 跳过 layer=", layerIdx); - return false; - } - double parts[]; - SplitVolumeToOrders(want, parts); - for(int k = 0; k < ArraySize(parts); k++) - { - if(!OpenChunkBuy(parts[k], "MGb_" + tag + "_" + IntegerToString(k))) - return false; - } - return true; - } - -//+------------------------------------------------------------------+ -bool OpenSellLayersForTotal(const int layerIdx, const string tag) - { - const double want = LotForLayerIndex(layerIdx); - if(want < MinLot() - 0.0000001) - { - if(InpLog) - Print("20260425 手数过小 跳过 layer=", layerIdx); - return false; - } - double parts[]; - SplitVolumeToOrders(want, parts); - for(int k = 0; k < ArraySize(parts); k++) - { - if(!OpenChunkSell(parts[k], "MGs_" + tag + "_" + IntegerToString(k))) - return false; - } - return true; - } - -//+------------------------------------------------------------------+ -void SetFirstLayerBuyTP() - { - // 仅首档(一层):每笔按该笔 **开仓价×首档%** 挂 TP;拆单时各单各自 - if(InpFirstTpPercent <= 0.0) - return; - g_sym.RefreshRates(); - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != POSITION_TYPE_BUY) - continue; - const double op = g_pos.PriceOpen(); - const double tpd = PctOfPrice(op, InpFirstTpPercent); - const double tp = op + tpd; - g_trade.PositionModify(g_pos.Ticket(), 0, NormalizeDouble(tp, PriceDigits())); - } - } - -//+------------------------------------------------------------------+ -void SetFirstLayerSellTP() - { - if(InpFirstTpPercent <= 0.0) - return; - g_sym.RefreshRates(); - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != POSITION_TYPE_SELL) - continue; - const double op = g_pos.PriceOpen(); - const double tpd = PctOfPrice(op, InpFirstTpPercent); - const double tp = op - tpd; - g_trade.PositionModify(g_pos.Ticket(), 0, NormalizeDouble(tp, PriceDigits())); - } - } - -//+------------------------------------------------------------------+ -void VtpLineDeleteName(const string name) - { - if(ObjectFind(0, name) >= 0) - ObjectDelete(0, name); - } - -//+------------------------------------------------------------------+ -// >=2 档时列表「获利」为 0(程序内统盈此时尚无单笔 TP) — 用水平线标出统盈价供查看 -//+------------------------------------------------------------------+ -void VtpHLineSet(const string name, const double price, const color clr, const string toolTip) - { - const int dd = PriceDigits(); - const double p = NormalizeDouble(price, dd); - if(!ObjectCreate(0, name, OBJ_HLINE, 0, 0, p)) - { - if(ObjectFind(0, name) < 0) - return; - } - ObjectSetDouble(0, name, OBJPROP_PRICE, p); - ObjectSetInteger(0, name, OBJPROP_COLOR, clr); - ObjectSetInteger(0, name, OBJPROP_WIDTH, InpVtpLineWidth); - ObjectSetString(0, name, OBJPROP_TOOLTIP, toolTip); - } - -//+------------------------------------------------------------------+ -void UpdateVirtualTPLines() - { - if(!InpDrawVtp) - { - VtpLineDeleteName(MGRID_VTP_B); - VtpLineDeleteName(MGRID_VTP_S); - ChartRedraw(0); - return; - } - g_sym.RefreshRates(); - const int nO = MathMax(1, InpOrdersPerAdd); - - SBasket bB, bS; - const bool hB = BuildBasket(POSITION_TYPE_BUY, bB); - const bool hS = BuildBasket(POSITION_TYPE_SELL, bS); - - if(hB && bB.count > 0) - { - const int lay = bB.count / nO; - const double aved = PctOfPrice(bB.avgPrice, InpAveTpPercent); - const double tppd = PctOfPrice(bB.avgPrice, InpFirstTpPercent); - double target; - if(lay >= 2) - target = bB.avgPrice + aved; - else - target = bB.avgPrice + (InpFirstTpPercent > 0.0 ? tppd : aved); - VtpHLineSet(MGRID_VTP_B, target, InpVtpColorLong, "buy VTP"); - } - else - VtpLineDeleteName(MGRID_VTP_B); - - if(hS && bS.count > 0) - { - const int layS = bS.count / nO; - const double aved = PctOfPrice(bS.avgPrice, InpAveTpPercent); - const double tppd = PctOfPrice(bS.avgPrice, InpFirstTpPercent); - double tgs; - if(layS >= 2) - tgs = bS.avgPrice - aved; - else - tgs = bS.avgPrice - (InpFirstTpPercent > 0.0 ? tppd : aved); - VtpHLineSet(MGRID_VTP_S, tgs, InpVtpColorShort, "sell VTP"); - } - else - VtpLineDeleteName(MGRID_VTP_S); - - ChartRedraw(0); - } - -//+------------------------------------------------------------------+ -// 统盈同价多笔时不可能全部挂成有效经纪商 TP,故仅图上列出「#—开仓—T目标」(与程序整篮价一致) -//+------------------------------------------------------------------+ -void TgtListDelete() - { - if(ObjectFind(0, MGRID_TGT_L) >= 0) - ObjectDelete(0, MGRID_TGT_L); - } - -//+------------------------------------------------------------------+ -void UpdateBasketTgtListLabel() - { - if(!InpShowBasketTgtList) - { - TgtListDelete(); - return; - } - g_sym.RefreshRates(); - const int d = PriceDigits(); - const int nO = MathMax(1, InpOrdersPerAdd); - - SBasket bB, bS; - const bool hB = BuildBasket(POSITION_TYPE_BUY, bB) && bB.count > 0; - const bool hS = BuildBasket(POSITION_TYPE_SELL, bS) && bS.count > 0; - if(!hB && !hS) - { - TgtListDelete(); - return; - } - string txt = "20260425 统盈(程序整篮)\n(订单「获利」可能为0)\n"; - if(hB) - { - const int layB = bB.count / nO; - const double aved = PctOfPrice(bB.avgPrice, InpAveTpPercent); - const double tppd = PctOfPrice(bB.avgPrice, InpFirstTpPercent); - const double pexB = (layB >= 2) ? bB.avgPrice + aved : bB.avgPrice + (InpFirstTpPercent > 0.0 ? tppd : aved); - txt += "多 目标T " + DoubleToString(pexB, d) + " 成本 " + DoubleToString(bB.avgPrice, d) + "\n"; - for(int i = PositionsTotal() - 1; i >= 0; i--) - { - if(!g_pos.SelectByIndex(i)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != POSITION_TYPE_BUY) - continue; - const ulong t = (ulong)g_pos.Ticket(); - txt += " #" + (string)(ulong)t + " 开" + DoubleToString(g_pos.PriceOpen(), d) + " →T" + DoubleToString(pexB, d) + "\n"; - } - } - if(hS) - { - const int layS = bS.count / nO; - const double avedS = PctOfPrice(bS.avgPrice, InpAveTpPercent); - const double tppdS = PctOfPrice(bS.avgPrice, InpFirstTpPercent); - const double pexS = (layS >= 2) ? bS.avgPrice - avedS : bS.avgPrice - (InpFirstTpPercent > 0.0 ? tppdS : avedS); - txt += "空 目标T " + DoubleToString(pexS, d) + " 成本 " + DoubleToString(bS.avgPrice, d) + "\n"; - for(int j = PositionsTotal() - 1; j >= 0; j--) - { - if(!g_pos.SelectByIndex(j)) - continue; - if(g_pos.Magic() != (ulong)InpMagic || g_pos.Symbol() != _Symbol) - continue; - if(g_pos.PositionType() != POSITION_TYPE_SELL) - continue; - const ulong t2 = (ulong)g_pos.Ticket(); - txt += " #" + (string)(ulong)t2 + " 开" + DoubleToString(g_pos.PriceOpen(), d) + " →T" + DoubleToString(pexS, d) + "\n"; - } - } - const int mlen = 1800; // 防止过长 - if(StringLen(txt) > mlen) - txt = StringSubstr(txt, 0, mlen) + "…"; - - if(!ObjectCreate(0, MGRID_TGT_L, OBJ_LABEL, 0, 0, 0)) - { - if(ObjectFind(0, MGRID_TGT_L) < 0) - return; - } - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_CORNER, CORNER_LEFT_LOWER); - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER); - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_XDISTANCE, 6); - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_YDISTANCE, 8); - ObjectSetString(0, MGRID_TGT_L, OBJPROP_TEXT, txt); - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_COLOR, InpTgtListColor); - ObjectSetInteger(0, MGRID_TGT_L, OBJPROP_FONTSIZE, InpTgtListFont); - ObjectSetString(0, MGRID_TGT_L, OBJPROP_FONT, "Arial"); - ChartRedraw(0); - } - -//+------------------------------------------------------------------+ -void ProcessLongSide() - { - SBasket b; - g_sym.RefreshRates(); - const int nOrd = OrdersPerAdd(); - if(!BuildBasket(POSITION_TYPE_BUY, b)) - { - if(!SpreadOk()) - return; - if(!CanOpenMoreOrders(0)) - return; - if(!OpenBuyLayersForTotal(0, "0")) - return; - SetFirstLayerBuyTP(); - return; - } - const int layers = b.count / nOrd; - - const double dis = PctOfPrice(b.lastPrice, InpDisPercent); - const double ave = PctOfPrice(b.avgPrice, InpAveTpPercent); - - // 1) 统盈: >=2 档 用成本价+统盈%;1 档 靠首档TP(或首档%=0 时在此统盈) - g_sym.RefreshRates(); - if(layers >= 2) - { - if(g_sym.Bid() >= b.avgPrice + ave) - { - CloseType(POSITION_TYPE_BUY, "统盈(>=2档)"); - return; - } - } - else - { - if(InpFirstTpPercent <= 0.0 && g_sym.Bid() >= b.avgPrice + ave) - { - CloseType(POSITION_TYPE_BUY, "单档无首档TP%,按成本+统盈%"); - return; - } - } - - // 2) 加仓: 与上一笔成交价(多=Ask)相对 last 至少 上一×Dis% - g_sym.RefreshRates(); - if(g_sym.Ask() <= b.lastPrice - dis) - { - if(!CanOpenMoreOrders(b.count)) - return; - if(!SpreadOk()) - return; - if(b.count > 0) - RemoveTakeProfitsType(POSITION_TYPE_BUY); - const int nextLayer = b.count / nOrd; // 下一档索引 = 已满仓数 - if(!OpenBuyLayersForTotal(nextLayer, IntegerToString(nextLayer))) - return; - } - } - -//+------------------------------------------------------------------+ -void ProcessShortSide() - { - SBasket b; - g_sym.RefreshRates(); - const int nOrd = OrdersPerAdd(); - if(!BuildBasket(POSITION_TYPE_SELL, b)) - { - if(!SpreadOk()) - return; - if(!CanOpenMoreOrders(0)) - return; - if(!OpenSellLayersForTotal(0, "0")) - return; - SetFirstLayerSellTP(); - return; - } - const int layers = b.count / nOrd; - - const double dis = PctOfPrice(b.lastPrice, InpDisPercent); - const double ave = PctOfPrice(b.avgPrice, InpAveTpPercent); - - g_sym.RefreshRates(); - if(layers >= 2) - { - if(g_sym.Ask() <= b.avgPrice - ave) - { - CloseType(POSITION_TYPE_SELL, "统盈(>=2档)"); - return; - } - } - else - { - if(InpFirstTpPercent <= 0.0 && g_sym.Ask() <= b.avgPrice - ave) - { - CloseType(POSITION_TYPE_SELL, "单档无首档TP%,按成本+统盈%"); - return; - } - } - g_sym.RefreshRates(); - if(g_sym.Bid() >= b.lastPrice + dis) - { - if(!CanOpenMoreOrders(b.count)) - return; - if(!SpreadOk()) - return; - if(b.count > 0) - RemoveTakeProfitsType(POSITION_TYPE_SELL); - const int nextLayer = b.count / nOrd; - if(!OpenSellLayersForTotal(nextLayer, IntegerToString(nextLayer))) - return; - } - } - -//+------------------------------------------------------------------+ -int OnInit() - { - g_sym.Name(_Symbol); - g_trade.SetExpertMagicNumber((ulong)InpMagic); - InitLotLadder(); - LogInitDiagnostics(); - if(InpAddTimes < 1.0) - { - Print("20260425: AddTimes 应 >=1"); - return INIT_PARAMETERS_INCORRECT; - } - if(InpDisPercent <= 0.0) - { - Print("20260425: InpDisPercent 应 >0"); - return INIT_PARAMETERS_INCORRECT; - } - if(InpAveTpPercent <= 0.0) - { - Print("20260425: InpAveTpPercent 应 >0"); - return INIT_PARAMETERS_INCORRECT; - } - if(InpFirstTpPercent < 0.0) - { - Print("20260425: InpFirstTpPercent 应 >=0"); - return INIT_PARAMETERS_INCORRECT; - } - if(LotForLayerIndex(0) < MinLot() - 1e-8) - { - Print("20260425: 第1档手数小于平台最小手,请改 InpLotLadder[0] 或品种"); - return INIT_PARAMETERS_INCORRECT; - } - if(InpMaxOrdersPerSide > 0 && OrdersPerAdd() > InpMaxOrdersPerSide) - { - Print("20260425: InpOrdersPerAdd 不能大于 InpMaxOrdersPerSide(否则无法开首单)"); - return INIT_PARAMETERS_INCORRECT; - } - if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) - { - Print("20260425: 自动交易已关闭(终端设置)"); - } - return INIT_SUCCEEDED; - } - -//+------------------------------------------------------------------+ -void OnDeinit(const int reason) - { - VtpLineDeleteName(MGRID_VTP_B); - VtpLineDeleteName(MGRID_VTP_S); - TgtListDelete(); - ChartRedraw(0); - } - -//+------------------------------------------------------------------+ -void OnTick() - { - g_sym.RefreshRates(); - // 多、空 两边独立 - ProcessLongSide(); - ProcessShortSide(); - UpdateVirtualTPLines(); - UpdateBasketTgtListLabel(); - } - -//+------------------------------------------------------------------+ - diff --git a/tag/20260425-马丁网格策略/README.md b/tag/20260425-马丁网格策略/README.md deleted file mode 100644 index 8262e31..0000000 --- a/tag/20260425-马丁网格策略/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# 马丁网格策略 - -- **概念**:`InpSlippage` 等仍按「点」= `SYMBOL_POINT`;但 **首档止盈 / 统盈 / 加仓间距** 在 v1.08 起为**相对价**的**百分比(%)**,在运行时以对应参考价(开仓/成本/上一同向开)换算成实际价距。语言 MQL5。 -- **特点**:小周期震荡、同向加仓、整篮按成本统盈(无单张止损)。 - -## 功能概要 - -震荡中同向加仓;无单时开首单;首档按 **InpFirstTpPercent** 相对**该笔开仓**设止盈(价距=开仓价×%);多档后按**加权成本 × InpAveTpPercent%** 整篮平仓;加仓间距= **上一同向单开仓价 × InpDisPercent%**;多空对称(v1.10 起已取消按 K 线数的时间全平)。 - -## 参数(与输入组对应) - -| 思路 | 参数 | -|------|------| -| 滑点 | `InpSlippage` | -| 识别 | `InpMagic` | -| 首档 TP% / 统盈%(相对成本) | `InpFirstTpPercent`(默认0.05), `InpAveTpPercent`(默认0.05) | -| 加仓间距%(相对上笔同向开) / 满 20 档后倍率 / 单方向最大持仓笔数 | `InpDisPercent`(默认0.1), `InpAddTimes`(默认1.2), `InpMaxOrdersPerSide`(默认20,0=不限制;达到后仅停止新开仓,不平仓) | -| 第 1~20 档总手数(一行 20 个数,英文逗号) | `InpLotLadder` | -| 每档拆单笔数 | `InpOrdersPerAdd` | -| 点差上限、日志 | `InpMaxSpreadPoints`, `InpLog` | -| 图表虚拟统盈线 | `InpDrawVtp` 及颜色、线宽 | -| 图表每单统盈价列表 | `InpShowBasketTgtList`, `InpTgtListColor`, `InpTgtListFont`(左下列出 #、开仓、统盈目标 T,与程序整篮价一致,非交易列表「获利」列) | - -## 止盈策略 - -**档**:同向第几批加仓;若 `InpOrdersPerAdd>1`,档数 = 该向笔数 / 拆单。 - -- **仅 1 档** - - `InpFirstTpPercent > 0`:在**订单上**挂 TP(多 `开 + 开×%`,空 `开 − 开×%`)。 - - `InpFirstTpPercent = 0`:不挂首档 TP,改由程序在 **多** `Bid ≥ 成本 + 成本×InpAveTpPercent%`、**空** `Ask ≤ 成本 − 成本×InpAveTpPercent%` 时整篮平仓。 -- **≥2 档**:加第 2 档前会清掉该向各单 TP,之后只在 **多** `Bid ≥ 成本 + 成本×统盈%`、**空** `Ask ≤ 成本 − 成本×统盈%` 时**整篮**平仓。 -- 市价加仓判定:多关注 **Ask** 与上一开间距;空 **Bid** 与上一开(与 v1.08 前仅用对侧价相比更贴实际成价)。 -- **图表线** `InpDrawVtp`:仅作目标价参考,非经纪商挂单。 -- **每单看统盈价**:`InpShowBasketTgtList=true` 时,在**图表左下**用文本列出该向每笔 `#`、开仓、以及**同一条**统盈目标 T(与程序整篮平仓一致)。**交易**窗口里多档时「获利」仍可能全 0:统盈是程序按成本判断,**不能把同一统盈价在每一笔上都设成有效经纪商 TP**(否则或拒单、或只平部分单),故用图上列表作对照。 diff --git a/马丁策略/README.md b/马丁策略/README.md deleted file mode 100644 index ed56ee8..0000000 --- a/马丁策略/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# 马丁网格策略 - -## 基础概念 -- 平台:MQL5 -- 品种:支持跟随图表窗口 -- 所有日志、参数说明均需使用中文 - -## 辅助指标 -- 移动平均线(Moving Average) - -## 核心逻辑 -- K线周期:支持参数设置,默认为1min -- 突破K线:开仓价在均线之下,收盘价在均线之上,称之为多单突破K线,反之亦然 -- 出现突破K线时,开首单,如果已有同方向单,不开首单 -- 价格往反方向运行 首单价*补仓比例(支持参数设置) 时,即为满足加仓条件 -- 首单价开仓手数支持参数设置 -- 加仓放大手数支持参数设置,默认为 0.05手,相比上一组的手数 + 加仓放大手数;**不是每一网格档都乘一次**,而是与下条「档间隔」配合使用。 -- **档间隔(参数 N)**:控制隔多少档才把「加仓放大手数」用上一次。例如 **N = 5** 表示每 **5 个网格档**为一组,**组内手数相同**;每进入新的一组,手数 = **上一组手数 + 加仓放大手数**(首组 = 首单手数)。用于减缓手数膨胀。 -- 平仓逻辑:使用统盈的策略,多单止盈价 = 加权平均成本 + 加权平均成本 * 止盈比例(支持参数设置),反之亦然 -- 多空单互不影响 -- 支持参数设置是否复利,复利开启后,只会影响首单的开仓手数,不影响加仓的开仓手数 - -## 补充逻辑 -- 单向持仓已达「单向最大档数」时,**每个 Tick** 比较该向**浮动盈亏**(各单获利+库存费之和,账户货币)与 **账户结余 × 浮盈比例**(参数 `InpMaxLayersFloatPct`,百分比;为 **0** 表示关闭本规则)。若浮盈不低于阈值,则**平掉该方向、本品种、本 EA Magic 下全部持仓**,随后可再由突破逻辑开新首单。 -- **结余**指 `ACCOUNT_BALANCE`。与统盈可同时存在:若价格已达统盈会先整篮平掉,否则在满档下仍可能触发本条。 diff --git a/马丁策略/zyb.mading.mq5 b/马丁策略/zyb.mading.mq5 deleted file mode 100644 index ea6091f..0000000 --- a/马丁策略/zyb.mading.mq5 +++ /dev/null @@ -1,562 +0,0 @@ -//+------------------------------------------------------------------+ -//| 马丁网格策略 EA — 逻辑见同目录 README.md | -//| 需对冲账户(同一方向可多笔持仓);日志与参数说明为中文。 | -//+------------------------------------------------------------------+ -#property copyright "zyb-ea" -#property version "1.00" -#property description "马丁网格:MA 突破首单 + 首单价比例间距补仓 + 档间隔每组+#加仓放大手数 + 统盈;可选复利仅首单。" - -#include - -CTrade g_trade; - -int g_hMa = INVALID_HANDLE; - -//------------------------------------------------------------ -input group "工作区" -input ENUM_TIMEFRAMES InpWorkTF = PERIOD_M1; // 工作周期(K 线:突破判定、新 K 检测;默认 1 分钟) -input int InpSlippage = 30; // 滑点(点) -input int InpMaxSpreadPoints = 0; // 最大点差(点,0=不限制) -input long InpMagic = 20260507; // Magic 识别码 - -input group "移动平均线" -input int InpMAPeriod = 20; // MA 周期 -input int InpMAShift = 0; // MA 位移 -input ENUM_MA_METHOD InpMAMethod = MODE_SMA; // MA 算法 -input ENUM_APPLIED_PRICE InpMAPrice = PRICE_CLOSE; // 应用于 - -input group "头寸与补仓" -input double InpFirstLot = 0.01; // 首单手数(复利关闭时为固定手数) -input double InpStepPercent = 2.0; // 补仓比例(%):每档价距 = 首单开仓价 × 本参数%(相对上一同向开仓反向计数) -input double InpAddLotBoost = 0.05; // 加仓放大手数:每新一组在上一组手数上 + 本参数(组内 N 档相同;首组=首单) -input int InpTierInterval = 5; // 档间隔 N:每 N 个网格档为一组,组满后下一组手数 + 加仓放大手数 -input int InpMaxLayers = 50; // 单向最大档数(含首单,安全上限) - -input group "统盈平仓" -input double InpTpPercent = 10.0; // 止盈比例(%):多单目标 = 加权成本 × (1+本%);空单反之 - -input group "补充逻辑(满档浮盈)" -input double InpMaxLayersFloatPct = 0.0; // 浮盈比例(%,相对账户结余):该向已达「单向最大档」时,若该向浮盈(含库存费)≥结余×本%/100 则平掉该向全仓;0=关闭 - -input group "复利(仅首单)" -input bool InpUseCompound = false; // 开启后只按比例放大「首单」手数;加仓档仍用本节基准手数递推 -input double InpCompoundRefEquity = 10000.0; // 参考净值:首单手数 ≈ InpFirstLot × (当前净值 / 参考净值) - -input group "其它" -input bool InpLog = true; // 是否打印日志 - -//------------------------------------------------------------ -double g_longBaseLot = 0.0; // 本轮回多单首单基准手数(加仓按此递推) -double g_shortBaseLot = 0.0; -static datetime g_lastWorkBar = 0; - -//------------------------------------------------------------ -double MinLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); } -double MaxLot() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); } -double LotStep() { return SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); } - -double NormalizeVolumeVal(const double v) -{ - const double lo = MinLot(); - const double hi = MaxLot(); - const double st = LotStep(); - if(st <= 0.0 || hi < lo) - return v; - if(v < lo - 1e-12) - return 0.0; - double x = MathMin(v, hi); - x = MathFloor(x / st + 1e-12) * st; - return x; -} - -int SpreadPoints() -{ - return (int)SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); -} - -//------------------------------------------------------------ -// 复利仅影响首单:返回本轮「基准手数」,加仓用 LotForTier(..., 此基准) -double CalcBasketBaseLot() -{ - double lot = InpFirstLot; - if(InpUseCompound && InpCompoundRefEquity > 1e-8) - { - const double eq = AccountInfoDouble(ACCOUNT_EQUITY); - lot = InpFirstLot * (eq / InpCompoundRefEquity); - } - return NormalizeVolumeVal(lot); -} - -// tierIndex:0=首单,1=第 2 笔 …;grp=tierIndex/N 为组号,组内手数相同,每组手数=首单基准+grp×加仓放大手数 -double LotForTier(const int tierIndex, const double basketBaseLot) -{ - if(tierIndex < 0 || basketBaseLot <= 0.0) - return 0.0; - const int n = MathMax(1, InpTierInterval); - const int grp = tierIndex / n; - if(InpAddLotBoost <= 0.0) - return NormalizeVolumeVal(basketBaseLot); - double vol = basketBaseLot + (double)grp * InpAddLotBoost; - vol = MathMin(vol, MaxLot()); - return NormalizeVolumeVal(vol); -} - -//------------------------------------------------------------ -int CountPositions(const long typeFilter) // POSITION_TYPE_BUY / SELL,-1 表示不限方向但同 magic 同品种 -{ - int c = 0; - const int total = (int)PositionsTotal(); - for(int i = 0; i < total; i++) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - const long typ = (long)PositionGetInteger(POSITION_TYPE); - if(typeFilter >= 0 && typ != typeFilter) - continue; - c++; - } - return c; -} - -bool GetBasketEdges(const long posType, double &firstOpen, double &lastOpen, datetime &firstTime, datetime &lastTime) -{ - firstOpen = 0.0; - lastOpen = 0.0; - firstTime = 0; - lastTime = 0; - bool any = false; - const int total = (int)PositionsTotal(); - for(int i = 0; i < total; i++) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - if((long)PositionGetInteger(POSITION_TYPE) != posType) - continue; - const double op = PositionGetDouble(POSITION_PRICE_OPEN); - const datetime tm = (datetime)PositionGetInteger(POSITION_TIME); - if(!any) - { - firstOpen = lastOpen = op; - firstTime = lastTime = tm; - any = true; - } - else - { - if(tm <= firstTime) - { - firstTime = tm; - firstOpen = op; - } - if(tm >= lastTime) - { - lastTime = tm; - lastOpen = op; - } - } - } - return any; -} - -bool BasketAvgPrice(const long posType, double &avg, double &sumLots) -{ - avg = 0.0; - sumLots = 0.0; - double sumPxVol = 0.0; - const int total = (int)PositionsTotal(); - for(int i = 0; i < total; i++) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - if((long)PositionGetInteger(POSITION_TYPE) != posType) - continue; - const double v = PositionGetDouble(POSITION_VOLUME); - const double p = PositionGetDouble(POSITION_PRICE_OPEN); - sumPxVol += p * v; - sumLots += v; - } - if(sumLots <= 1e-12) - return false; - avg = sumPxVol / sumLots; - return true; -} - -// 该向持仓浮动盈亏(账户货币,含库存费) -double BasketFloatingPL(const long posType) -{ - double sum = 0.0; - const int total = (int)PositionsTotal(); - for(int i = 0; i < total; i++) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - if((long)PositionGetInteger(POSITION_TYPE) != posType) - continue; - sum += PositionGetDouble(POSITION_PROFIT); - sum += PositionGetDouble(POSITION_SWAP); - } - return sum; -} - -bool CloseAllDirection(const long posType, const string reason) -{ - ulong tickets[]; - int n = 0; - const int total = (int)PositionsTotal(); - for(int i = 0; i < total; i++) - { - const ulong ticket = PositionGetTicket(i); - if(ticket == 0 || !PositionSelectByTicket(ticket)) - continue; - if(PositionGetString(POSITION_SYMBOL) != _Symbol) - continue; - if((long)PositionGetInteger(POSITION_MAGIC) != InpMagic) - continue; - if((long)PositionGetInteger(POSITION_TYPE) != posType) - continue; - ArrayResize(tickets, n + 1); - tickets[n++] = ticket; - } - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - bool ok = true; - for(int j = 0; j < n; j++) - { - if(!g_trade.PositionClose(tickets[j], (uint)InpSlippage)) - { - ok = false; - if(InpLog) - Print("平仓失败 ticket=", tickets[j], " err=", GetLastError()); - } - } - if(InpLog && ok && n > 0) - Print("批量平仓 ", (posType == POSITION_TYPE_BUY ? "多" : "空"), " 笔数=", n, " 原因: ", reason); - return ok; -} - -//------------------------------------------------------------ -void CheckBasketTakeProfit() -{ - const int nb = CountPositions(POSITION_TYPE_BUY); - if(nb > 0) - { - double avg = 0.0, sumL = 0.0; - if(BasketAvgPrice(POSITION_TYPE_BUY, avg, sumL)) - { - const double target = avg * (1.0 + InpTpPercent / 100.0); - const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - if(bid >= target) - CloseAllDirection(POSITION_TYPE_BUY, "多单统盈"); - } - } - - const int ns = CountPositions(POSITION_TYPE_SELL); - if(ns > 0) - { - double avg = 0.0, sumL = 0.0; - if(BasketAvgPrice(POSITION_TYPE_SELL, avg, sumL)) - { - const double target = avg * (1.0 - InpTpPercent / 100.0); - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - if(ask <= target) - CloseAllDirection(POSITION_TYPE_SELL, "空单统盈"); - } - } - - if(CountPositions(POSITION_TYPE_BUY) == 0) - g_longBaseLot = 0.0; - if(CountPositions(POSITION_TYPE_SELL) == 0) - g_shortBaseLot = 0.0; -} - -// 已达单向最大档时:浮盈 ≥ 结余×比例 则清该向仓位(重头在平仓后由突破逻辑再开) -void CheckMaxLayersBalanceFloatExit() -{ - if(InpMaxLayersFloatPct <= 0.0) - return; - - const double bal = AccountInfoDouble(ACCOUNT_BALANCE); - if(bal <= 0.0) - return; - - const double need = bal * (InpMaxLayersFloatPct / 100.0); - - const int nb = CountPositions(POSITION_TYPE_BUY); - if(nb == InpMaxLayers) - { - const double fpl = BasketFloatingPL(POSITION_TYPE_BUY); - if(fpl >= need) - { - if(InpLog) - Print("满档多单补充平仓: 浮盈=", fpl, " 阈值(结余×", InpMaxLayersFloatPct, "%)=", need); - CloseAllDirection(POSITION_TYPE_BUY, "满档-浮盈达结余×设定比例"); - } - } - - const int ns = CountPositions(POSITION_TYPE_SELL); - if(ns == InpMaxLayers) - { - const double fpl = BasketFloatingPL(POSITION_TYPE_SELL); - if(fpl >= need) - { - if(InpLog) - Print("满档空单补充平仓: 浮盈=", fpl, " 阈值(结余×", InpMaxLayersFloatPct, "%)=", need); - CloseAllDirection(POSITION_TYPE_SELL, "满档-浮盈达结余×设定比例"); - } - } - - if(CountPositions(POSITION_TYPE_BUY) == 0) - g_longBaseLot = 0.0; - if(CountPositions(POSITION_TYPE_SELL) == 0) - g_shortBaseLot = 0.0; -} - -//------------------------------------------------------------ -bool CopyBar1OcMa(double &o1, double &c1, double &ma1) -{ - double o[], c[]; - ArraySetAsSeries(o, true); - ArraySetAsSeries(c, true); - if(CopyOpen(_Symbol, InpWorkTF, 1, 1, o) != 1) - return false; - if(CopyClose(_Symbol, InpWorkTF, 1, 1, c) != 1) - return false; - double m[]; - ArraySetAsSeries(m, true); - if(CopyBuffer(g_hMa, 0, 1, 1, m) != 1) - return false; - o1 = o[0]; - c1 = c[0]; - ma1 = m[0]; - return true; -} - -// 新 K 线开盘时:用上一根已收盘 K 做突破判定;仅在无同向持仓时开首单 -void TryOpenFirstOnBreakout() -{ - if(g_hMa == INVALID_HANDLE) - return; - - double o1 = 0.0, c1 = 0.0, ma1 = 0.0; - if(!CopyBar1OcMa(o1, c1, ma1)) - return; - - const bool longBreak = (o1 < ma1 && c1 > ma1); - const bool shortBreak = (o1 > ma1 && c1 < ma1); - - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - - if(longBreak && CountPositions(POSITION_TYPE_BUY) == 0) - { - g_longBaseLot = CalcBasketBaseLot(); - if(g_longBaseLot >= MinLot() - 1e-12) - { - const string cmt = "马丁-多首单-突破"; - if(g_trade.Buy(g_longBaseLot, _Symbol, 0.0, 0.0, 0.0, cmt)) - { - if(InpLog) - Print("开多单首单 手数=", g_longBaseLot); - } - else if(InpLog) - Print("开多单首单失败 err=", GetLastError()); - } - else - { - if(InpLog) - Print("多单首单手数过小,跳过"); - g_longBaseLot = 0.0; - } - } - - if(shortBreak && CountPositions(POSITION_TYPE_SELL) == 0) - { - g_shortBaseLot = CalcBasketBaseLot(); - if(g_shortBaseLot >= MinLot() - 1e-12) - { - const string cmt = "马丁-空首单-突破"; - if(g_trade.Sell(g_shortBaseLot, _Symbol, 0.0, 0.0, 0.0, cmt)) - { - if(InpLog) - Print("开空单首单 手数=", g_shortBaseLot); - } - else if(InpLog) - Print("开空单首单失败 err=", GetLastError()); - } - else - { - if(InpLog) - Print("空单首单手数过小,跳过"); - g_shortBaseLot = 0.0; - } - } -} - -//------------------------------------------------------------ -void TryGridAddBuy() -{ - const int n = CountPositions(POSITION_TYPE_BUY); - if(n < 1 || n >= InpMaxLayers) - return; - double fo = 0.0, lo = 0.0; - datetime ft, lt; - if(!GetBasketEdges(POSITION_TYPE_BUY, fo, lo, ft, lt)) - return; - if(g_longBaseLot <= 0.0) - g_longBaseLot = CalcBasketBaseLot(); // 若未设置(如手工单),尽力 fallback - - const double dPrice = fo * (InpStepPercent / 100.0); - if(dPrice <= 0.0) - return; - const double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); - - if(bid <= lo - dPrice) - { - const int nextTier = n; // 当前已有 n 笔,下一笔档位索引为 n(首单为 0) - double vol = LotForTier(nextTier, g_longBaseLot); - if(vol < MinLot() - 1e-12) - { - if(InpLog) - Print("多单加仓手数过小 tier=", nextTier, " 跳过"); - return; - } - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - const bool lastToCap = (n + 1 == InpMaxLayers); // 本次成交后达到单向最大档数(含首单) - const string cmt = lastToCap ? "马丁-多加仓-已达最大档(末笔·不再加仓)" : "马丁-多加仓"; - if(g_trade.Buy(vol, _Symbol, 0.0, 0.0, 0.0, cmt)) - { - if(InpLog) - Print("多加仓 第", (nextTier + 1), "/", InpMaxLayers, "笔 手数=", vol, - (lastToCap ? " 【已达单向最大档,后续不再加仓】" : ""), - " bid=", bid, " 上开=", lo, " 首开=", fo); - } - else if(InpLog) - Print("多加仓失败 err=", GetLastError()); - } -} - -void TryGridAddSell() -{ - const int n = CountPositions(POSITION_TYPE_SELL); - if(n < 1 || n >= InpMaxLayers) - return; - double fo = 0.0, lo = 0.0; - datetime ft, lt; - if(!GetBasketEdges(POSITION_TYPE_SELL, fo, lo, ft, lt)) - return; - if(g_shortBaseLot <= 0.0) - g_shortBaseLot = CalcBasketBaseLot(); - - const double dPrice = fo * (InpStepPercent / 100.0); - if(dPrice <= 0.0) - return; - const double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); - - if(ask >= lo + dPrice) - { - const int nextTier = n; - double vol = LotForTier(nextTier, g_shortBaseLot); - if(vol < MinLot() - 1e-12) - { - if(InpLog) - Print("空单加仓手数过小 tier=", nextTier, " 跳过"); - return; - } - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - const bool lastToCap = (n + 1 == InpMaxLayers); - const string cmt = lastToCap ? "马丁-空加仓-已达最大档(末笔·不再加仓)" : "马丁-空加仓"; - if(g_trade.Sell(vol, _Symbol, 0.0, 0.0, 0.0, cmt)) - { - if(InpLog) - Print("空加仓 第", (nextTier + 1), "/", InpMaxLayers, "笔 手数=", vol, - (lastToCap ? " 【已达单向最大档,后续不再加仓】" : ""), - " ask=", ask, " 上开=", lo, " 首开=", fo); - } - else if(InpLog) - Print("空加仓失败 err=", GetLastError()); - } -} - -//------------------------------------------------------------ -int OnInit() -{ - g_trade.SetExpertMagicNumber((ulong)InpMagic); - g_trade.SetDeviationInPoints((uint)InpSlippage); - const int filling = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE); - if((filling & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK) - g_trade.SetTypeFilling(ORDER_FILLING_FOK); - else if((filling & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC) - g_trade.SetTypeFilling(ORDER_FILLING_IOC); - else - g_trade.SetTypeFilling(ORDER_FILLING_RETURN); - - g_hMa = iMA(_Symbol, InpWorkTF, InpMAPeriod, InpMAShift, InpMAMethod, InpMAPrice); - if(g_hMa == INVALID_HANDLE) - { - Print("初始化 MA 句柄失败"); - return INIT_FAILED; - } - g_lastWorkBar = 0; - g_longBaseLot = 0.0; - g_shortBaseLot = 0.0; - if(InpLog) - Print("马丁网格 EA 初始化: ", _Symbol, " 工作周期=", EnumToString(InpWorkTF), - " MA=", InpMAPeriod, - " 补仓%=", InpStepPercent, - " 加仓放大手数=", InpAddLotBoost, " 档间隔=", InpTierInterval, - " 统盈%=", InpTpPercent, - " 满档浮盈阈值%=", InpMaxLayersFloatPct, - " 复利=", (InpUseCompound ? "开" : "关")); - return INIT_SUCCEEDED; -} - -void OnDeinit(const int reason) -{ - if(g_hMa != INVALID_HANDLE) - { - IndicatorRelease(g_hMa); - g_hMa = INVALID_HANDLE; - } -} - -void OnTick() -{ - if(InpMaxSpreadPoints > 0 && SpreadPoints() > InpMaxSpreadPoints) - return; - - CheckBasketTakeProfit(); - CheckMaxLayersBalanceFloatExit(); - - const datetime bar0 = iTime(_Symbol, InpWorkTF, 0); - if(bar0 != 0 && bar0 != g_lastWorkBar) - { - g_lastWorkBar = bar0; - TryOpenFirstOnBreakout(); - } - - TryGridAddBuy(); - TryGridAddSell(); -} - -//+------------------------------------------------------------------+