复利思维的力量:每月1%-3%利润计算年收益
搜索
热搜: 活动 交友 discuz
在线留言 直接开户返佣 参与选拔奖励 资金对接操盘 参与培训计划 参加实盘大赛
1 2 3 4
查看: 48|回复: 0

持仓单一键平仓脚本 - MetaTrader 5脚本

[复制链接]

341

主题

20

回帖

1441

积分

管理员

积分
1441
发表于 2024-10-7 09:37:00 | 显示全部楼层 |阅读模式
CloseAllPositions.mq5 (5.29 KB, 下载次数: 6)

在手动或自动化交易中,一键平仓功能都是比较常用的,特别是在涉及风控管理的时候,能够快速止损,有效控制风险。这个脚本功能实现起来并不难,但在程序化实现的过程中,会有一些不同的应用场景。



//+------------------------------------------------------------------+
//|                                                   |
//|                                         |
//|                                        http://www.popoding.club/ |
//+------------------------------------------------------------------+
#property copyright "Wen Tao Xiong"
#property link      "https://www.mql5.com/zh/users/xiongsir/seller"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(int i = 0 ; i < PositionsTotal(); i++)
     {

      ulong pos_ticket = PositionGetTicket(i);  
      ulong pos_magic = PositionGetInteger(POSITION_MAGIC);
      string pos_symbol = PositionGetString(POSITION_SYMBOL);
      double pos_volume = PositionGetDouble(POSITION_VOLUME);  
      double pos_profit = PositionGetDouble(POSITION_PROFIT);  
      ENUM_POSITION_TYPE pos_type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);

      if(pos_magic == 0 && pos_symbol == "EURUSD" && pos_profit < 0)
        {

         MqlTradeRequest requst = {};
         MqlTradeResult result = {};

         double ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
         double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID);

         requst.action = TRADE_ACTION_DEAL;
         requst.position = pos_ticket;
         requst.symbol = pos_symbol;
         requst.volume = pos_volume;
         requst.deviation = 50;
         requst.magic = pos_magic;

         int filling_mode = (int)SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE);
         if(filling_mode == 1)
           {
            requst.type_filling = ORDER_FILLING_FOK;
           }
         else
            if(filling_mode == 2)
              {
               requst.type_filling = ORDER_FILLING_IOC;
              }
            else
               if(filling_mode == 3)
                 {
                  requst.type_filling = ORDER_FILLING_RETURN;
                 }

         if(pos_type == POSITION_TYPE_BUY)
           {
            requst.type = ORDER_TYPE_SELL;
            requst.price = bid;
           }
         else
            if(pos_type == POSITION_TYPE_SELL)
              {
               requst.type = ORDER_TYPE_BUY;
               requst.price = ask;
              }

         if(!OrderSend(requst,result))
           {
            printf("OrderSend Error %d",GetLastError());
           }

        }

     }

  }
//+------------------------------------------------------------------+
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



风险免责声明 : 在线交易杠杆外汇和CFD产品涉及较高的风险,未必适合所有投资者。高杠杆交易可能使您的账户面临高额的亏损,也可能带来获利的机会。在决定投资保证金产品之前,您必须认真考虑您的投资目标、经验水平和风险偏好。在线交易杠杆产品可能导致您损失您账户的部分或全部资金,您不应承担您无法承受亏损的资金风险。您应当了解所有和在线保证金交易相关的风险,如果您有任何问题,应当咨询独立的投资顾问。

QQ| |业务Email:mei@cps.one |投诉Email:info@cps.one | 扫加微信 点击这里给我发消息89613103 QQ咨询服务

GMT+8, 2024-11-24 19:59 , Processed in 0.133789 second(s), 22 queries .

Powered by cps.one

© 2001-2024

快速回复 返回顶部 返回列表