Modify_Orders.mqh 用于管理 MetaTrader 5 中的仓位和订单。
用途
Modify_Orders.mqh 提供 两个功能强大的函数,用于管理 MetaTrader 5 平台上智能交易系统和指标中的未结头寸和挂单。它旨在自动执行修改止损、获利水平和订单价格的常规操作。
主要功能
-
修改未结头寸 的 止损和止盈
-
修改 挂单 价格
-
按 仓位类型、盈利能力和符号灵活筛选
-
支持不同的价值 计算 模式(点数或绝对价格)。
结构
修改仓位()函数
用于修改未结头寸的止损和止盈水平。
void Modify_Position( string tp_and_sl, // "SL "或 "TP"--我们改变什么。 string price_and_value, // "价值 "或 "价格"--价值类型 string type_position, // 按位置类型筛选 double price_tp_and_sl, // 设置值 string symb, // 交易工具符号 long magicNumber // 神奇数字专家。 );
头寸过滤参数:
| 参数 type_position | 说明 |
|---|---|
| "所有仓位 | 所有仓位 |
| "全部盈利 | 仅盈利头寸 |
| "所有亏损 | 仅亏损头寸 |
| 买入 | 仅买入头寸 |
| "买入盈利 | 仅买入盈利头寸 |
| "买入亏损 | 仅限亏损的买入头寸 |
| 卖出 | 仅卖出头寸 |
| "卖出盈利 | 仅限盈利的卖出头寸 |
| "卖出亏损 | 仅限亏损卖出头寸 |
使用示例
// 将所有位置的 SL 设置为 1000 点 Modify_Position("SL", "Value", "All", 1000, _Symbol, 0); // 将止损价设为 1.2345,以便买入盈利头寸 Modify_Position("TP", "Price", "Buy Profit", 1.2345, _Symbol, 12345); // 将无利可图的卖出头寸的止损点设置为 500 点 Modify_Position("SL", "Value", "Sell Loss", 500, "EURUSD", 98765);
Modify_Order() 函数
用于修改挂单(止损单和限价单)。
void Modify_Order( string tp_sl_price, // "价格"、"SL "或 "TP"。 string type_order, // 用于筛选的订单类型 double price_tp_sl_price, // 新的意义。 string symb, // 交易工具符号 long magicNumber // 神奇数字专家。 );
支持的订单类型
-
"买入止损" -- 挂单买入止损
-
"买入限价" -- 挂单买入限价。
-
"卖出止损 " -- 挂单卖出止损。
-
"限价卖出" - 挂单的限价卖出订单。
使用示例:
// 更改买入止损订单的价格 Modify_Order("Price", "Buy Stop", 1.2345, _Symbol, 0); // 为卖出限价订单设置止损 Modify_Order("SL", "Sell Limit", 1.2350, "GBPUSD", 12345); // 更改买入限价订单的止盈 Modify_Order("TP", "Buy Limit", 1.2300, "EURUSD", 98765);
工作原理
修改仓位算法:
-
以 相反顺序搜索所有未结头寸
-
按 符号和魔数过滤仓位
-
检查附加条件 ( 头寸类型、盈利能力)
-
计算新的 SL/TP 值:
-
对于"价值 " 模式 :价格 ± (价值 × 点数)
-
对于"价格 " 模式 :直接分配值
-
-
通过 OrderSend()发送修改指令
修改订单算法:
-
枚举所有挂单
-
根据符号、魔术号码和订单类型进行筛选
-
修改指定参数 ( 价格、SL 或 TP)
-
保存未更改的参数
-
发送修改指令
执行功能
安全可靠:
-
订单类型双重检查 - 通过字符串参数和系统提供的真实类型进行检查
-
复杂过滤 - 确保只有目标位置/订单受到影响
-
保留未更改的参数 -- 当 SL 更改时,TP保留,反之亦然
数学计算:
对于买入头寸
-
止损 : 当前价格 - (价值 × 点数)
-
获利 : 当前价格 + (价值 × 点数)
对于卖出头寸:
-
止损 : 当前价格 + (价值 × 点数)
-
获利 : 当前价格 - (价值 × 点数)
使用建议
对于交易专家:
#include <Modify_Order.mqh> // 在 OnTick() 函数中或根据条件: if(Условие_для_трейлинга) { // 当价格向预期方向移动时,将 SL 拉向价格 Modify_Position("SL", "Value", "All Profit", 500, _Symbol, ExpertMagic); }
手动脚本
// 所有位置的快速 SL 脚本 void OnStart() { Modify_Position("SL", "Value", "All", 1000, _Symbol, 0); }
最佳参数:
-
时间框架:任意(功能与时间框架无关)
-
工具:任何货币对、金属、指数。
-
神奇数字:建议每个智能交易系统使用唯一的数值。
程序库优势
-
多功能性 -- 适用于任何交易工具
-
灵活性 - 18 种不同的头寸过滤模式
-
易用性 - 直观的界面
-
可靠性 - 在修改前进行全面检查
-
高效 -- 计算资源消耗最小
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/68540
