초보자 도움말 - 요일 및 시간 기능 - 페이지 3

 

죄송합니다 abstract_mind


코드의 형식은 위에서 설명한 대로 여기에 올바른 방식으로 표시되지 않습니다.

 
EagleEye :

그렇다면 코드는 어떻게 생겼을까요?

 //+------------------------------------------------------------------+
//| 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 ( ) ;

이 시도. 나는 내가 늦은 밤에 뭔가를 놓친 적이 없기를 바랍니다.

조건을 한줄로 담을 수 있는건 알지만 다른 멤버들도 포스팅을 하게 하고 싶었습니다 ㅋㅋㅋㅋ

실제로 이런 식으로 (더 많은 별도의 줄) 적어도 초보자에게는 더 이해할 수 있습니다.

// 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 :

이 시도. 나는 내가 늦은 밤에 뭔가를 놓친 적이 없기를 바랍니다.

조건을 한줄에 담을 수 있는건 알지만 다른 멤버들도 포스팅을 하게 하고 싶었습니다 ㅋㅋㅋㅋ

감사합니다.


여전히 오류가 발생합니다.


'bool' - 세미콜론 필요 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (86, 1)
'(' - 초기화 예상 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (86, 20)
'TimeDayOfWeek' - 쉼표 또는 세미콜론 필요 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (86, 21)
')' - 불균형 오른쪽 괄호 Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (86, 52)
')' - 불균형 오른쪽 괄호 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (86, 68)
'(' - 초기화 예상 Z:\ForexTrading\GabEA_From Mike\GAPeaOnlySunday.mq4 (87, 20)
'TimeDayOfWeek' - 쉼표 또는 세미콜론이 필요함 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (87, 21)
')' - 불균형 오른쪽 괄호 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (87, 48)
')' - 불균형 오른쪽 괄호 Z:\ForexTrading\GabEA_From Mike\GAPEaOnlySunday.mq4 (87, 52)
그런 다음 ')' - 불균형 오른쪽 괄호로 계속됩니다.

 
전체 코드가 없으면 더 이상 할 일이 없습니다.
 
meikel :
전체 코드가 없으면 더 이상 할 일이 없습니다.

전체 코드는 다음과 같습니다.



 //+------------------------------------------------------------------+
//|                                                        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 :

전체 코드는 다음과 같습니다.



나머지 코드:


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

해결

첫 번째 오류, 대괄호 누락

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


두 번째, 누락된 &&(내 코드 LOL

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

오류 없음, 경고 없음

나는 이것을 자주하지 않지만 오늘 TV는 끔찍해서이 스레드와 수수께끼를 오락으로 사용했습니다.

파일:
debug.mq4  5 kb
 
meikel :

해결

첫 번째 오류, 대괄호 누락


두 번째, 누락된 &&(내 코드 LOL

오류 없음, 경고 없음



meikel ..... 작동합니다 !! 나는 "오류 없음"을 의미합니다 :)


이제 일요일에 테스트하여 작동하는지 확인해야 합니다.


도와주셔서 감사합니다.


일요일 이후에 계속 공지합니다.

 
EagleEye :

meikel ..... 작동합니다 !! 나는 "오류 없음"을 의미합니다 :)


이제 일요일에 테스트하여 작동하는지 확인해야 합니다.


도와주셔서 감사합니다.


일요일 이후에 계속 공지합니다.

지금 또는 내일 테스트할 수 있습니다. 날짜와 시간 값을 변경하기만 하면 됩니다.

 
meikel :

지금 또는 내일 테스트할 수 있습니다. 날짜와 시간 값을 변경하기만 하면 됩니다.

내가 지금 테스트할 수 있는 유일한 것은 EA가 b 4에서 했던 것처럼 주중에 거래되지 않는다는 것입니다.


그런 다음 일요일 갭을 기다렸다가 해야 하는 대로 거래를 봅니다.