Ответить
16.07.2013, 16:09
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Да, кстати я так и не понял почему вместо <= надо= ? есть какая-та практическая разница ?
1. Не вместо <= надо=, а вместо <= надо <
2. Да, есть принципиальная разница между "больше или равно" и "больше".
Еще вопрос если можно: как реализовать мультиТФ, чтобы допустим по Хай и Лоу выставились ордера на D1 , H4 , H1 ?? подскажи, что нужно сделать, я сам попробую.
У iLow и iHigh второй аргумент это тайм фрейм. Посмотри в справочнике как правильно указать.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
16.07.2013, 17:40
Аватар для gzh
gzh gzh вне форума Интересующийся
Регистрация: 11.12.2012 / Сообщений: 47
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Я всегда пишу <=OrdersTotal(). А в каких случаях нужно писать <OrdersTotal() ? или на этот вопрос нет точного ответа?

Я пробовал вот так сделать. не получается!
extern int work_TF = 60;
extern int work_TF2 = 240;
extern int work_TF3 = 1440

if (iClose (Symbol(), Work_TF, 1) > iOpen (Symbol(), Work_TF, 1))
{
OrderSend (Symbol(), 0, lot, Ask, slippage, Ask-sl*Point, Ask+tp*Point, 0, magic);
}
if (iClose (Symbol(), Work_TF2, 1) > iOpen (Symbol(), Work_TF2, 1))
{
OrderSend (Symbol(), 0, lot, Ask, slippage, Ask-sl*Point, Ask+tp*Point, 0, magic);
}
if (iClose (Symbol(), Work_TF3, 1) > iOpen (Symbol(), Work_TF3, 1))
{
OrderSend (Symbol(), 0, lot, Ask, slippage, Ask-sl*Point, Ask+tp*Point, 0, magic);
}
как еще можно попробовать ?
16.07.2013, 18:27
Аватар для Aghasim
Aghasim Aghasim вне форума Активный участник
Регистрация: 28.09.2009 / Сообщений: 34
Поблагодарили 0 раз(а) / Репутация: 4
ребята помогайте пожалуйста, нужен написать индикатор который рисует прямоугольник, вертикальная линия по пунктом, а горизонтальная по каличеству свечей, и возможность дать точку пастроения

Последний раз редактировалось Aghasim; 16.07.2013 в 18:30.
17.07.2013, 11:15
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Такой вопрос. Советник работает где-то час или два(модифицирует отложенные ордера), потом зависает(не могу даже открыть свойства сова). При перезагрузке терминала снова нормально работает. Так вот: возможно ли, что причина в кривом коде советника или же это нагрузка на сервер брокера и из-за этого тормоз? В тестере отлично тестируется сов, без глюков...
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
17.07.2013, 14:57
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Я всегда пишу <=OrdersTotal(). А в каких случаях нужно писать <OrdersTotal() ? или на этот вопрос нет точного ответа?
Есть точный ответ. Во всех случаях когда перебор идёт от первого к последнему.
К примеру открыто 2 ордера. OrdersTotal() возвращает 2. Ордера считаются от №0 до №1. Ордера №2 нет. То есть, когда <=OrdersTotal() будут выбираться 3 ордера №0, №1, №2, при том последний не существует. Зачем выбирать несуществующий ордер?
Когда <OrdersTotal() выбираются только 2 ордера №0, №1.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
18.07.2013, 19:29
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Сообщение от: Алекc1234
Такой вопрос. Советник работает где-то час или два(модифицирует отложенные ордера), потом зависает(не могу даже открыть свойства сова). При перезагрузке терминала снова нормально работает. Так вот: возможно ли, что причина в кривом коде советника или же это нагрузка на сервер брокера и из-за этого тормоз? В тестере отлично тестируется сов, без глюков...
Выяснил, что когда зависает сов, то во вкладке эксперты пишется ошибка 128. Что это означает? Что истёк срок ожидания? Как это понять? И как можно от этого избавиться?
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
18.07.2013, 19:42
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Сообщение от: Алекc1234
Выяснил, что когда зависает сов, то во вкладке эксперты пишется ошибка 128. Что это означает? Что истёк срок ожидания? Как это понять? И как можно от этого избавиться?
Когда советник спит Sleep() свойства эксперта не открываются.
128 обычно при плохой связи бывает. После этой ошибки рекомендуется выдержать паузу 1 минуту. Проще всего паузу реализовать усыпив советник.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
18.07.2013, 19:46
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Когда советник спит Sleep() свойства эксперта не открываются.
128 обычно при плохой связи бывает. После этой ошибки рекомендуется выдержать паузу 1 минуту. Проще всего паузу реализовать усыпив советник.
В том-то и дело, что связь у меня отличная! На других терминалах немного по другому устроенные совы работают. А как сов усыпить? Можно отдельный код, я его вставлю в свой сов...
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
19.07.2013, 07:05
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Сообщение от: Алекc1234
В том-то и дело, что связь у меня отличная! На других терминалах немного по другому устроенные совы работают. А как сов усыпить? Можно отдельный код, я его вставлю в свой сов...
Приказ на сервер ДЦ ушёл, ответ от сервера не пришёл - ошибка 128.
Связь отличная где? Терминал с сервером связан через кучу разных серверов и маршрутизаторов. Кроме того, возможно сознительное игнорирование сервером приказов с терминала, например по причине бана.

Функция сна есть в справочнике
Цитата:
void Sleep( int milliseconds)
Функция задерживает выполнение текущего эксперта или скрипта на определенный интервал.
Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются help://runtime_start в интерфейсном потоке и не должны его тормозить.
В функцию встроена проверка help://check_IsStopped состояния флага остановки эксперта каждую 0.1 секунды. Параметры:
milliseconds - Интервал задержки в миллисекундах. Пример:
//---- wait for 10 seconds
Sleep(10000);
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось NSerega; 19.07.2013 в 12:27.
20.07.2013, 19:06
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5

По умолчанию Вывод стрелок из индикатора

Здравствуйте!
На основе индикатора FX5 MACD_Divergence V1.1 пытаюсь написать советник. Мне нужно получить признак появления красной и зеленой стрелок.

Стрелка вверх (зеленая):

double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 0, 1);

где предпоследний параметр – 0 – номер буфера с кодом стрелки 233.

Стрелка вниз (красная):

double dn_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 1, 1);

где предпоследний параметр – 1 – номер буфера с кодом стрелки 234.

Вроде бы все верно, но советник не хочет работать, в журнале (с помощью команды Print) выводятся сообщения: Стрелка вверх 2147483647, Стрелка вниз 2147483647.

Что я делаю не так?
Спасибо.
21.07.2013, 06:14
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Здравствуйте!
На основе индикатора FX5 MACD_Divergence V1.1 пытаюсь написать советник. Мне нужно получить признак появления красной и зеленой стрелок.

Стрелка вверх (зеленая):

double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 0, 1);

где предпоследний параметр – 0 – номер буфера с кодом стрелки 233.

Стрелка вниз (красная):

double dn_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 1, 1);

где предпоследний параметр – 1 – номер буфера с кодом стрелки 234.

Вроде бы все верно, но советник не хочет работать, в журнале (с помощью команды Print) выводятся сообщения: Стрелка вверх 2147483647, Стрелка вниз 2147483647.

Что я делаю не так?
Спасибо.
Всё правильно. Это пустое значение EMPTY_VALUE. Означает что там нет стрелки.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
21.07.2013, 07:01
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
Всё правильно. Это пустое значение EMPTY_VALUE. Означает что там нет стрелки.
То, что это означает, что в данном месте нет стрелки, это мне было понятно. Но в тестере стратегий эти сообщения выводятся в течение всего периода (год). И поэтому советник не может открывать сделки.
В чем может быть причина?
21.07.2013, 07:06
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
То, что это означает, что в данном месте нет стрелки, это мне было понятно. Но в тестере стратегий эти сообщения выводятся в течение всего периода (год). И поэтому советник не может открывать сделки.
В чем может быть причина?
Проверь на каком баре появляется стрелка. На втором или третьем, но не на первом.
21.07.2013, 11:21
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
Проверь на каком баре появляется стрелка. На втором или третьем, но не на первом.
Где и как это проверить? Исходя из строки кода, стрелки должны появляться на втором баре (но их нет!):

double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 0, 1);

последний параметр – 1.

Может, я что-то не понял...
21.07.2013, 11:51
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Где и как это проверить? Исходя из строки кода, стрелки должны появляться на втором баре (но их нет!):

double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, 0, 0, 1);

последний параметр – 1.

