2024年5月31日发(作者:)
MT4批量开启和删除订单的脚本程序
两个脚本,第一个4用来在一定区间内自动按照一定间隔挂
单, 第二个4用来自动删除符合要求或者所有的单子.
安装方法同其他标准脚本,以脚本方式安装即可.
两个脚本运行前都可以设置相应参数, BatchOpen的参数如下:
ActionBuy -> true或者false, 表示挂单为买入或者卖出
RangeStart -> 挂单范围的起点
RangeEnd -> 挂单范围的终点
TotalLots -> 挂单的总手数
OrderCount -> 挂单分割成的总数量, 必须大于等于2
Slippage -> 允许的滑点数,可以为0
StopLoss -> 所挂的单的止损位, 可以为0表示无止损
TakeProfit -> 所挂的单的获利位, 可以为0表示无获利
Comments -> 注释,默认为"BatchOpen Auto Generated", 可以用后面的
BatchClose来通过特定的注释匹配删除特定的单.
Expiration -> 挂单过期时间,未测试,默认不过期
Delay -> 每两个单之间的等待时间,默认不等待
比如以如下的参数设置
ActionBuy = true
RangeStart = 1.1850
RangeEnd = 1.1870
TotalLots = 1.0
OrderCount = 5
Slippage = 0
StopLoss = 1.1830
TakeProfit = 1.1920
为例, 运行后将自动挂上如下5单:
1.1850, 0.2 lots, S/L 1.1830, T/P 1.1920
1.1855, 0.2 lots, S/L 1.1830, T/P 1.1920
1.1860, 0.2 lots, S/L 1.1830, T/P 1.1920
1.1865, 0.2 lots, S/L 1.1830, T/P 1.1920
1.1870, 0.2 lots, S/L 1.1830, T/P 1.1920
如果当手数之类的不能整除的话多余的会放到最后一单,同时
每单大小最小必须为0.1 Lots
另外注意挂单时候的价位以及止损, 获利价位都必须和
当前价位之类的有最小7点的差别, 否则该单会失败.
BatchClose对应为批处理关闭符合要求的单子, 设置参数为:
Comments -> 用来设置匹配的单子注释, 注释不匹配的不予删除, 不设置
则表示匹配任意注释
CommentsMatchStart -> 用来设置注释匹配时候是全匹配还是只匹配开头
部分即可,默认为只匹配开头
PendingOnly -> 表示是否只匹配挂单,默认为否,匹配所有单据
Slippage -> 允许的滑点数,可以为0
Magic -> 表示用来匹配的单据MagicNumber, 默认0表示匹配所有单据.
默认参数运行表示删除所有的单子(包括挂单和已成交单),一般如果想只
删除BatchOpen自动生成的单子
可以把Comments项改成"BatchOpen"即可(前提是 BatchOpen运行的时候
注释为默认的), 如果只想删除挂单
则修改PendingOnly 为true.
不过这两个脚本实际意义不大,MT4上应该没有几个人有真实帐户的. 有
兴趣的自己试试吧.
代码:
//+---------------------------------------------+
//| 4 |
//| *******************|
//| |
//+---------------------------------------------+
#propertycopyright"*******************"
#property link ""
#property show_inputs
#include <>
extern bool ActionBuy = true;
extern double RangeStart = 1.1850;
extern double RangeEnd = 1.1870;
extern double TotalLots = 1.0;
extern int OrderCount = 5;
extern int Slippage = 0;
extern double StopLoss = 0.0;
extern double TakeProfit = 0.0;
extern string Comments = "BatchOpen Auto Generated";
extern datetime Expiration = 0;
extern int Delay = 0;
#define BATCH_OPEN_MAGIC 06021610
//+---------------------------------------------+
//|script program start function |
//+---------------------------------------------+
int ActionType = 0;
int start()
{
//----
//inputs checking
if (OrderCount < 2) {
MessageBox("Not enough OrderCount, must be
greater than 1 at least");
return (-1);
}


发布评论