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);

}