//+------------------------------------------------------------------+ //| Временные ограничения по работе советника | //| Copyright © 2010, Victor Nicolaev | //| e-mail: vinin@mail.ru | //+------------------------------------------------------------------+ extern string sH="Временные ограничения по работе советника (по часам)"; extern int HourStart = -1; extern int HourStop = -1; //+------------------------------------------------------------------+ //| Функция контроля времени работе советника | //| Copyright © 2010, Victor Nicolaev | //| e-mail: vinin@mail.ru | //+------------------------------------------------------------------+ //| bool CheckHour(); | //+------------------------------------------------------------------+ bool CheckHour(){ int CurrentHour=TimeHour(Time[0]); if (HourStart==-1 || HourStop==-1) return(true); if (HourStart == HourStop) if(CurrentHour==HourStart) return(true); if (HourStart<HourStop) if (HourStart<=CurrentHour) if (CurrentHour<=HourStop) return(true); if (HourStart>HourStop) if (HourStart>=CurrentHour || CurrentHour<=HourStop) return(true); return(false); } // Пример использования int start(){ if (!CheckHour()) return(0); // Ваш код }Можно примерно так делать
Спасибо ...
А может есть именно с привязкой времени сервера?
Спасибо ...
А может есть именно с привязкой времени сервера?
Это и есть по серверному времени. Котировки по нему поступают
Да действительно спасибо.
extern string StartTime1 = "10:00:00";
extern string StartTime2 = "15:00:00";
int start()
{
if ( (TimeCurrent()-StrToTime("StartTime1")) < 60){Alert ("ДА");}
if ( (TimeCurrent()-StrToTime("StartTime2")) < 60){Alert ("ДА");}
}
extern string StartTime1 = "10:00:00";
extern string StartTime2 = "15:00:00";
int start()
{
if ( (TimeCurrent()-StrToTime("StartTime1")) < 60){Alert ("ДА");}
if ( (TimeCurrent()-StrToTime("StartTime2")) < 60){Alert ("ДА");}
}
Тип данных string поэтому в двойных кавычках.
Тип данных string поэтому в двойных кавычках.
Да и как Вы понимаете не работает в тестере.
Результат работы небольшого скрипта
2010.12.19 21:14:25 test EURUSD,Monthly: 3. 2010.12.19 15:00
2010.12.19 21:14:25 test EURUSD,Monthly: 2. 2010.12.19 10:00
2010.12.19 21:14:25 test EURUSD,Monthly: 1. 2010.12.17 22:59
Сам скрипт
//+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2010, Victor Nicolaev | //| vinin.ucoz.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, Victor Nicolaev" #property link "vinin.ucoz.ru" extern string StartTime1 = "10:00:00"; extern string StartTime2 = "15:00:00"; int start() { Print("1. ", TimeToStr(TimeCurrent(), TIME_DATE)," ",TimeToStr(TimeCurrent(), TIME_MINUTES)); Print("2. ", TimeToStr(StrToTime(StartTime1),TIME_DATE)," ",TimeToStr(StrToTime(StartTime1),TIME_MINUTES)); Print("3. ", TimeToStr(StrToTime(StartTime2),TIME_DATE)," ",TimeToStr(StrToTime(StartTime2),TIME_MINUTES)); }
Совершенно не нужно переменные в кавычки брать
Виктор спасибо Я понял свою ошибку.
Это банальный перегруз мозга. Конешно же переменные в кавычки брать не нужно :)
Спасибо.
Тем не менее не могу понять. Данный код в тестере открывает ордера когда угодно.
extern string StartTime1 = "08:00:00"; //"часы:минуты:секунды" текущих суток для запуска алгоритма.
extern string StartTime2 = "16:00:00"; //"часы:минуты:секунды" текущих суток для запуска алгоритма.
int start()
{
if ( (TimeCurrent()-StrToTime(StartTime1)) < 60){if (OrdersTotal() == 0){initialization (); return (0);}}
if ( (TimeCurrent()-StrToTime(StartTime2)) < 60){if (OrdersTotal() == 0){initialization (); return (0);}}
}
int initialization()
{
//---BAY---
askMay = MarketInfo(Symbol(),MODE_ASK);
askMay = NormalisePrice(Symbol(),askMay);
if (stopLos != 0) {baySL = NormalisePrice(Symbol(),Bid-stopLos*Point);} //----так с учётом спреда
if (TakeProfit != 0) {bayTP = NormalisePrice(Symbol(),askMay+TakeProfit*Point);}
MNbay = TimeCurrent();
ticketBay = OrderSend(Symbol(),OP_BUY, lotMay,askMay,Slippage,baySL,bayTP,0,MNbay);
//---SEL---
bidMay = MarketInfo(Symbol(),MODE_BID);
bidMay = NormalisePrice(Symbol(),bidMay);
if (stopLos != 0) {selSL = NormalisePrice(Symbol(),Ask+stopLos*Point);}
if (TakeProfit != 0) {selTP = NormalisePrice(Symbol(),bidMay-TakeProfit*Point);}
MNsel = TimeCurrent();
ticketSel = OrderSend(Symbol(),OP_SELL,lotMay,bidMay,Slippage,selSL,selTP,0,MNsel);
//---
return(0);
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите новичку.
Есть внешние переменные указывающие время :
extern datetime timeStart = D'12:00:00';
extern datetime timeStop = D'20:00:00';
Советник находится на графике, как их сравнивать с временем получаемое функцие TimeCurrent() чтобы советник включал торговый алгоритм в рамках этого времени.
т.е. if ( ... что-то ...) // т.е. чтобы советник каждый день торговал с 12 до 20 к примеру.
{
работает торговый алгоритм.
}
Заранее спасибо :)