Помогите новичку - Функции дня и времени - страница 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();

Попробуйте это. Надеюсь, я не пропустил что-то поздно ночью.

Я знаю, что условия могут быть упакованы в одну строку, но я хотел, чтобы другие пользователи также сделали несколько постов LOL

действительно, таким образом (больше отдельных строк) он более понятен, по крайней мере для новичка.

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

Попробуйте это. Надеюсь, я ничего не упустил поздно ночью.

Я знаю, что условия могут быть упакованы в одну строку, но я хотел, чтобы другие пользователи также сделали несколько постов LOL

Спасибо 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;}

никаких ошибок, никаких предупреждений

я не часто это делаю, но телевизор сегодня ужасный, поэтому я использовал эту тему и загадку в качестве развлечения.

Файлы:
debug.mq4  5 kb
 
meikel:

решено

первая ошибка, пропущена скобка


вторая - пропущена && (мой код LOL

ни ошибок, ни предупреждений



meikel..... Работает!!! Я имею в виду "без ошибок" :)


Теперь мне нужно протестировать его в воскресенье, чтобы увидеть, работает ли он.


Спасибо за помощь.


Держите вас в курсе после воскресенья.

 
EagleEye:

meikel..... Работает!!! Я имею в виду "без ошибок" :)


Теперь мне нужно протестировать его в воскресенье, чтобы увидеть, работает ли он.


Спасибо за помощь.


Буду держать вас в курсе после воскресенья.

Вы можете проверить это сейчас или завтра, просто измените значения дня и времени ...

 
meikel:

Вы можете проверить это сейчас или завтра, просто измените значения дня и времени ...

Единственное, что я могу проверить прямо сейчас, это то, что советник не торгует в течение недели, как это было раньше в b 4.


А затем дождитесь воскресного гэпа и посмотрите, как он будет торговать, как должен.