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

MT5编程-两行代码实现一键平仓

| 发表于 2023-1-8 11:59:51 | 显示全部楼层 |复制链接
最近研究了下MT5的编程,下面是我自己写的MT5一键平仓的脚本,这个脚本会平掉所有持仓头寸,也会撤掉所有挂单。
看了网上很多MT5的代码,感觉写得都太复杂,很多都是在重复造轮子,有现成的类CTrade不用,非得自己从0开始写个函数去实现。

下面是MT5脚本源代码:
#include <Trade\Trade.mqh> //引入头文件,否则不能使用CTrade类
CTrade trade;//实例化CTrade,CTrade类功能非常强大,可以处理交易的各种方法。
void OnStart()  {   
while (PositionsTotal()>0) trade.PositionClose(PositionGetTicket(0));//关闭全部头寸   
while (OrdersTotal()>0) trade.OrderDelete(OrderGetTicket(0));         //撤掉全部挂单  
}
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论6

ken138888
B
| 发表于 2023-1-8 20:02:06 | 显示全部楼层
见过这个代码
举报

点赞 评论 使用道具

simonqian
DD
| 发表于 2023-1-13 17:53:17 | 显示全部楼层
原来这么简单的
举报

点赞 评论 使用道具

xxtz
DD
| 发表于 2023-1-19 14:34:54 | 显示全部楼层
谢谢分享。
在类CTrade(class CTrade : public CObject) 有2个重载PositionClose方法
//--- methods for working with positions
  bool      PositionClose(const string symbol, const ulong deviation=ULONG_MAX);
  bool      PositionClose(const ulong ticket,   const ulong deviation=ULONG_MAX);

关闭全部头寸也可以是while (PositionsTotal()>0) trade.PositionClose(PositionGetSymbol(0));

关闭所有图表窗口script,循环体内第一句话注释掉了,其作用是将图表保存到template,以后可以在ChartOpen(symbol,period)更新模板参数打开图表,如果图表挂有EA,自动启动了,这需要要其他编程了。
void OnStart()
  {
     long first=ChartFirst();
     for(int i=0;i<200;i++)
      {
         //ChartSaveTemplate(first,ChartSymbol(first)+"="+EnumToString(ChartPeriod(first))+"="+ChartGetString(first,CHART_EXPERT_NAME));
         ChartClose(first);
         long next=ChartNext(first);
         first=next;
         if(next<0)  break;
      }
  }
删除所有画线或符号等 一句话的事  ObjectsDeleteAll(0,-1,-1);
举报

点赞 评论 使用道具

dongxu64
DDD
| 发表于 2023-1-26 09:57:05 | 显示全部楼层
原来这么复杂啊
举报

点赞 评论 使用道具

xxtz
DD
| 发表于 2023-3-11 22:55:34 | 显示全部楼层
这个是有bug的,考虑问题不全面
举报

点赞 评论 使用道具

ken138888
B
| 发表于 2023-3-12 05:36:13 | 显示全部楼层
开仓也是
举报

点赞 评论 使用道具

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

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