|
void BreakEven(string buyOrSell, double BreakEven) { bool succeed = false ; int try = 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(); } } } } } } } } } } |
指标发布