设为首页 收藏本站 切换语言

【高胜率小马丁策略 EA 源码】实现自动化交易的智慧之选 !!  

| 发表于 2024-6-22 11:24:05 | 显示全部楼层 |复制链接
高胜率小马丁策略 EA - 实现自动化交易的智慧之选


      在金融市场中,自动化交易系统(EA,Expert Advisor)已经成为众多交易者的首选工具之一。通过EA,交易者可以实现全天候、不间断的市场监控和交易执行,从而大大提升交易效率和准确性。本文将向您介绍一款高胜率的小马丁策略EA,带您深入了解其工作原理、使用方法及其带来的优势。

      高胜率小马丁策略 EA 简介

      高胜率小马丁策略 EA 是一款基于MetaTrader 4(MT4)平台的自动化交易工具,旨在利用马丁格尔策略在波动市场中实现高胜率交易。该EA采用了一系列优化参数和智能算法,能够在市场波动中捕捉交易机会,确保稳定的盈利。

      什么是马丁格尔策略?

      马丁格尔策略是一种经典的交易策略,最早应用于赌博领域。其核心思想是在每次亏损后加倍下注,以期在下一次交易中获利并弥补所有之前的亏损。在金融交易中,马丁格尔策略同样适用,但需要谨慎控制风险和仓位,以避免在连续亏损时账户资金大幅缩水。

      高胜率小马丁策略 EA 的特点

1. **智能参数调控**:EA内置了多种参数设置,如K线数量、波动率参数、开仓和平仓阈值等,用户可以根据市场情况和个人偏好进行灵活调整。
2. **自动加单与平仓**:EA能够根据市场走势自动进行加单和平仓操作,确保在盈利时最大化收益,同时在亏损时及时止损。
3. **高胜率交易**:通过合理的参数设置和智能算法,EA能够在波动市场中实现高胜率交易。
4. **全天候交易**:EA无需人工干预,能够24小时不间断地监控市场并执行交易。

工作原理解析

初始化与参数设置

在EA的初始化阶段,会对一系列参数进行设置和校验,以确保EA能够正常运行。以下是初始化函数的部分代码:
  1. mql4
  2. int OnInit() {
  3.     int runok = 0;
  4.     datetime expiryTime = D'2028.11.20 00:00'; // 到期时间
  5.     {
  6.         runok = 1;
  7.     }
  8.     if (runok == 0) {
  9.         Alert("到期请添加QQ/微信:xxxxxx21");
  10.         ExpertRemove();
  11.         return INIT_FAILED;
  12.     }
  13.     if (TimeCurrent() > expiryTime) {
  14.         Alert("到期请添加QQ/微信:xxxxxx21");
  15.         ExpertRemove();
  16.         return INIT_FAILED;
  17.     }
  18.     TempVar4 = MathPow(0.1, Digits); // 根据小数位数设置变量
  19.     if (Digits == 5 || Digits == 3) TempVar1 = 10;
  20.     if (StringFind(Symbol(), "XAU", 0) >= 0 || StringFind(Symbol(), "GOLD", 0) >= 0) {
  21.         if (Digits == 2) TempVar1 = 10;
  22.         if (Digits == 3) TempVar1 = 100;
  23.     }
  24.     TickValue = MarketInfo(Symbol(), MODE_TICKVALUE); // 获取每点值,并确保类型一致
  25.     return(INIT_SUCCEEDED);
  26. }
复制代码



每个Tick的操作

