如何使用OrderModify()修改所有当前未平仓头寸的TakeProfit ?



我已经开了五个买入交易,他们的个人获利了结。我想把前四笔买入交易的获利回吐改成第五笔买入交易的获利回吐。modifyAllBuyOrdTP()是修改获利了结的函数,而findTpL_BuyOrd()函数将获得刚刚完成开仓的最后一笔交易的获利了结。它在策略测试器中不起作用。我将感激任何能在这个问题上帮助我的人。提前谢谢你。

void modifyAllBuyOrdTP(){

if(CountTradesBuy()>=2){
for(int l_pos_4 = OrdersTotal() - 1; l_pos_4 >= 0; l_pos_4--)
{
OrderSelect(l_pos_4, SELECT_BY_TICKET);
if(OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber)
continue;
if(OrderTakeProfit() == findTpL_BuyOrd())
continue;
if(OrderStopLoss() == 0 && OrderTakeProfit() != findTpL_BuyOrd() && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
if(OrderType() == OP_BUY){
ModifyStopsByPrice(OrderTicket(),0,findTpL_BuyOrd());//Print(" b tp ",findTpL_BuyOrd());
}
}
}
}
}

double findTpL_BuyOrd(){
double l_ord_TP = 0;
for(int l_pos_4 = OrdersTotal() - 1; l_pos_4 >= 0; l_pos_4--)
{
OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber)
continue;
if(OrderTakeProfit() == 0)
continue;
if(OrderTakeProfit()!=0 && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
if(OrderType() == OP_BUY){
l_ord_TP = OrderTakeProfit();
break;
}
}
}
return l_ord_TP;
}

modifyAllBuyOrdTP()函数中,如果要对它们进行迭代,则应按SELECT_BY_POS选择顺序。

最新更新