Toplam açık sipariş miktarıyla ilgili sorun - sayfa 5

 

Kodunuzu yeniden düşünmeniz gerekir.

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

Her ikisini de sıfıra ayarladığınızdan ve değiştirmediğinizden bunlar her zaman doğru olacaktır. Aşağıdaki kod bloğunu kaşlı ayraç {} içine almıyorsunuz

GV'yi hiçbir şeyi kontrol etmek için kullanmazsınız ve onu bir tamsayı ile adlandırırsınız. Döndürülen bool'u herhangi bir değişkene atamadığınız için kontrol hiçbir şey yapmaz.

OrderSend'in başarısız olup olmadığını kontrol edin ve başarısız olursa hata kodunu yazdırın.

 
GumRai :

Kodunuzu yeniden düşünmeniz gerekir.

Her ikisini de sıfıra ayarladığınızdan ve değiştirmediğinizden bunlar her zaman doğru olacaktır. Aşağıdaki kod bloğunu kaşlı ayraç {} içine almıyorsunuz

GV'yi hiçbir şeyi kontrol etmek için kullanmazsınız ve onu bir tamsayı ile adlandırırsınız. Döndürülen bool'u herhangi bir değişkene atamadığınız için kontrol hiçbir şey yapmaz.

OrderSend'in başarısız olup olmadığını kontrol edin ve başarısız olursa hata kodunu yazdırın.

Teşekkür ederim. Sanırım doğru yoldayım ama şimdi toplam<=1 olarak belirtse de birden fazla hedge işlemi açacak. Kodum şimdi şöyle görünüyor:

 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;}
              }
            }
 

Bu tavsiye için teşekkürler. Sonunda anladım ve şimdi çalışıyor. Kod parçası şöyle görünür:

 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'yi ayarladıktan sonra hemen silmenin anlamı nedir?

 
GumRai :

GV'yi ayarladıktan sonra hemen silmenin anlamı nedir?

Mantıklı teşekkürler. Yani böylesi daha mı iyi:

 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 :

Mantıklı teşekkürler. Yani böylesi daha mı iyi:

Hayır, hala hiç mantıklı değil.

GV'yi silmek için bir neden olmalı

 
GumRai :

Hayır, hala hiç mantıklı değil.

GV'yi silmek için bir neden olmalı

Tekrar teşekkürler. Buna ne dersin?

 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 :

Tekrar teşekkürler. Buna ne dersin?

Hala mantıklı değil

   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 );
           }
         }

Kod bloğu yalnızca toplam==1 ise yürütülür, bu nedenle kontrol if(toplam<1) her zaman yanlış olacaktır.