在市场行情更新(即每个Tick)时,EA会执行一系列操作,包括获取当前市场价格、计算波动率、判断开仓和平仓条件等。以下是关键的OnTick函数代码:

  1. mql4
  2. void OnTick() {
  3.     datetime expiryTime = D'2088.12.01 00:00'; // 到期时间
  4.     if (TimeCurrent() > expiryTime) {
  5.         Alert("账号到期请联系微信:7xxxxx21");
  6.         ExpertRemove();
  7.         return; // 返回类型为void的函数不应该返回值,去掉0
  8.     }
  9.     Spread = MarketInfo(Symbol(), MODE_SPREAD); // 获取当前点差
  10.     if (Spread > MaxSpread * TempVar1) {
  11.         AllowOpen = false;
  12.     } else {
  13.         Comment("");
  14.         AllowOpen = true;
  15.     }
  16.     BidPrice = NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Digits); // 获取买价
  17.     AskPrice = NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Digits); // 获取卖价
  18.     CountTrades(); // 统计订单
  19.     HideTestIndicators(TRUE);
  20.     ATRValue = iATR(NULL, 0, 83, 1); // 获取ATR值
  21.     double wpr = iWPR(NULL, 0, Volatility, 1); // 获取WPR值
  22.     HideTestIndicators(false);
  23.     LastBuyModifyTime = iTime(NULL, 0, 1); // 获取最后修改时间
  24.     LastSellModifyTime = iTime(NULL, 0, 1);
  25.     Print(AccountLeverage()); // 打印账户杠杆
  26.     double ClosePrice = iClose(NULL, 0, 1); // 获取收盘价
  27.     double HighPrice = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, Volatility, 2)); // 获取最高价
  28.     double LowPrice = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, Volatility, 2)); // 获取最低价
  29.     double HighPrice22 = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, KLineCount, 2)); // 获取K线最高价
  30.     double LowPrice22 = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, KLineCount, 2)); // 获取K线最低价
  31.     // 判断开仓条件
  32.     if (AllowOpen == true && BuyOrderCount < 1 && ClosePrice - LowPrice22 > Amplitude * TempVar1 * TempVar4 && wpr < -(100 - OpenThreshold) && LastBuyTime != LastBuyModifyTime && BidPrice < ClosePrice + 5 * TempVar1 * TempVar4 && High[1] - Low[1] >= 3 * TempVar1 * TempVar4) {
  33.         OpenBuy();
  34.     }
  35.     if (AllowOpen == true && SellOrderCount < 1 && HighPrice22 - ClosePrice > Amplitude * TempVar1 * TempVar4 && wpr > -OpenThreshold && LastSellTime != LastSellModifyTime && BidPrice > ClosePrice - 5 * TempVar1 * TempVar4 && High[1] - Low[1] >= 3 * TempVar1 * TempVar4) {
  36.         OpenSell();
  37.     }
  38.     // 判断加单条件
  39.     if (AllowOpen == true && BuyOrderCount < MaxOrders && BuyStopLoss > 0 && Close[1] < Open[1] && BuyStopLoss - ClosePrice > AddOrderInterval * TempVar1 * TempVar4 && BuyStopLoss - AskPrice >= 3 * TempVar1 * TempVar4 && LastBuyTime != LastBuyModifyTime && BidPrice < ClosePrice + 5 * TempVar1 * TempVar4 && High[1] - Low[1] >= 3 * TempVar1 * TempVar4) {
  40.         OpenBuy();
  41.     }
  42.     if (AllowOpen == true && SellOrderCount < MaxOrders && SellStopLoss > 0 && Close[1] > Open[1] && ClosePrice - SellStopLoss > AddOrderInterval * TempVar1 * TempVar4 && BidPrice - SellStopLoss >= 3 * TempVar1 * TempVar4 && LastSellTime != LastSellModifyTime && BidPrice > ClosePrice - 5 * TempVar1 * TempVar4 && High[1] - Low[1] >= 3 * TempVar1 * TempVar4) {
  43.         OpenSell();
  44.     }
  45.     // 判断平仓条件
  46.     if (BuyOrderCount > 0 && wpr > -CloseThreshold && AllowOpen == true) {
  47.         CloseOrders(OP_BUY);
  48.     }
  49.     if (SellOrderCount > 0 && wpr < -(100 - CloseThreshold) && AllowOpen == true) {
  50.         CloseOrders(OP_SELL);
  51.     }
  52.     if (BuyOrderCount > 0 && ClosePrice >= HighPrice && AllowOpen == true) {
  53.         CloseOrders(OP_BUY);
  54.     }
  55.     if (SellOrderCount > 0 && ClosePrice <= LowPrice && AllowOpen == true) {
  56.         CloseOrders(OP_SELL);
  57.     }
  58.     if (BuyOrderCount > 0 && ClosePrice - BuyStopLoss > ProfitPoints * TempVar1 * TempVar4 && AllowOpen == true) {
  59.         CloseOrders(OP_BUY);
  60.     }
  61.     if (SellOrderCount > 0 && SellStopLoss - ClosePrice > ProfitPoints * TempVar1 * TempVar4 && AllowOpen == true) {
  62.         CloseOrders(OP_SELL);
  63.     }
  64.     // 移动止损止盈
  65.     MoveModifyOrder();
  66. }
复制代码

开仓与平仓

根据市场情况,EA会自动进行开仓操作,包括买单和卖单。当满足一定条件时,EA会执行平仓操作,以确保利润或止损。以下是相关的函数代码:

  1. mql4
  2. // 开多单函数
  3. void OpenBuy() {
  4.     TempVar2 = -1;
  5.    
  6. TempVar3 = 0;
  7.     LotSize1 = 0;
  8.     TempVar5 = 0;
  9.     TempVar6 = 0;
  10.     LastBuyTime = LastBuyModifyTime;
  11.     StopLossPoints = NormalizeDouble(AskPrice - ATRValue * StopLossFactor, Digits); // 计算止损点
  12.     if (BuyStopLoss2 == 0) TempVar5 = StopLossPoints;
  13.     else if (BuyStopLoss2 > 0) TempVar5 = BuyStopLoss2;
  14.     TempVar6 = NormalizeDouble(AskPrice + ATRValue * TakeProfitFactor, Digits); // 计算止盈点
  15.     while (TempVar2 < 0 && TempVar3 < 3) {
  16.         TempVar2 = OrderSend(Symbol(), OP_BUY, Lots, AskPrice, Slippage * TempVar1, 0, 0, Comment, MagicNumber, 0, DodgerBlue); // 下买单
  17.         if (TempVar2 < 0) Print("下单错误 = ", GetLastError());
  18.         if (TempVar2 > 0) {
  19.             if (TempVar5 != 0.0 || TempVar6 != 0.0) {
  20.                 if (OrderSelect(TempVar2, SELECT_BY_TICKET, MODE_TRADES)) {
  21.                     bool res = OrderModify(OrderTicket(), OrderOpenPrice(), TempVar5, TempVar6, 0, Blue); // 修改止损止盈
  22.                     if (!res) Print("设置止损止盈失败=", GetLastError());
  23.                 }
  24.             }
  25.         }
  26.         Sleep(1000);
  27.         RefreshRates();
  28.         TempVar3++;
  29.     }
  30. }
  31. // 开空单函数
  32. void OpenSell() {
  33.     TempVar2 = -1;
  34.     TempVar3 = 0;
  35.     LotSize2 = 0;
  36.     TempVar5 = 0;
  37.     TempVar6 = 0;
  38.     LastSellTime = LastSellModifyTime;
  39.     StopLossPoints = NormalizeDouble(BidPrice + ATRValue * StopLossFactor, Digits); // 计算止损点
  40.     if (SellStopLoss2 == 0) TempVar5 = StopLossPoints;
  41.     else if (SellStopLoss2 > 0) TempVar5 = SellStopLoss2;
  42.     TempVar6 = NormalizeDouble(BidPrice - ATRValue * TakeProfitFactor, Digits); // 计算止盈点
  43.     while (TempVar2 < 0 && TempVar3 < 3) {
  44.         TempVar2 = OrderSend(Symbol(), OP_SELL, Lots, BidPrice, Slippage * TempVar1, 0, 0, Comment, MagicNumber, 0, DeepPink); // 下空单
  45.         if (TempVar2 < 0) Print("下单错误 = ", GetLastError());
  46.         if (TempVar2 > 0) {
  47.             if (TempVar5 != 0.0 || TempVar6 != 0.0) {
  48.                 if (OrderSelect(TempVar2, SELECT_BY_TICKET, MODE_TRADES)) {
  49.                     bool res = OrderModify(OrderTicket(), OrderOpenPrice(), TempVar5, TempVar6, 0, Red); // 修改止损止盈
  50.                     if (!res) Print("设置止损止盈失败=", GetLastError());
  51.                 }
  52.             }
  53.         }
  54.         Sleep(1000);
  55.         RefreshRates();
  56.         TempVar3++;
  57.     }
  58. }
  59. // 平仓函数
  60. void CloseOrders(int orderType) {
  61.     int closeResult = 0;
  62.     for (int i = OrdersTotal() - 1; i >= 0; i--) {
  63.         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  64.             if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
  65.                 if (OrderType() == orderType) closeResult = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 300, Yellow); // 平仓操作
  66.             }
  67.         }
  68.     }
  69. }
复制代码



使用方法
EA的安装
1. 下载高胜率小马丁策略 EA 的 `.mq4` 文件。
2. 打开 MT4 平台,点击文件菜单,选择“打开数据文件夹”。
3. 在数据文件夹中,导航到 `MQL4` 文件夹,然后进入 `Experts` 文件夹。
4. 将下载的 `.mq4` 文件复制到 `Experts` 文件夹中。
5. 重新启动 MT4 平台,EA 将出现在导航窗口的专家顾问列表中。

配置与运行
1. 在导航窗口中找到高胜率小马丁策略 EA,拖拽到您希望交易的图表上。
2. 在弹出的设置窗口中,根据您的交易偏好调整参数设置。
3. 确保勾选“允许实时交易”选项,以使 EA 能够执行自动交易。
4. 点击“确定”按钮,EA 将开始在图表上运行并自动执行交易。

优势与注意事项

优势

1. **高效自动化**:高胜率小马丁策略 EA 能够自动监控市场并执行交易,减少人工干预,提升交易效率。
2. **智能参数调控**:通过灵活的参数设置,EA 能够适应不同的市场环境和交易策略。
3. **全天候交易**:EA 可以24小时不间断运行,捕捉市场中的每一个交易机会。

注意事项
1. **风险控制**:尽管马丁格尔策略在理论上能够实现盈利,但在实际操作中仍需注意风险控制,避免因连续亏损导致的账户资金大幅缩水。
2. **合理设置参数**:根据市场情况和个人风险承受能力,合理设置 EA 的参数,确保交易的稳定性和安全性。
3. **定期监控**:虽然 EA 能够自动运行,但交易者仍需定期监控其运行情况,及时调整策略和参数。


1.png
2.png

3.png

4.png

结论:
       高胜率小马丁策略 EA 是一款功能强大、操作简便的自动化交易工具,适合希望提升交易效率和准确性的交易者使用。通过合理设置参数和谨慎控制风险,您可以在波动的市场中实现稳定盈利。希望本文能帮助您更好地了解和使用这款 EA,为您的交易之旅增添助力。祝您交易顺利,收益丰厚!

高胜率小马丁策略.ex4

41.74 KB, 下载次数: 1, 下载积分: 活跃度 -5 售价: 4 H币  [记录]  [下载]

高胜率小马丁策略 执行文件

高胜率小马丁策略.mq4

27.29 KB, 下载次数: 6, 下载积分: 活跃度 -5 售价: 9 H币  [记录]  [下载]

高胜率小马丁策略 源码

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论33

pabiuyou
DDD
| 发表于 2024-6-23 08:11:23 | 显示全部楼层
不错,感觉挺好的
举报

点赞 评论 使用道具

w12343
DD
| 发表于 2024-6-23 09:59:48 | 显示全部楼层
没看到实盘
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-6-23 11:39:51 | 显示全部楼层
pabiuyou 发表于 2024-6-23 08:11
不错,感觉挺好的

非常感谢您的肯定,听到您这么说,我很高兴。祝您一切顺利!
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-6-23 11:40:28 | 显示全部楼层

非常抱歉,如果您没有看到实盘,那确实可能无法全面评估。
举报

点赞 评论 使用道具

xrenl521
D
| 发表于 2024-6-25 15:21:55 | 显示全部楼层
有实盘吗
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-6-25 18:05:24 | 显示全部楼层

当然有实盘
举报

点赞 评论 使用道具

875858098
D
| 发表于 2024-7-2 16:35:55 | 显示全部楼层
有下载跑下的吗
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-2 17:37:44 | 显示全部楼层

等别人,不如自己下载
举报

点赞 评论 使用道具

w12343
DD
| 发表于 2024-7-2 18:05:12 | 显示全部楼层
没有止盈止损
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-2 18:13:20 | 显示全部楼层

有什么好的想法,都可以增加上
举报

点赞 评论 使用道具

chenge0131
D
| 发表于 2024-7-3 00:11:25 | 显示全部楼层
黄金能抗住多少点
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-3 07:13:58 | 显示全部楼层
chenge0131 发表于 2024-7-3 00:11
黄金能抗住多少点

设置好止损就行
举报

点赞 评论 使用道具

chenge0131
D
| 发表于 2024-7-4 14:06:35 | 显示全部楼层
有没有好的建议
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-4 18:00:07 | 显示全部楼层

当然,保持积极心态,持续学习,勇于尝试新事物,你会发现自己越来越强大。
举报

点赞 评论 使用道具

lyt223315
D
| 发表于 2024-7-4 18:08:43 来自手机 | 显示全部楼层
应该是好东西
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-4 19:35:09 | 显示全部楼层

确实是个不错的选择!
举报

点赞 评论 使用道具

lyt223315
D
| 发表于 2024-7-4 20:50:45 来自手机 | 显示全部楼层
有源码吗 下载一下
举报

点赞 评论 使用道具

無爲编程破译
B
 楼主 | 发表于 2024-7-5 00:30:36 来自手机 | 显示全部楼层
lyt223315 发表于 2024-7-4 20:50
有源码吗 下载一下

有源码的
举报

点赞 评论 使用道具

lyt223315
D
| 发表于 2024-7-5 12:51:22 来自手机 | 显示全部楼层
平仓是秒平吗?
举报

点赞 评论 使用道具

12下一页
发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

無爲编程破译

無爲编程破译 B

EA编程 破解 指标 破源 反编译 定制开发 资源分享 众筹_脚本_辅助_源码_易语言_黑科技_技术传授_VPS资管代

天眼云VPS
简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)