Expertadvisor koduna gösterge kodu nasıl eklenir? - sayfa 4

[Silindi]  

sadece 1 yol açık nasıl yazılır ??

çünkü benim her iki yönlü pozisyonum aç, al sat.

sadece kodu düzenleyip diğerini ekliyorum; orada,

doğru mu ??

işte kod.

       if ((diClose0<diMA1))&&(ZigZagLow){
         OpenBuy();
         return ( 0 );
      }
       else ;

       if ((diClose2>diMA3))&&(ZigZagHigh){
         OpenSell();
         return ( 0 );
      }
 
albert_lim83 :

sonunda değişken problemini yaptım,

şimdi sadece

( - işlev tanımı beklenmeyen

) - dengesiz sağ parantez...

koduma ( ve ) koymayı bıraktım mı?

Buna sahipsin. . . .

 double zag, zig; b= 0 ; while (a< 2 ) {

. . . kapanışın nerede } ?

[Silindi]  
if (!ExistPositions()){

       if ((diClose0<diMA1))&&(ZigZagLow){
         OpenBuy();
         return ( 0 );
      }
       else ;

       if ((diClose2>diMA3))&&(ZigZagHigh){
         OpenSell();
         return ( 0 );
      }
   }
   
   return ( 0 );
}

bool ExistPositions() {
for ( int i= 100 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol ()== Symbol ()) {
return (True);
}
} 
} 
return (false);
}
void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend ( Symbol
(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenBuy); 
 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend ( Symbol
(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenSell); 

} 
string GetCommentForOrder() { return (Name_Expert); } 

double GetSizeLot() { return (Lots); } 
double GetTakeProfitBuy() { return (Ask+lTakeProfit* Point ); } 
double GetTakeProfitSell() { return (Bid-sTakeProfit* Point ); }
double GetStopLossBuy() { return (Bid-lStopLoss* Point ); }
double GetStopLossSell() { return (Ask+sStopLoss* Point ); }

hata

ExistPositions - genel kapsamda ifadeye izin verilmiyor

ve } - dengesiz parantezler.

[Silindi]  

sadece hatanın neden her zaman değiştiğini merak ediyorum?

bunu düzelttikten sonra,

sonra orada hata.

orada sabitledikten sonra

hata burada.

 
albert_lim83 :

hata

ExistPositions - genel kapsamda ifadeye izin verilmiyor

ve } - dengesiz parantezler.

Tamam, bu işlevi bildirdiniz . . . Okumayı kolaylaştırmak için girintiyi ayarladım. . .

 bool ExistPositions() 
   {
   for ( int i= 100 ; i< OrdersTotal (); i++) 
      {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
         {
         if ( OrderSymbol ()== Symbol ()) 
            {
             return (True);
            }
         } 
      } 
   return (false);
   }

bu kod . . . bu işlev bildirimi . . . başka herhangi bir işlevin dışında olmalıdır, bu nedenle start, init, deinit, vb. dışında olmalıdır.

 
albert_lim83 :

sadece hatanın neden her zaman değiştiğini merak ediyorum?

bunu düzelttikten sonra,

sonra orada hata.

orada sabitledikten sonra

hata burada.

Çünkü bir hata diğerini maskeler. . . birini düzeltin ve diğeri derleyici tarafından görünür hale gelir. . . örneğin, doğru sayıda paranteziniz olabilir, ancak bunlar yanlış yerlerde olabilir. . . veya bir kapanış ayracı ve bir açık ayraç kaçırmış olabilirsiniz. . . yani sayılar eşleşiyor ama yanlış.
[Silindi]  
RaptorUK :

Tamam, bu işlevi bildirdiniz . . . Okumayı kolaylaştırmak için girintiyi ayarladım. . .

bu kod . . . bu işlev bildirimi . . . başka herhangi bir işlevin dışında olmalıdır, bu nedenle start, init, deinit, vb. dışında olmalıdır.

hala aynı hata...


ExistPositions - genel kapsamda ifadeye izin verilmiyor

ve } - dengesiz parantezler.

nerede değiştirmeliyim?

 
albert_lim83 :


nerede değiştirmeliyim?

Bilmiyorum . . . tam kodu göster.
 
RaptorUK :
Bilmiyorum . . . tam kodu göster.

Katılıyorum !. Tam kod olmadan, fazla yardımcı olamayız, bu yüzden daha fazlasını beklemeyin.

MetaEditor 5 ile taranmıştır.

   if (!ExistPositions())
     {

       if ((diClose0<diMA1)) && (ZigZagLow)  // <<== ???
        {
         OpenBuy();
         return ( 0 );
        }
       else ;   // <<=== ???

       if ((diClose2>diMA3)) && (ZigZagHigh) // <<=== ???
        {
         OpenSell();
         return ( 0 );
        }
     }

   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ExistPositions() 
  {
   for ( int i= 100 ; i< OrdersTotal (); i++) // <<=== strange calculation 
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if ( OrderSymbol ()== Symbol ()) 
           {
             return (True);
           }
        }
     }
   return (false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenBuy() 
  {
   double ldLot,ldStop,ldTake;
   string lsComm;
   ldLot=GetSizeLot();
   ldStop = GetStopLossBuy();
   ldTake = GetTakeProfitBuy();
   lsComm = GetCommentForOrder();
   OrderSend ( Symbol
             (),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenBuy);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSell() 
  {
   double ldLot,ldStop,ldTake;
   string lsComm;
   ldLot=GetSizeLot();
   ldStop = GetStopLossSell();
   ldTake = GetTakeProfitSell();
   lsComm = GetCommentForOrder();
   OrderSend ( Symbol
             (),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm, 0 , 0 ,clOpenSell);

  }
string GetCommentForOrder() { return (Name_Expert); }

double GetSizeLot() { return (Lots); }
double GetTakeProfitBuy() { return (Ask+lTakeProfit* Point ); }
double GetTakeProfitSell() { return (Bid-sTakeProfit* Point ); }
double GetStopLossBuy() { return (Bid-lStopLoss* Point ); }
double GetStopLossSell() { return (Ask+sStopLoss* Point ); }
 

Belki bu böyle yazılmalıdır ???

 if (!ExistPositions())
     {
       if (diClose0 < diMA1 && (ZigZagLow)) // <<== ???
        {
         OpenBuy();
         return ( 0 );
        }
         else // <<=== ???
        {
         if (diClose2 > diMA3 && (ZigZagHigh)) // <<=== ???
          {
          OpenSell();
           return ( 0 );
          }
        }
     }