Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Уважаемій Игорь! В моей системе используются пресечения трендовых. И в ней имеет значение и время и цена пересечения.
Последовательность баров не всегда имеет "непрерывное" время. Выходные, дыры и т.д.
Использование в CrossPointOfLines ( в test_CrossPointOfLines.mq4) для рассчета времени в естественном его виде приводит к таким вот результатам:
слева от нулевого бара
(положение трендовых на графиках к системе не имеет никакого отношения - случайный выбор. Опорные точки трендовой могут
находиться одновременно одна слева нулевого бара, вторая - справа.)
и справа
Расчеты надо вести не в часах, а по ситуации: и в барах и в часах . Единица времени слева - бар. А для правого края, после нулевого бара, уже приводить к часоврму измерению.
Поиск готовых решений пока ничего не дал. Функция CrossPointOfLines - одна пока на сайте. Для нее необходима идеальная история :(
Игорь доброе время суток!
Помогите пожалуйста советом или решением. Пытаюсь чтоб советник при "поглощении" предыдущим баром ПРЕДпредыдущий выдавал сигнал.
1 - если поглощение произошло вверх2 - если поглощение произошло вниз.
Вроде все до нельзя элементарно, сравниваем цены открытия и закрытия и вуаля...так НЕТ ЖЕ. Сигналы выдает как попало.Хотя при наведении мыши на предыдущие 2 бара явно видно что последний поглощает предпоследний.
Ковырять тему сил нету, да вроде и вариантов то немного но тем не менее не работает никак и все.Очень надеюсь на помощь, да и заранее благодарен
Вот текст:
int start(){
//----
if (SShort()==1)
Alert("1");
}
if (SLong()==1)
Alert("2");
}
//----
return(0);
}
//+------------------------------------------------------------------+
int SShort()
{int MS=0;
if (Open[1]>Close[2] && Close[1]<Open[2] && Open[1]>Close[1] && Open[2]<Close[2])
MS=1;
return(MS);
}
//+------------------------------------------------------------------+
int SLong()
{
int ML=0;
if(Open[1]<Close[2] && Close[1]>Open[2] && Open[1]<Close[1] && Open[2]>Close[2])
ML=1;
return(ML);
}
//+------------------------------------------------------------------+
Набор фильтров по времени: С и ПО
(и не только...)
Однажды спрашивал, что да как, вот результат к чему пришел сам.1. Запрет либо разрешение выполнения ежедневных действий.
Вариант №1.
Обратите внимание что "срок действия" в этих вариантах распространяется до конца часа и 59 секунд числа минут.
т.е. указаное время окончания события 23:59 на самом деле имеет время 23:59:59
А до конца часа потому что в минутах используется оператор сравнения ">=", что впрочем не проблема и можно указать "==",
однако протирание времени до 59 секунд сохранится в любом случае...
Вариант №2.
Более точный с точки зрения выставления условий...
Время задаётся путём указания в передаваемых параметров в функцию, например 21:15:23 как (21,15,23).
Понятно что некузяво, но вполне рабочий код...
ЗЫ: закоментареная проверка на валидность вводимых параметров неслучайна.
Ибо если ввести неверное, то сносит крышу. Других способов пока не нашел и закоментил.
Поэтому буду весьма признателен способу как решить эту проблему...
Вариант №3.
Как оказалось самый простой и точный...
Вся фишка простоты видимо состоит в особенности преобразования функцией StrToTime() переданых ей параметров.
Например если ввести только время "ЧЧ:ММ:СС" то на выходе будет время каждого текущего дня...
Кстати...
Комбинируя выборку по часам с днями можно делать фильтрацию по типу:
- что было в 18:00 каждого дня, либо что было каждый день в указаный период С и ДО часов:минут:секунд
Впрочем диапазон дней тоже можно забить в рамки с и по...
2. Функция DateFirstDayMonday()
(по потивам DateOfMonday() )
Возвращает дату первого дня со временем 00:00:00 текущего месяца.
Понадобилась для отфильтровки событий с НАЧАЛА месяца, либо ДО его начала...
DateFirstDayMonday()-1 во втором примере выводит время "последний день предыдущего месяца со временем 23:59:59"
...
Заранее прошу не пинать, ибо чайнеГ.
:)))
Заранее прошу не пинать, ибо чайнеГ. :)))
Чайнег не чайнег, но уж взялся за гуж, так доведи до конца. Так и просится вынести разрешенное время работы, время закрытия в отдельные булевские функции типа:
bool TradeTime(Время начала торговли, Время окончания торговли)
Потом очень удобно будет пользоваться, if (TradeTime(..,..)) и работаем!
Чайнег не чайнег, но уж взялся за гуж, так доведи до конца. Так и просится вынести разрешенное время работы, время закрытия в отдельные булевские функции типа:
bool TradeTime(Время начала торговли, Время окончания торговли)
Потом очень удобно будет пользоваться, if (TradeTime(..,..)) и работаем!
Ну дык уже... ;)
Для одного банка делаю вариант с двумя сразу таймингами:
- закрытие всех ордеров и позиций перед ролловером в 22:00
- торговая пауза с начала ролловера в 22:00 до конца дня 23:59
(сырая версия без дополнительных проверок)
..(сырая версия без дополнительных проверок)
У Vinin'а были отдельные функции для работы по времени, очень детальные и отработанные. Посмотри в советниках на его сайте или стукнись к нему.
У Vinin'а были отдельные функции для работы по времени, очень детальные и отработанные. Посмотри в советниках на его сайте или стукнись к нему.
Спасибо, но нет в этом пока необходимости...
Просто времени сейчас немного уделяю для этого советника,
а так что там писать впринципе есть и понятно как писать тоже...
*
Дабы не захламлять эту тему, основной текст выложу на форуме банка.
В своё время ессно... ;)
bool TradeTime(Время начала торговли, Время окончания торговли)
Потом очень удобно будет пользоваться, if (TradeTime(..,..)) и работаем!
Надо Игорю Киму заказать такую функцию.
Надо Игорю Киму заказать такую функцию.
Присоединяюсь к просьбе! Оч. полезная и востребованная будет функция. В свете текущих торговых реалий....
Даже можно там два ВРЕМЕННЫХ интервала предусмотреть.