未结订单总量的问题 - 页 5

 

你需要重新思考一下你的代码。

buy_hedge==0 && sell_hedge==0 && OrderOpenPrice()>Bid+Hedge*Pip)

这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块

你没有使用GV来检查任何东西,你用一个整数来命名它。检查没有任何作用,因为你没有把返回的bool分配给任何变量。

检查OrderSend是否失败,如果失败,打印错误代码

 
GumRai:

你需要重新思考一下你的代码。

这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块

你没有使用GV来检查任何东西,你用一个整数来命名它。由于你没有将返回的bool分配给任何变量,所以检查没有任何作用。

检查OrderSend是否失败,如果失败,打印错误代码。

谢谢你,我想我的思路是正确的,但现在它将打开多个对冲交易,尽管它说总数<=1。 我的代码现在看起来像这样。

if(total<=1 && OrderOpenPrice()>Bid+Hedge*Pip){
               GlobalVariableCheck(ticket);
               sell_hedge=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",0,0,Blue);
               sell_hedge=GlobalVariableGet(ticket);
               sell_hedge=sell_hedge+1;
               GlobalVariableSet(ticket,sell_hedge);
               int New_SellHedge=GlobalVariableGet(ticket);
               if(sell_hedge!=New_SellHedge) {sell_hedge=New_SellHedge;}
              }
            }
 

谢谢你的建议,我终于弄明白了,现在可以用了。 这段代码看起来像这样。

if(GlobalVariableCheck("InTrade")){
      }
      else if(OrderOpenPrice()>Bid+Hedge*point){
         sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*point,0,"Hedge",magic,0,Blue);{
         GlobalVariableSet("InTrade",1);
         GlobalVariableDel("InTrade");
         return(0);
        }
     }
   }
 
         GlobalVariableSet("InTrade",1);
         GlobalVariableDel("InTrade");

设置GV然后立即删除它的意义何在?

 
GumRai:

设置GV然后立即删除它的意义何在?

有道理,谢谢你。 那么,这样做是不是更好?

if(GlobalVariableCheck("InTrade")){
  }
   else if(OrderOpenPrice()>Bid+Hedge*Pip){
      sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{
         GlobalVariableSet("InTrade",1);
         return(0);
        }
      }
    }
GlobalVariableDel("InTrade");
 
Trader3000:

有道理,谢谢你。 那么,这样做是不是更好。

不,它仍然没有任何意义。

应该有一个删除GV的理由

 
GumRai:

不,这还是完全没有意义。

应该有一个删除GV的理由

再次感谢你,这个怎么样?

int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==0 && OrderSymbol()==
         total++;
        }
if(GlobalVariableCheck("InTrade")){
  }
   else if(total==1 && OrderOpenPrice()>Bid+Hedge*Pip){
      sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{
         GlobalVariableSet("InTrade",1);
            if(total<1) GlobalVariableDel("InTrade");
            return(0);
           }
         }
       }
 
Trader3000:

再次感谢你,这个怎么样?

它仍然没有意义

   else if(total==1 && OrderOpenPrice()>Bid+Hedge*Pip){
      sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{
         GlobalVariableSet("InTrade",1);
            if(total<1) GlobalVariableDel("InTrade");
            return(0);
           }
         }

这个代码块只有在total==1的情况下才会被执行,所以if(total<1)的检查 结果总是假的。