鸿运当归 发表于 2020-1-27 21:54:05

发一段能用的保本损代码,求10个金币

void BreakEven(string buyOrSell, double BreakEven)
    {
   bool succeed = false ;
   inttry
               = 0;
   RefreshRates();
   if(OrdersTotal() > 0)
         {
          if(BreakEven <= MarketInfo(Symbol(), MODE_STOPLEVEL) * Point)
            {
               Print("保本损设置小于StopLevel");
               return;
            }
          else
            {
               for(int i = OrdersTotal() - 1; i >= 0; i--) //顺序排列,最后开的单子最远,在0的位置,所以是从最早开的单子往最后的方向找
                   {
                  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
                        {
                         if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGICMA) //MAGIC时而统计时而不统计,高风险
                           {
                              if(buyOrSell == "buy")
                                  {
                                 if(OrderType() == OP_BUY)
                                       {
                                        if(NormalizeDouble((Bid - OrderOpenPrice()), Digits) >= NormalizeDouble(BreakEven/*2倍挂单间距*/ * Point, Digits))
                                          {
                                             if(OrderOpenPrice() - OrderStopLoss() > 0 || (OrderStopLoss() == 0))
                                                 {
                                                if(NormalizeDouble(OrderStopLoss(), Digits) != NormalizeDouble(OrderOpenPrice(), Digits) + NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), Digits) + NormalizeDouble(20 * Point, Digits))
                                                      {
                                                       //---价格从开盘价移动两个stoplevel=100点,则价格提高到开盘价+spread+20点=70点
                                                       succeed = OrderModify(OrderTicket(), NormalizeDouble(OrderOpenPrice(), Digits), NormalizeDouble(OrderOpenPrice(), Digits) + NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), Digits) + NormalizeDouble(20 * Point, Digits), NormalizeDouble(OrderTakeProfit(), Digits), 0, Lime);
                                                       if(!succeed)
                                                         {
                                                            Print("多单保本损没有设置");
                                                            Sleep(200);
                                                            
                                                         }
                                                       else
                                                         {
                                                            Print("多单保本损设置成功");
                                                         }
                                                      }
                                                RefreshRates();
                                                 }
                                          }
                                       }
                                  }
                              if(buyOrSell == "sell")
                                  {
                                 if(OrderType() == OP_SELL)
                                       {
                                        if(NormalizeDouble((OrderOpenPrice() - Ask), Digits) >= NormalizeDouble(BreakEven, Digits))
                                          {
                                             if((OrderOpenPrice() - OrderStopLoss() < 0) || (OrderStopLoss() == 0))
                                                 {
                                                if(NormalizeDouble(OrderStopLoss(), Digits) != NormalizeDouble(OrderOpenPrice(), Digits) - NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), Digits) - NormalizeDouble(20 * Point, Digits))
                                                      {
                                                       succeed = OrderModify(OrderTicket(), NormalizeDouble(OrderOpenPrice(), Digits), NormalizeDouble(OrderOpenPrice(), Digits) - NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), Digits) - NormalizeDouble(20 * Point, Digits), NormalizeDouble(OrderTakeProfit(), Digits), 0, Lime);
                                                       if(!succeed)
                                                         {
                                                            Print("空单保本损没有设置");
                                                            Sleep(200);
                                                            
                                                         }
                                                       else
                                                         {
                                                            Print("空单保本损设置成功");
                                                         }
                                                      }
                                                RefreshRates();
                                                 }
                                          }
                                       }
                                  }
                           }
                        }
                   }
            }
         }
    }

改变 发表于 2020-6-11 13:30:52

小手一抖,积分到手!

365 发表于 2020-6-21 19:53:01

相当不错,感谢无私分享精神!

ak47fx 发表于 2020-7-28 13:26:15

学习了,不错

ttofx 发表于 2020-11-18 20:42:38

支持下

yvtgd 发表于 2020-11-29 19:38:49

{:1_181:}

ivanlu 发表于 2020-12-3 16:37:24

支持下

好好好好哦 发表于 2020-12-12 12:30:01

{:1_179:}

ycjidnte 发表于 2020-12-16 12:19:43

{:1_179:}

mnl375 发表于 2020-12-23 14:49:37

{:1_186:}
页: [1] 2
查看完整版本: 发一段能用的保本损代码,求10个金币