0
이 코드를 사용하여 코드에 buy1 및 sell1 가격의 주문이 있는지 확인하고 있습니다. 어쨌든 일부 명령은 두 번 실행됩니다. 같은 takeprofit으로 미결의 주문이 있는지 확인하기 때문에 발생하지 않아야합니다. 잘못된 것을 볼 수있는 사람은 누구입니까? 반올림 명심하고 표현을 플로트 -mql4 여러 번 주문이 존재하는지 확인하십시오.
bool CheckBuyOrder1(double buy1_tp){
for(int i = 0 ; i < OrdersTotal() - 1 ; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderTakeProfit() == buy1_tp && OrderComment() == "buy")
return(true);
}
return(false);
}
bool CheckSellOrder1(double sell1_tp){
for(int i = 0 ; i < OrdersTotal() - 1 ; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderTakeProfit() == sell1_tp && OrderComment() == "sell")
return(true);
}
return(false);
}
int totalOrders = OrdersTotal();
void OnTick()
{
if(totalOrders != OrdersTotal()){
double vbid = MarketInfo("EURUSD",MODE_BID);
double bid = NormalizeDouble(vbid, 3);
double market_buy_tp = bid;
double buy1= bid + 0.002;
double buy1_tp= bid + 0.003;
if(CheckOpenOrders1(market_buy_tp)==false && CheckBuyOrder1(buy1_tp)==false){
int ticket9=OrderSend(Symbol(),OP_BUYSTOP,Lots,buy1,MaxSlippage,0,buy1_tp,"buy",16380,0,clrGreen);
}
double market_sell_tp = bid;
double sell1 = bid - 0.003;
double sell1_tp= bid - 0.004;
if(CheckOpenOrdersSell1(market_sell_tp)==false && CheckSellOrder1(sell1_tp)==false){
int ticket19=OrderSend(Symbol(),OP_SELLSTOP,Lots,sell1,MaxSlippage,0,sell1_tp,"sell",16380,0,clrGreen);
}
totalOrders = OrdersTotal();
}}
아 감사합니다! 그래서 모든 double을 정규화해야합니까? – Sander
정상화 될 수도 있지만 주문을 보낼 때만 정상화가 필요하다고 생각합니다. 더 나은 것은 두 개의 double이 tick보다 절반 (tick의 1/10) –