Может, я что-то не понял...
А ты ищешь на первом.
Я тоже не понял...
В индикаторе 8 входящих параметров, а у тебя только 4.
21.07.2013, 13:12
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
А ты ищешь на первом.
Я тоже не понял...
В индикаторе 8 входящих параметров, а у тебя только 4.
В индикаторе входящих параметров, относящихся к MACD, всего 3:
extern int fastEMA = 12;
extern int slowEMA = 26;
extern int signalSMA = 9;

А я еще ЗАЧЕМ-ТО добавил еще 4-й: applied_price – 0.
Теперь я вижу, что неправильно.

И нужно добавить 3 оставшихся:
extern bool drawIndicatorTrendLines = true;
extern bool drawPriceTrendLines = true;
extern bool displayAlert = true;

А еще 2 входящих:
extern string separator1 = "*** MACD Settings ***";
extern string separator2 = "*** Indicator Settings ***";

их, наверно, включать не надо. Они описательные.

Теперь это выглядит так:

double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, drawIndicatorTrendLines, drawPriceTrendLines, displayAlert, 0, 1);

double dn_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", fastEMA, slowEMA, signalSMA, drawIndicatorTrendLines, drawPriceTrendLines, displayAlert, 1, 1);

Но ситуация абсолютно не изменилась. Все также в журнале (с помощью команды Print) выводятся сообщения: Стрелка вверх 2147483647, Стрелка вниз 2147483647.

Теперь о барах. Почему вы считаете, что я ищу на первом? Ведь 1 – последний параметр кода – означает предпоследний бар. У первого, текущего, бара индекс равен 0. Разве не так?
21.07.2013, 13:38
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
их, наверно, включать не надо. Они описательные.
Не смотря на это их надо вписывать, хотя-бы как пустую строку "". Правильно будет так:
double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", "", fastEMA, slowEMA, signalSMA, "", drawIndicatorTrendLines, drawPriceTrendLines, displayAlert, 0, 1);
Теперь о барах. Почему вы считаете, что я ищу на первом? Ведь 1 – последний параметр кода – означает предпоследний бар. У первого, текущего, бара индекс равен 0. Разве не так?
Так, только текущий бар это не первый. А стрелка может появляться на втором или даже третьем баре. Проверять мне лениво, да и не запускаю я тестер на этом компе.
21.07.2013, 16:54
Аватар для Leonup
Leonup Leonup вне форума Новичок форума
Регистрация: 23.12.2011 / Сообщений: 58
Поблагодарили 4 раз(а) / Репутация: 5
Не смотря на это их надо вписывать, хотя-бы как пустую строку "". Правильно будет так:
double up_sig = iCustom(Symbol(), 0, "FX5 MACD_Divergence V1.1", "", fastEMA, slowEMA, signalSMA, "", drawIndicatorTrendLines, drawPriceTrendLines, displayAlert, 0, 1);

Так, только текущий бар это не первый. А стрелка может появляться на втором или даже третьем баре. Проверять мне лениво, да и не запускаю я тестер на этом компе.
Теперь сделал все, как положено, спасибо вам.
Но в журнале (с помощью команды Print) все также выводятся сообщения: Стрелка вверх 2147483647, Стрелка вниз 2147483647.

А как проверить, на каком баре появляется стрелка? Включить в тестере визуализацию, затем подключить индикатор и визуально отслеживать? Или как-то по-другому, через журнал? А как тогда это сделать?
21.07.2013, 17:39
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Теперь сделал все, как положено, спасибо вам.
Но в журнале (с помощью команды Print) все также выводятся сообщения: Стрелка вверх 2147483647, Стрелка вниз 2147483647.

А как проверить, на каком баре появляется стрелка? Включить в тестере визуализацию, затем подключить индикатор и визуально отслеживать? Или как-то по-другому, через журнал? А как тогда это сделать?
Можно так, а можно поставить принт со второго бара и с третьего. Если в журнале будет печатать сначала на втором баре, а потом на третьем - значит надо использовать второй. А если и на втором будет так-же как на первом, то и не на втором появляется стрелка.
Видимо ты перестраховываешься. До всего этого и сам догадывался.
22.07.2013, 10:36
Аватар для Алекc1234
Алекc1234 Алекc1234 вне форума Местный житель
Регистрация: 24.03.2011 / Сообщений: 697
Поблагодарили 276 раз(а) / Репутация: 276
Подскажите, пожалуйста, как написать в коде: "если ордер не модифицировался, то..." Есть код с модификацией отложенных ордеров OrderModify(OrderTicket().......
Хочется, чтоб было дальше, что если не произошла модификация, то.....
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

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

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



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


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