Объясните как делать!

 

Всем здрасть!

У МЕНЯ не получается сделать чтоб каждый раз обрабатывальсь все только раз в час.

Напишите пожалуйста как сделать!

Есть ткой самый простой пример:

int start()
{
if (Minute()==0)


double SrednOp5=(Open[1]+Open[2]+Open[3]+Open[4]+Open[5])/5;
double SrednOp7=(Open[1]+Open[2]+Open[3]+Open[4]+Open[5]+Open[6]+Open[7])/7;

if (OrdersTotal()==0)
{
if (SrednOp5-0.0003>SrednOp7)//Buy
{
OrderSend(Symbol(),OP_BUY,2,Ask,3,0,0,"Koment",0,0,Blue);//Buy
return(0);
}
else
{
if (SrednOp5+0.0003<SrednOp7)
{
OrderSend(Symbol(),OP_SELL,2,Bid,3,0,0,"Koment",0,0,Lime);//sell
return(0);
}
}
}
else
{
if (0.0002>(SrednOp5-SrednOp7)>-0.0002)
{
//------------------------------------
int i;
for( i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY )
{
OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);
}
else
{
if(OrderType()==OP_SELL )
{
OrderClose(OrderTicket(),OrderLots(),Ask,2,Red);
}
}
}
//------------------------------------

}
}

return(0);
}
return(0);
}

Заранее спасибо!

 
Domynus писал (а) >>

Всем здрасть!

У МЕНЯ не получается сделать чтоб каждый раз обрабатывальсь все только раз в час.

Напишите пожалуйста как сделать!

Есть ткой самый простой пример:

int start()
{
if (Minute()==0)

       // <--- Здесь бы '{' поставить.
double SrednOp5=(Open[1]+Open[2]+Open[3]+Open[4]+Open[5])/5;
double SrednOp7=(Open[1]+Open[2]+Open[3]+Open[4]+Open[5]+Open[6]+Open[7])/7;

К тому же такая конструкция не обеспечивает выполнение только раз в час.

Вот функция:

bool flag()

  {

   static int hour=Hour();

   if(hour!=Hour())

      return(true);

   return(false);

  }

Затаем вставте в самое начало фунции start() такое:

if(!flag) return(0);

 
WWer писал (а) >>

К тому же такая конструкция не обеспечивает выполнение только раз в час.

Вот функция:

bool flag()

{

static int hour=Hour();

if(hour!=Hour())

return(true);

return(false);

}

Затаем вставте в самое начало фунции start() такое:

if(!flag) return(0);

Спасибо!

Попробую!

 
Domynus писал (а) >>

Спасибо!

Попробую!

Sorry, очень извиняюсь, я забыл дописать одну строчку.

Теперь правильно:

bool flag()
  {
    static int hour=Hour();
    if(hour!=Hour()) {

       hour=Hour();
       return(true);

      }
    return(false);
  }

 
WWer писал (а) >>

Sorry, очень извиняюсь, я забыл дописать одну строчку.

Теперь правильно:

bool flag()
{
static int hour=Hour();
if(hour!=Hour()) {

hour=Hour();
return(true);

}
return(false);
}

Не работает.

На этой функции говрит - function defenition unexpected

Может в чем проблема?

Помогите разобраться! Пожалуйста!

Файлы:
stoch.mq4  3 kb
 
//+------------------------------------------------------------------+
//|                                                       qwerty.mq4 |
//|                                        Sokolov Dmitrij Pavlovich |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Sokolov Dmitrij Pavlovich"
#property link      ""
static int prewhour=0;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


void start()
  {
  double stoch, stoch1, ma, ma2;
  int i;
//--дожидаемся нового часа----  
  if((TimeCurrent()/3600)==prewhour){return;}
  prewhour=(TimeCurrent()/3600);
//----------------------
if(OrdersTotal()>0){
   if(stoch1>stoch && stoch<30){
//------------------------------
   for( i=0;i<OrdersTotal();i++){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
       if(OrderType()<1){OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);}
       if(OrderType()>0){OrderClose(OrderTicket(),OrderLots(),Ask,2,Red);}
     }//for( i=0;i<OrdersTotal();i++){  
   }//if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
//------------------------------   
    if(stoch1>stoch && stoch1>70>stoch){
      for(i=0;i<OrdersTotal();i++){
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderType()<1){OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);}
         if(OrderType()>0){OrderClose(OrderTicket(),OrderLots(),Ask,2,Red);}
        }//if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
      }//for(i=0;i<OrdersTotal();i++){  
    }//if(stoch1>stoch && stoch1>70>stoch){
  }//if(stoch1>stoch && stoch<30){   
}//if(OrdersTotal()>0){
   
//-------------Условие--------------
   if(stoch1<stoch && stoch<30){OrderSend(Symbol(),OP_BUY,2,Ask,3,0,0,"Koment",0,0,Blue);}
   if(stoch1<stoch && stoch<30){OrderSend(Symbol(),OP_BUY,2,Ask,3,0,0,"Koment",0,0,Blue);}

   return;
  }

//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//|                                                       qwerty.mq4 |
//|                                        Sokolov Dmitrij Pavlovich |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Sokolov Dmitrij Pavlovich"
#property link      ""
extern int Bar=0;
extern int Kperoid=5;
extern int Dperiod=3;
extern int Slowing=3;
extern int HighSt=60;
extern int LowSt=40;
extern int Metod=0;
extern int Mode=0;
extern int rewers=0;
static int prewhour=0;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
  {int i;
//--дожидаемся нового часа----  
  if((TimeCurrent()/3600)==prewhour){return;}
  prewhour=(TimeCurrent()/3600);
//-------------------------------
if(OrdersTotal()>0){
  if(stoch(Bar+1)>stoch(Bar) && stoch(Bar)<LowSt){
    for( i=0;i<OrdersTotal();i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
       if(OrderType()<1){OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);}
       if(OrderType()>0){OrderClose(OrderTicket(),OrderLots(),Ask,2,Red);}
      }//for( i=0;i<OrdersTotal();i++){  
    }//if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
//---------------   
    if(stoch(Bar+1)>stoch(Bar) && stoch(Bar+1)>HighSt>stoch(Bar)){
      for(i=0;i<OrdersTotal();i++){
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderType()<1){OrderClose(OrderTicket(),OrderLots(),Bid,2,Red);}
         if(OrderType()>0){OrderClose(OrderTicket(),OrderLots(),Ask,2,Red);}
        }//if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
      }//for(i=0;i<OrdersTotal();i++){  
    }//if(stoch1>stoch && stoch1>70>stoch){
  }//if(stoch1>stoch && stoch<30){   
}//if(OrdersTotal()>0){
//-------------Условие--------------
if(OrdersTotal()<1){
   if(rewers<1){  
     if(stoch(Bar+1)<stoch(Bar) && stoch(Bar)<LowSt){OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"Koment",0,0,Blue);}
     if(stoch(Bar+1)>stoch(Bar) && stoch(Bar)>HighSt){OrderSend(Symbol(),OP_SELL,0.1,Ask,3,0,0,"Koment",0,0,Blue);}}
   if(rewers>0){  
     if(stoch(Bar+1)<stoch(Bar) && stoch(Bar)<LowSt){OrderSend(Symbol(),OP_SELL,0.1,Ask,3,0,0,"Koment",0,0,Blue);}
     if(stoch(Bar+1)>stoch(Bar) && stoch(Bar)>HighSt){OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"Koment",0,0,Blue);}}     
  }
   return;
  }
//+----------------------------------------------------------------------------------------------------------------+
double stoch(int x=0){double y=iStochastic(Symbol(),0,Kperoid,Dperiod,Slowing,Metod,1,Mode,x);return(y);}
//+----------------------------------------------------------------------------------------------------------------+
 
xrust писал (а) >>

Спасибо.

Попытаюсь понять. ))

 

Понимать тут особо нечего, надо знать Это, первым делом, ну, и конечно стараться писать так, что бы было понятно, ну хотя бы самому себе, если потом через время заглянеш .

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

таким образом Вы будете уверенны что эта часть написана правильно. Вообще загляните на веткук Игорю Киму, я сам по его текстам учился, очень помогает! Успехов!

 
xrust писал (а) >>

Понимать тут особо нечего, надо знать Это, первым делом, ну, и конечно стараться писать так, что бы было понятно, ну хотя бы самому себе, если потом через время заглянеш .

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

таким образом Вы будете уверенны что эта часть написана правильно. Вообще загляните на веткук Игорю Киму, я сам по его текстам учился, очень помогает! Успехов!

Спасибо!

На ветку к Киму уже заглядывал.

Пока тяжело воспринимается. Вначале азы нужно понять, а потом уже и дальше больше. ))