Всем здрасть!
У МЕНЯ не получается сделать чтоб каждый раз обрабатывальсь все только раз в час.
Напишите пожалуйста как сделать!
Есть ткой самый простой пример:
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);
Sorry, очень извиняюсь, я забыл дописать одну строчку.
Теперь правильно:
bool flag()
{
static int hour=Hour();
if(hour!=Hour()) {
hour=Hour();
return(true);
}
return(false);
}
Не работает.
На этой функции говрит - function defenition unexpected
Может в чем проблема?
Помогите разобраться! Пожалуйста!
//+------------------------------------------------------------------+ //| 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);} //+----------------------------------------------------------------------------------------------------------------+
Понимать тут особо нечего, надо знать Это, первым делом, ну, и конечно стараться писать так, что бы было понятно, ну хотя бы самому себе, если потом через время заглянеш .
не экономить на понятных комментариях к программе, создать свой стиль письма, стараться разбивать большую задачу, на мелкие части,и писать их отдельно, отдельно и отлаживая,
таким образом Вы будете уверенны что эта часть написана правильно. Вообще загляните на веткук Игорю Киму, я сам по его текстам учился, очень помогает! Успехов!
Понимать тут особо нечего, надо знать Это, первым делом, ну, и конечно стараться писать так, что бы было понятно, ну хотя бы самому себе, если потом через время заглянеш .
не экономить на понятных комментариях к программе, создать свой стиль письма, стараться разбивать большую задачу, на мелкие части,и писать их отдельно, отдельно и отлаживая,
таким образом Вы будете уверенны что эта часть написана правильно. Вообще загляните на веткук Игорю Киму, я сам по его текстам учился, очень помогает! Успехов!
Спасибо!
На ветку к Киму уже заглядывал.
Пока тяжело воспринимается. Вначале азы нужно понять, а потом уже и дальше больше. ))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем здрасть!
У МЕНЯ не получается сделать чтоб каждый раз обрабатывальсь все только раз в час.
Напишите пожалуйста как сделать!
Есть ткой самый простой пример:
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);
}
Заранее спасибо!