Acemi bir kullanıcıya yardım edin - Gün ve Saat işlevleri - sayfa 3

 

Özür dilerim abstract_mind


Kodun formatı, yukarıda açıkladığınız gibi burada doğru yolu göstermiyor.

 
EagleEye :

Peki kod nasıl görünmelidir?

 //+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start ( )

// oneliner start
bool sunday_cond = ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) ;
bool monday_cond = ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ;
bool mytradeallowed = false ;
if   (
       ( OrdersTotal ( ) = = 0 )
        & &
       ( sunday_cond | | monday_cond )
     )
      {
       mytradeallowed = true ;   
      }


if ( Bars < 100 | | IsTradeAllowed ( ) = = false | | mytradeallowed = = false ) { return ; }
// oneliner end

if ( CalculateCurrentOrders ( Symbol ( ) ) = = 0 ) CheckForOpen ( ) ;

bunu dene. Umarım gece geç saatlerde bir şeyi kaçırmamışımdır.

koşulların bir satırda toplanabileceğini biliyorum, ancak diğer üyelerin de bazı gönderiler yapmasına izin vermek istedim LOL

gerçekten de bu şekilde (daha ayrı satırlar) daha anlaşılır, en azından bir acemi için.

// oneliner start
if (
     ( Bars < 100 | | IsTradeAllowed ( ) = = false )
     | | 
     (
       ( 
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 )
       | |
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 )
       )
       ( OrdersTotal ( ) = = 0 )   
     )
     ) 
   { return ; }
// oneliner end

//now in one line, i coulndt resist LOL
if ( ( Bars < 100 | | IsTradeAllowed ( ) = = false ) | | ( ( ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) | | ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ) ( OrdersTotal ( ) = = 0 ) ) ) { return ; }
 
meikel :

bunu dene. Umarım gece geç saatlerde bir şeyi kaçırmamışımdır.

koşulların bir satırda toplanabileceğini biliyorum, ancak diğer üyelerin de bazı gönderiler yapmasına izin vermek istedim LOL

Teşekkürler meikel.


Hala hataları alıyorum:


'bool' - noktalı virgül bekleniyor Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 1)
'(' - başlatma bekleniyor Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 20)
'TimeDayOfWeek' - virgül veya noktalı virgül bekleniyor Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 21)
')' - dengesiz sağ parantez Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 52)
')' - dengesiz sağ parantez Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 68)
'(' - başlatma bekleniyor Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 20)
'TimeDayOfWeek' - virgül veya noktalı virgül bekleniyor Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 21)
')' - dengesiz sağ parantez Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 48)
')' - dengesiz sağ parantez Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 52)
ve sonra ')' - dengesiz sağ parantez ile devam eder

 
tam kod olmadan bizim için yapacak başka bir şey yok.
 
meikel :
tam kod olmadan bizim için yapacak bir şey yok.

Tam kod burada:



 //+------------------------------------------------------------------+
//|                                                        GAPea.mq4 |
//+------------------------------------------------------------------+

extern double     Lots = 1 ;
extern int        iTakeProfit = 10000 ;
extern int        iStopLoss = 1000 ;
extern int        iTrailingStop = 100 ;
extern int        min_gapsize = 20 ;
extern int        MagicNumber = 13 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
{
//----
   
//----
return ( 0 ) ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit ( )
   {
//----
   
//----
   return ( 0 ) ;
   }   

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders ( string symbol )
   {
   int buys = 0 , sells = 0 ;

   for ( int i = 0 ; i < OrdersTotal ( ) ; i + + )
     {
       if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) = = false ) break ;
       if ( OrderSymbol ( ) = = Symbol ( ) )
         {
         if ( OrderType ( ) = = OP_BUY )   buys + + ;
         if ( OrderType ( ) = = OP_SELL ) sells + + ;
         }
     }

   if ( buys > 0 ) return ( buys ) ;
   else        return ( - sells ) ;
   } 


//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen ( )
   {

   double current_openprice = iOpen ( Symbol ( ) , PERIOD_M15 , 0 ) ;
   double previous_highprice = iHigh ( Symbol ( ) , PERIOD_M15 , 1 ) ;
   double previous_lowprice = iLow ( Symbol ( ) , PERIOD_M15 , 1 ) ;
   double point_gap = MarketInfo ( Symbol ( ) , MODE_POINT ) ;
   int spread_gap = MarketInfo ( Symbol ( ) , MODE_SPREAD ) ;
   datetime current_time = iTime ( Symbol ( ) , PERIOD_M15 , 0 ) ;
   

   if ( current_openprice > previous_highprice + ( min_gapsize + spread_gap ) * point_gap )
       {
       OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 3 , Bid + iStopLoss * Point , Bid - iTakeProfit * Point , "Sell#" , MagicNumber , 0 , Red ) ;
       }

     if ( current_openprice < previous_lowprice - ( min_gapsize + spread_gap ) * point_gap )
       {
       OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 3 , Ask - iStopLoss * Point , Ask + iTakeProfit * Point , "Buy#" , MagicNumber , 0 , Green ) ;
       }
   return ;
}

Continues below (text to long)
 
EagleEye :

Tam kod burada:



Kodun geri kalanı:


 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )

bool sunday_cond = ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 ) ;
bool monday_cond = ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 ) ;
bool mytradeallowed = false ;
if (
     ( Bars < 100 | | IsTradeAllowed ( ) = = false )
     | | 
     (
       ( 
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 )
       | |
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 )
       )
       ( OrdersTotal ( ) = = 0 )   
     )
     ) 
   { return ; }

   if ( CalculateCurrentOrders ( Symbol ( ) ) = = 0 ) CheckForOpen ( ) ;
   
   if ( CalculateCurrentOrders ( Symbol ( ) ) ! = 0 )
   {
       if ( OrderType ( ) = = OP_BUY )
       {
         if ( Bid - OrderOpenPrice ( ) > Point * iTrailingStop )
         {
             if ( OrderStopLoss ( ) < Bid - Point * iTrailingStop )
             {
               OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Bid - Point * iTrailingStop , OrderTakeProfit ( ) , 0 , Blue ) ;
             }
         }
       }
       if ( OrderType ( ) = = OP_SELL )
       {
         if ( OrderOpenPrice ( ) - Ask > Point * iTrailingStop )
         {
             if ( OrderStopLoss ( ) > Ask + Point * iTrailingStop )
             {
               OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , Ask + Point * iTrailingStop , OrderTakeProfit ( ) , 0 , Blue ) ;
             }
         }
       }
   }

//----
     Comment ( "GAPea v1 \n " ,
             "................................. \n " ,
             "FX Acc Server:" , AccountServer ( ) , " \n " ,
             "Date: " , Month ( ) , "-" , Day ( ) , "-" , Year ( ) , " Server Time: " , Hour ( ) , ":" , Minute ( ) , ":" , Seconds ( ) , " \n " ,
             "Minimum Lot Sizing: " , MarketInfo ( Symbol ( ) , MODE_MINLOT ) , " \n " ,
             "Account Balance:  $" , AccountBalance ( ) , " \n " ,
             "Symbol: " , Symbol ( ) , " \n " ,
             "Price:  " , NormalizeDouble ( Bid , 4 ) , " \n " ,
             "Pip Spread:  " , MarketInfo ( "EURUSD" , MODE_SPREAD ) , " \n " ,
             "..............................." , " \n " ,
             "Lots=" + Lots , " \n " ,
             "TakeProfit=" + iTakeProfit , " \n " ,
             "StopLoss=" + iStopLoss , " \n " ,
             "TrailingStop=" + iTrailingStop , " \n " ,
             "MagicNumber=" + MagicNumber , " \n " ) ;
//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+
 

çözüldü

ilk hata, eksik parantez

int start()
{ // <- this one, i have overseen this in the first posts
bool


ikinci, eksik && (kodum LOL

 if (
     ( Bars < 100 | | IsTradeAllowed ( ) = = false )
     | | 
     (
       ( 
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 0 ) & & ( Hour ( ) > = 23 )
       | |
       ( TimeDayOfWeek ( TimeCurrent ( ) ) = = 1 ) & & ( Hour ( ) < = 15 )
       )
       & & /// <- i have forgot this
       ( OrdersTotal ( ) = = 0 )   
     )
     ) 
   { return ; }

hata yok, uyarı yok

Bunu çok sık yapmıyorum ama bugünkü televizyon berbattı ve bu konu ve bilmeceyi eğlence olsun diye kullandım.

Dosyalar:
debug.mq4  5 kb
 
meikel :

çözüldü

ilk hata, eksik parantez


ikinci, eksik && (kodum LOL

hata yok, uyarı yok



meikel..... Çalışıyor!! Ben "hata yok" demek istiyorum :)


Şimdi çalışıp çalışmadığını görmek için Pazar günü test etmem gerekiyor.


yardımın için teşekkür ederim


Pazar gününden sonra haberdar edin.

 
EagleEye :

meikel..... Çalışıyor!! Ben "hata yok" demek istiyorum :)


Şimdi çalışıp çalışmadığını görmek için Pazar günü test etmem gerekiyor.


yardımın için teşekkür ederim


Pazar gününden sonra haberdar edin.

şimdi veya yarın test edebilirsiniz, gün ve saat değerlerini değiştirmeniz yeterli...

 
meikel :

şimdi veya yarın test edebilirsiniz, gün ve saat değerlerini değiştirmeniz yeterli...

Şu anda test edebileceğim tek şey, EA'nın b4'te olduğu gibi hafta boyunca işlem yapmadığı.


Ve sonra Pazar boşluğunu bekleyin ve olması gerektiği gibi ticaret yaptığını görün.

Neden: