Индикаторы форекс Обсуждение, поиск и тестирование индикаторов для MT4.

Ответить
09.10.2011, 06:46
Аватар для Олег К
Олег К Олег К вне форума Заблокирован
Регистрация: 14.01.2011 / Сообщений: 199
Поблагодарили 76 раз(а) / Репутация: 78
Можете считать меня старомодным, но я считаю что для сигналов нужно использовать индикатор.
Для торговли нужно использовать советник.
А вот использовать советник для сигналов это уже извращение полнейшее.

Ладно, будим искать=)
Это каким образом использовать советник для сигналов лично мой бот использует сигналы.
14.10.2011, 17:46
Аватар для loopsider
loopsider loopsider вне форума Активный участник
Регистрация: 05.07.2011 / Сообщений: 39
Поблагодарили 39 раз(а) / Репутация: 40
Теперь все работает в тестере.
urdala_news_4EA_3.1.mq4 - эксперт (см. мой пост выше). Требует #_lib_news.mq4 (класть в experts\include). Будучи запущенным в тестере, только скачает файлы прошлых новостей с сервера. В реальном времени работает как раньше.
test_news_4EA_3.1.mq4 - эксперт, пример того, как работать с новостями. Будучи запущенным в тестере, закачает прошлые новости и нарисует моменты выхода важных новостей по истории.
Fed77 , S I P , urdala , www.ru 
18.10.2011, 19:14
Аватар для S I P
S I P S I P вне форума Новичок форума
Регистрация: 06.02.2010 / Сообщений: 79
Поблагодарили 14 раз(а) / Репутация: 15
Теперь все работает в тестере.
urdala_news_4EA_3.1.mq4 - эксперт (см. мой пост выше). Требует #_lib_news.mq4 (класть в experts\include). Будучи запущенным в тестере, только скачает файлы прошлых новостей с сервера. В реальном времени работает как раньше.
test_news_4EA_3.1.mq4 - эксперт, пример того, как работать с новостями. Будучи запущенным в тестере, закачает прошлые новости и нарисует моменты выхода важных новостей по истории.
urdala_news_4EA_3.1.mq4 и test_news_4EA_3.1.mq4не вешается на график как эксперт
www.ru 
19.10.2011, 12:07
Аватар для loopsider
loopsider loopsider вне форума Активный участник
Регистрация: 05.07.2011 / Сообщений: 39
Поблагодарили 39 раз(а) / Репутация: 40
urdala_news_4EA_3.1.mq4 и test_news_4EA_3.1.mq4не вешается на график как эксперт
Скорее всего, #_lib_news.mq4 не туда положил.
01.04.2012, 08:31
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
Всем привет, есть тут кто живой?)

В общем прикрутил фильтр новостей к своему советнику, сделал это таким образом:
Код:
#include <#_lib_news.mq4>
...
extern bool   UseWorkNewsHigh       = false;
extern int    HighBefore            = 30;
extern int    HighAfter             = 30;
extern bool   UseWorkNewsMedium     = false;
extern int    MediumBefore          = 15;
extern int    MediumAfter           = 15;
extern bool   UseWorkNewsLow        = false; 
extern int    LowBefore             = 5; 
extern int    LowAfter              = 5;

       int    prevstatus, prevtime;
       string FileNamePrev;
...
int start()
  {
  if (Urdala_News() == 0) открываем ордер
  }
...
int Urdala_News() {
  GlobalVariableSet("TimeZone", TimeZone);
  GlobalVariableSet("HighBefore", HighBefore);
  GlobalVariableSet("HighAfter", HighAfter);
  GlobalVariableSet("MediumBefore", MediumBefore);
  GlobalVariableSet("MediumAfter", MediumAfter);
  GlobalVariableSet("LowBefore", LowBefore);
  GlobalVariableSet("LowAfter", LowAfter);
  int UNs = 0;
  if (UseWorkNewsHigh == false || UseWorkNewsMedium == false || UseWorkNewsLow == false) {
    // работаем на открытии М1 баров
    if (prevtime == iTime(NULL, PERIOD_M1, 0)) return;
    prevtime = iTime(NULL, PERIOD_M1, 0);
    // имя файла календаря
    int DayFile = TimeDay(TimeCurrent() - TimeDayOfWeek(TimeCurrent()) * 86400);
    if (DayFile < 10) string DF = "0" + DayFile;
      else DF = DayFile;
    int MonthFile = TimeMonth(TimeCurrent() - TimeDayOfWeek(TimeCurrent()) * 86400);
    if (MonthFile < 10) string MF = "0" + MonthFile;
      else MF = MonthFile;
    int YearFile = TimeYear(TimeCurrent() - TimeDayOfWeek(TimeCurrent()) * 86400);
    string DateFile = MF + "-" + DF + "-" + YearFile;
    string FileName = DateFile + ".csv";
    if (FileName != FileNamePrev) {
      Print("Reading the next news calendar file: " + FileName);
      FileNamePrev = FileName;
      // открываем или закачиваем файл
      int handle = GetHandle(FileName);
      if (handle < 0) {
        if (prevstatus > 0) {
          Print ("Error opening file " + FileName);
          prevstatus = -1;
        }
      return;
      }
      prevstatus = 0;   
      // загружаем данные
      FillData(handle);
      Print("OK");
    }
    // устанавливаем флаги
    SetNextNews();
    // используем фильтр для ограничения торговли
    if (UseWorkNewsHigh == false) {
      if (GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 0, 3)) == 3 && GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 3, 3)) == 3) {
        UNs = 1;
      }
    }
    if (UseWorkNewsMedium == false) {
      if (GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 0, 3)) == 2 && GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 3, 3)) == 2) {
        UNs = 1;
      }
    }
    if (UseWorkNewsLow == false) {
      if (GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 0, 3)) == 1 && GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(), 3, 3)) == 1) {
        UNs = 1;
      }
    }
  }
return(UNs);
}
Проблема в следующем, при включенных параметрах UseWorkNewsHigh/UseWorkNewsMedium/UseWorkNewsLow (т.е. фильтр не используется) - советник тестится как положено, при выключении одного или нескольких этих параметров (т.е. при включении фильтра новостей) выдается один и тот же результат, как будто включаются фильтры сразу по всем новостям.
Мне почему-то кажется что проблема связана с глобальными переменными, но других способов передать переменную нет, разве что весь исполняемый код перенести в советник...

В самом файле #_lib_news.mq4 заменил переменные:
Код:
extern int GMToffset = 3; // часовой пояс. 0-GMT 
extern int TimeBeforeLow = 15;
extern int TimeBeforeMedium = 15;
extern int TimeBeforeHigh = 15;
extern int TimeAfterLow = 15;
extern int TimeAfterMedium = 15;
extern int TimeAfterHigh = 15;
на:
Код:
GlobalVariableGet("TimeZone");
GlobalVariableGet("HighBefore");
GlobalVariableGet("HighAfter");
GlobalVariableGet("MediumBefore");
GlobalVariableGet("MediumAfter");
GlobalVariableGet("LowBefore");
GlobalVariableGet("LowAfter");

Последний раз редактировалось Malvin86; 01.04.2012 в 08:44.
01.04.2012, 11:08
Аватар для urdala
urdala urdala вне форума Местный житель
Регистрация: 20.11.2009 / Адрес: Украина,Славянск / Сообщений: 154
Поблагодарили 171 раз(а) / Репутация: 171
  • Отправить сообщение для urdala с помощью ICQ
А почему просто не воспользоваться функцией iCustum? Я думаю так было бы проще.
Пишу советники, индикаторы, скрипты.Обращаться в skype : urdala77
01.04.2012, 11:41
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
Короче как оказалось все что написано ниже // используем фильтр для ограничения торговли вообще ни на что не влияет, даже при удалении кода результат такой же получается
urdala напишите как, я попробую
01.04.2012, 11:45
Аватар для urdala
urdala urdala вне форума Местный житель
Регистрация: 20.11.2009 / Адрес: Украина,Славянск / Сообщений: 154
Поблагодарили 171 раз(а) / Репутация: 171
  • Отправить сообщение для urdala с помощью ICQ
iCustom(Symbol(),0,"Urdala_News",TimeDo,TimePosle, ChasPoyas,Vhigh,Vmedium,Vlow,0,0);
в первом посте я писал об этом.
Пишу советники, индикаторы, скрипты.Обращаться в skype : urdala77
01.04.2012, 12:59
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
А разве это для urdala_news_4EA_3.1 будет работать? 0_о
01.04.2012, 13:15
Аватар для urdala
urdala urdala вне форума Местный житель
Регистрация: 20.11.2009 / Адрес: Украина,Славянск / Сообщений: 154
Поблагодарили 171 раз(а) / Репутация: 171
  • Отправить сообщение для urdala с помощью ICQ
Нет, для него не будет. Это для Urdala_News.
Пишу советники, индикаторы, скрипты.Обращаться в skype : urdala77
01.04.2012, 15:36
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
Вы наверно совсем не читали что я писал в своем посту, я тестирую советник с помощью вашего модифицированного индикатора, соответственно первая версия тут не годится.
Быть может loopsider заглянет в ветку, посмотрим что скажет...
01.04.2012, 15:39
Аватар для urdala
urdala urdala вне форума Местный житель
Регистрация: 20.11.2009 / Адрес: Украина,Славянск / Сообщений: 154
Поблагодарили 171 раз(а) / Репутация: 171
  • Отправить сообщение для urdala с помощью ICQ
Читал. А почему не пользуешь базовый индикатор?
Пишу советники, индикаторы, скрипты.Обращаться в skype : urdala77
01.04.2012, 16:25
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
Как только басовый индюк научится теститься на истории, так сразу начну пользоваться им
01.04.2012, 21:24
Аватар для loopsider
loopsider loopsider вне форума Активный участник
Регистрация: 05.07.2011 / Сообщений: 39
Поблагодарили 39 раз(а) / Репутация: 40
В общем прикрутил фильтр новостей к своему советнику, сделал это таким образом:
Не, не так. Все гораздо проще. Берешь test_news_4EA_3.1 из поста выше. Добавляешь ключи, какие новости тебе нужны
Код:
extern bool   UseWorkNewsHigh       = true;
extern bool   UseWorkNewsMedium    = false;
extern bool   UseWorkNewsLow        = false;
Дальше проверяешь флаг новости и, если флаг не установлен, открываешь свои ордера
Код:
int alert1 = GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(),0,3));
int alert2 = GlobalVariableGet("NewsAlertFlag" + StringSubstr(Symbol(),3,3));
bool timeout = (UseWorkNewsHigh && (alert1 ==3 || alert2 ==3 )) ||
                    (UseWorkNewsMedium && (alert1 ==2 || alert2 ==2 )) ||
                    (UseWorkNewsLow && (alert1 ==1 || alert2 ==1 ));
if (!timeout) {
   открываем ордер, если есть сигнал
}
Все! Внешние переменные из #_lib_news.mq4 в советник переносить не надо, все и так будет видно в свойствах сова.
02.04.2012, 15:35
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
Ага, так в этот раз вы пишите alert1 ==3 || alert2 ==3, а в своем примере страницу назад было указано &&, хотя этот вариант я уже пробовал на самом деле.
Что же касается "Берешь test_news_4EA_3.1", я и так его взял в неизменном виде, добавил несколько условий в начале для проверки включения той или иной новости.
А глобальные переменные ввел чтобы менять параметры в самом советнике не залезая в #_lib_news.mq4

Что же касается самой функции, то мне так удобнее интегрировать проверку на новости, чем добавлять строки кода для каждого случая по отдельности.
В общем щас буду пробовать, спасибо за совет
02.04.2012, 22:24
Аватар для loopsider
loopsider loopsider вне форума Активный участник
Регистрация: 05.07.2011 / Сообщений: 39
Поблагодарили 39 раз(а) / Репутация: 40
А глобальные переменные ввел чтобы менять параметры в самом советнике не залезая в #_lib_news.mq4
Директива include просто добавляет содержимое указанного файла в твой код. Поэтому, внешние переменные в #_lib_news.mq4 на самом деле уже в твоем советнике и будут доступны в его свойствах.
04.04.2012, 13:39
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
loopsider Разницы вашего примера с моей функцией судя по результатам абсолютно никакой нет.
Либо советник блочит все новости без разбора, либо не блочит никакие. Ни время до/после выхода новостей, ни параметр важности этих новостей не работает

Прикрепляю эксперта, сделанного по вашим рекомендациям:

Последний раз редактировалось Malvin86; 04.04.2012 в 14:00.
04.04.2012, 22:16
Аватар для loopsider
loopsider loopsider вне форума Активный участник
Регистрация: 05.07.2011 / Сообщений: 39
Поблагодарили 39 раз(а) / Репутация: 40
Прикрепляю эксперта, сделанного по вашим рекомендациям:
Все работает. Просто не спеши и разберись, что именно эксперт видит и почему. Пример прилагаю.
05.04.2012, 10:40
Аватар для Malvin86
Malvin86 Malvin86 вне форума Новичок форума
Регистрация: 07.12.2009 / Сообщений: 102
Поблагодарили 7 раз(а) / Репутация: 6
В общем с вашей помощью я победил свою тупость и ошибки кода
В общем через вызов функции по прежнему не работает, х.з. почему, работает только через тело цикла как вы и писали.
А не замечал я разницы т.к. тестил за довольно короткий период, разница стала заметна за год теста, в общем слишком уж у меня видимо активный индюк который дожидается снятия ограничения, а потом все-равно открывает ордер
Похоже все работает как надо!
08.04.2012, 13:38
Аватар для dave0
dave0 dave0 вне форума Новичок форума
Регистрация: 01.03.2011 / Сообщений: 29
Поблагодарили 5 раз(а) / Репутация: 6
Hi
Can someone ADD :
Close profitable trades before news
Close All trades before news
please give example code for expert advisor

external parameters:?
start parameters:?
Function parameters:?

I would like to use this newsfilter in my expert.
You can use Local.mq4 above and edit please and also show the 30 mins before external parameter.

thanks
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новостной индикатор NewsReader modify NEKSUS Индикаторы 3 31.12.2010 13:29
Новостной советник Алексей Вопросы ответы заметки на тему форекс 0 21.03.2010 18:32
Уже пользуюсь новостной программой для форекса Алексей Вопросы ответы заметки на тему форекс 0 26.01.2010 17:02
Пятница - насыщенный новостной фон Алексей Новости, обзоры, рекомендации 0 18.01.2010 09:40


Текущее время: 17:31. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO