Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в Twitter'e и следи за новостями!
Макс
123
Макс 2011.10.22 16:45 
Делаю советник...Мне нужно открыть сделку ровно например в 9 утра на открытие свечи (М30). где реализовывать эту функцию сравнеия времени ? ведь функция Start() срабатывает каждый ТИК, но тик бывает с задержкой больше секунды, а значит и время нужное может не сработать, если его высчитывать в теле Start()...если мне нужно открыть сделку в 9.00.00. Или может можно реализовать открытие сделки без функции Start()?
Cmu4
1227
Cmu4 2011.10.22 17:01  
А смысл? Неужели 1 тик может ТАК критично повлиять на ТС?!
Левитин Сергей В.
5155
Левитин Сергей В. 2011.10.22 17:08  
maximvip:
Делаю советник...Мне нужно открыть сделку ровно например в 9 утра на открытие свечи (М30). где реализовывать эту функцию сравнеия времени ? ведь функция Start() срабатывает каждый ТИК, но тик бывает с задержкой больше секунды, а значит и время нужное может не сработать, если его высчитывать в теле Start()...если мне нужно открыть сделку в 9.00.00. Или может можно реализовать открытие сделки без функции Start()?

Да есть варианты, но опять же в 9:00:00 вы только пошлете приказ на открытие сделки, а когда она откроется в 9:00:15 или 9:01 ? Смысл городить такой огород с этой точностью? Трейдинг это отнюдь не математика
Макс
123
Макс 2011.10.22 17:09  
в целом мне надо открыть сделку чем точнее тем лучше...но видимо я чего то не понимаю и так как задержка в тиках может быть больше секунды, я дал диапозон в 5 секунд...то есть если от 9.00.00 до 9.00.05 был тик, то срабатывает Start() и открывается сделка...НО если за эти 5 сек будет больше одного тика то столько же сделок и откроется...а функция Sleep на тестере не работает почему то....и открывает на тестере он по 5 сделок....а мне бы одну...Может надо проверку делать на отрытые ордера но ордера то открываются не сразу а запросов за это время молжет послаться много.
Макс
123
Макс 2011.10.22 17:11  
extern double Th=09;
extern double Tm=0;
extern double Ts=0;
extern double Ts2=5;
//--------------------------------------------------------------- 2 --


int start()
{
int Ch=Hour();
double Cm =Minute();
double Cc = Seconds();

if (Ch==Th && Cm==Tm && Cc>=Ts && Cc<=Ts2)
{

Executor();
Sleep(500000);
}
return;
}
Макс
123
Макс 2011.10.22 17:17  
в функции Executor(); прописаны критерии открытия ордеров
Cmu4
1227
Cmu4 2011.10.22 17:55  

Я бы сделел так:

extern double Th=9; 

int D;
//--------------------------------------------------------------- 2 --


int start() 
{
if (OrdersTotal()==0)
{if (D!=Day())
 {if (Hour()==Th)
  {Executor(); 
   D=Day();
  }
 }
}
return; 
} 
Макс
123
Макс 2011.10.22 18:06  
вооо if (OrdersTotal()==0) вот этой то строчки и не хватало...Спасибо большое.. Выручил.
Cmu4
1227
Cmu4 2011.10.22 18:14  
maximvip:
вооо if (OrdersTotal()==0) вот этой то строчки и не хватало...Спасибо большое.. Выручил.
На секунды и минуты тебе тоже нет смысла проверять - 9 часов наступает с первой секундой. :)
Igor Chemodanov
779
Igor Chemodanov 2011.10.27 18:07  
Cmu4:
На секунды и минуты тебе тоже нет смысла проверять - 9 часов наступает с первой секундой. :)

Да, если в 9:00:00 будет тик.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий