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

请教一下各位大声,我想根据以下代码,在相关条件下平掉锁仓的单子,这个代码应

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-24 03:59:00 | 显示全部楼层 |阅读模式
请教一下各位大声,我想根据以下代码,在相关条件下平掉锁仓的单子,这个代码应该怎么写,请赐教。


void lock(int Ordertype)

  {

   double Price1,Lot1,Price2,Lot2;

   bool locked;

   if(Ordertype == OP_BUY)

     {

      OrderSend(Symbol(), OP_BUY, GetsellLots()-GetbuyLots(), Ask, 3, 0, 0, 0, 0, 0, BlueViolet);

      locked = TRUE;

     }

   if(Ordertype == OP_SELL)

     {

      OrderSend(Symbol(), OP_SELL, GetbuyLots()-GetsellLots(), Bid, 3, 0, 0, 0, 0, 0, BlueViolet);

      locked = TRUE;

     }

   return (0);

  }

//+------------------------------------------------------------------+/

//+-------------------------计算开单数-------------------------------+

int GetOrdersTotal(int intOrderType)

  {

   int buy=0,sell=0,total=0;

   for(int i=0; i<OrdersTotal(); i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

         continue;

      if(OrderSymbol()!=Symbol())

         continue;

      //---- check order type

      if(OrderType()==OP_BUY)

        {

         buy++;

        }

      if(OrderType()==OP_SELL)

        {

         sell++;

        }

      total++;

     }

   if(intOrderType==OP_BUY)

      return(buy);

   if(intOrderType==OP_SELL)

      return(sell);

   if(intOrderType==6)

      return(total);

   return(99999);

  }

//+------------------------------------------------------------------+

//+-------------------------计算buy下单量---------------------------+

double GetbuyLots()

  {

   datetime lasttime=Time[Bars-1];

   double buylots,selllots;

   for(int  i=0; i<OrdersTotal(); i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

         continue;

      if(OrderSymbol()!=Symbol())

         continue;

      if(OrderType()==OP_BUY)

        {

         buylots=OrderLots()+buylots;

        }

     }


   return(buylots);

  }

//+------------------------------------------------------------------+

//+-------------------------计算sell下单量---------------------------+

double GetsellLots()

  {

   datetime lasttime=Time[Bars-1];

   double selllots;

   for(int  i=0; i<OrdersTotal(); i++)

     {

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

         continue;

      if(OrderSymbol()!=Symbol())

         continue;

      if(OrderType()==OP_SELL)

        {

         selllots=OrderLots()+selllots;

        }

     }


   return(selllots);

  }

//+--------------------------------------------------------------

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

本版积分规则

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

GMT+8, 2026-10-12 14:37 , Processed in 0.507064 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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