找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 29|回复: 0

破位开仓和破位平仓

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 22:13:00 | 显示全部楼层 |阅读模式
最后由 wuwei 于 2023-5-25 08:58 编辑

破位开仓和破位平仓

<b>//11破位开仓

void po_open()

  {

   G_po_open = GlobalVariableGet("G_po_open");

   if(!G_po_open)

      return;

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

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

   if(bid > iHigh(Symbol(), PERIOD_M1, 1))

     {

      //准备开多单

      int ticket = OrderSend(Symbol(), OP_BUY, lots, ask, Slippage, 0, 0);

      if(ticket < 0)

         Print("破位开多失败! ", error());

      else

        {

         G_po_open = false;

         GlobalVariableSet("G_po_open", G_po_open);

         SetRed(G_po_open, "破位开仓");

        }

     }

   if(bid < iLow(Symbol(), PERIOD_M1, 1))

     {

      //准备开空单

      int ticket = OrderSend(Symbol(), OP_SELL, lots, bid, Slippage, 0, 0);

      if(ticket < 0)

         Print("破位开空失败! ", error());

      else

        {

         G_po_open = false;

         GlobalVariableSet("G_po_open", G_po_open);

         SetRed(G_po_open, "破位开仓");

        }

     }

  }

//11破位平仓

void po_close()

  {

   G_po_close = GlobalVariableGet("G_po_close");

   if(!G_po_close)

      return;

   int iOrders = OrdersTotal(), i;//订单序号是从0开始,订单总数是1开始。所以要减1

   for(i = iOrders - 1; i >= 0; i--)

     {

      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

         if(OrderSymbol() != Symbol())

            continue;

         double ask = SymbolInfoDouble(OrderSymbol(), SYMBOL_ASK);

         double bid = SymbolInfoDouble(OrderSymbol(), SYMBOL_BID);

         if(OrderType() == OP_SELL)

           {

            if(bid > iHigh(OrderSymbol(), PERIOD_M1, 1))

              {

               if(!OrderClose(OrderTicket(), OrderLots(), ask, Slippage))//平仓 OrderType()0=买 1 =卖

                  Print(OrderTicket(), error());

               else

                 {

                  G_po_close = false;

                  GlobalVariableSet("G_po_close", G_po_close);

                  SetRed(G_po_close, "破位平仓");

                 }

              }

           }

         if(OrderType() == OP_BUY)

           {

            if(bid < iLow(OrderSymbol(), PERIOD_M1, 1))

              {

               if(!OrderClose(OrderTicket(), OrderLots(), bid, Slippage))//平仓 OrderType()0=买 1 =卖

                  Print(OrderTicket(), error());

               else

                 {

                  G_po_close = false;

                  GlobalVariableSet("G_po_close", G_po_close);

                  SetRed(G_po_close, "破位平仓");

                 }

              }

           }

         else

            error();

        }

     }

  }</b>复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 22:41 , Processed in 0.102871 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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