미결 주문 총액 문제 - 페이지 5

 

코드를 다시 생각해야 합니다.

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

둘 다 0으로 설정하고 변경하지 않으면 항상 true가 됩니다. 다음 코드 블록을 중괄호 {}로 묶지 않습니다.

GV를 사용하여 아무것도 확인하지 않고 정수로 이름을 지정합니다. 반환된 bool을 변수에 할당하지 않으므로 검사는 아무 작업도 수행하지 않습니다.

OrderSend가 실패했는지 확인하고 실패하면 오류 코드 를 인쇄하십시오.

 
GumRai :

코드를 다시 생각해야 합니다.

둘 다 0으로 설정하고 변경하지 않으면 항상 true가 됩니다. 다음 코드 블록을 중괄호 {}로 묶지 않습니다.

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) 검사 는 항상 false입니다.

사유: