我已经开了五个买入交易,他们的个人获利了结。我想把前四笔买入交易的获利回吐改成第五笔买入交易的获利回吐。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
选择顺序。