Ответить
20.07.2018, 20:47
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,850
Поблагодарили 3,962 раз(а) / Репутация: 3951
Для ваших задач нужно реализовывать скрипт а не советник, тогда не нужно будет ничего колхозить
Я понял так, что это советник с панелью. Или, как минимум, поле ввода на графике.
21.07.2018, 02:03
Аватар для OSS_5
OSS_5 OSS_5 вне форума Новичок форума
Регистрация: 10.01.2018 / Сообщений: 33
Поблагодарили 8 раз(а) / Репутация: 9
1. Если известно как индикатор принимает решение и алгоритм простой, нет надобности применять тормозную iCustom
2. Если уж надо обязательно вызвать, то для экономии ресурсов процессора можно ограничить историю по которой вызывается индикатор. HistoryBars

3. А почему обе строчки одинаковые? Надо хотя бы буфера разные задать.

double UP = iCustom(NULL,0,"XXX_01",0,0,0);
double DOWN = iCustom(NULL,0,"XXX_01",0,0,0);
Мне не известно как индикатор принимает решение, я не программист (смотрю как другие это делают, так и сам делаю). А вот как без iCustom сделать, я не знаю (может покажите).
По поводу HistoryBars логично, согласен.
Если неправильно сделал поправьте:

double UP = iCustom(NULL,0,"XXX_01",0,0,0);
double DOWN = iCustom(NULL,0,"XXX_01",0,0,1);

так правильно?
21.07.2018, 06:42
Регистрация: 13.03.2009 / Сообщений: 2,547
Поблагодарили 2,084 раз(а) / Репутация: 2161
Мне не известно как индикатор принимает решение, я не программист (смотрю как другие это делают, так и сам делаю). А вот как без iCustom сделать, я не знаю (может покажите).
По поводу HistoryBars логично, согласен.
Если неправильно сделал поправьте:

double UP = iCustom(NULL,0,"XXX_01",0,0,0);
double DOWN = iCustom(NULL,0,"XXX_01",0,0,1);

так правильно?
Нет. Последняя цифра это бар на котором смотреть значение индикатора. 0 это текущий бар, 1 это то что передним...
Предпоследняя цифра задаёт номер буфера.

Если задавать параметры индикатора, то задавать все до последнего значимого. Они перечисляются после имени.
Например если нужно ограничить историю, то это последний параметр, придётся перечислять все до последнего.
В этом индикаторе 1 буфер. В нём пишется 1, или -1, или значение прошлого бара.
Вот что получается с ограничением истории 100 барами.

double Ind=iCustom(NULL,0,"XXX_01","AGM1.3_",clrBlue,clrR ed,5,100,0,0);

А так если параметры индикатора задавать не надо, будут по умолчанию.
double Ind=iCustom(NULL,0,"XXX_01",0,0);

А вот дальше надо проанализировать значение переменной Ind.
Если оно 1 то тренд вверх.
if(Ind>0.5)
{
//Здесь что он должен делать

}

Если оно -1 тренд вниз

if(Ind<-0.5)
{
//Здесь что он должен делать

}

Это так для общей грамотности. На самом деле индикатор не отображает линию буфера. Чёрточки которые он рисует, это маленькие трендовые линии, то есть графические объекты. Советник их может отлавливать на графике по именам, но тогда в тестере он работать не будет, так как тестер не работает с графическими объектами.
Единственный выход залезть в индикатор, посмотреть по какому принципу он расставляет линии и перенести этот алгоритм в советник.
А там всё довольно просто
Синяя линия ставится если :
if(High[2]<=High[1] && High[2]<=Low[0] && !(High[3]<=High[2] && High[3]<=Low[1]))
{
//Здесь действие которое должен делать советник в этом случае

}

Красная линия ставится если :
if(Low[2]>=Low[1] && Low[2]>=High[0] && !(Low[3]>=Low[2] && Low[3]>=High[1]))
{
//Здесь действие которое должен делать советник в этом случае

}

Смогёшь это вставить в советник? Если слабо, но ооочень хочется, то лучше обратиться к автору советника. Его координаты есть вверху самого кода. Он и здесь на форуме часто обитает.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 21.07.2018 в 06:45. Причина: Удалил кучу пропущенных стро\к которые воткнул форум
21.07.2018, 08:48
Аватар для procom
procom procom вне форума Интересующийся
Регистрация: 05.03.2012 / Сообщений: 10
Поблагодарили 2 раз(а) / Репутация: 3
Я понял так, что это советник с панелью. Или, как минимум, поле ввода на графике.
Идея заключается в том, чтобы в МТ4 использовать только терминал.
Управление открытием и закрытием ордеров передавать из другого софта ввиде числовых, может быть строковых переменных через dll.
21.07.2018, 12:44
Аватар для OSS_5
OSS_5 OSS_5 вне форума Новичок форума
Регистрация: 10.01.2018 / Сообщений: 33
Поблагодарили 8 раз(а) / Репутация: 9
Нет. Последняя цифра это бар на котором смотреть значение индикатора. 0 это текущий бар, 1 это то что передним...
Предпоследняя цифра задаёт номер буфера.

Смогёшь это вставить в советник? Если слабо, но ооочень хочется, то лучше обратиться к автору советника. Его координаты есть вверху самого кода. Он и здесь на форуме часто обитает.
Огромнейшее спасибо за столь исчерпывающий, развернутый ответ.

Сначала исправил на double Ind=iCustom(NULL,0,"XXX_01",0,0); скорость возросла в разы. Потом вставил расчет, взятый из индикатора. А ведь у меня и в мыслях не было, что можно брать расчет из индикатора и вставлять в советника (никогда не задумывался).

Прям почувствовал себя немножко программистом. Ещё раз спасибо Вам, что подсказываете таким как я. С Уважением.
21.07.2018, 16:36
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,850
Поблагодарили 3,962 раз(а) / Репутация: 3951
Идея заключается в том, чтобы в МТ4 использовать только терминал.
Управление открытием и закрытием ордеров передавать из другого софта ввиде числовых, может быть строковых переменных через dll.
Тем более это должен быть советник.
Дальше надо понимать взаимодействие dll с терминалом. Очень важно расположение этой dll и как должно передаваться оттуда или как доставать эти переменные.
22.07.2018, 06:05
Аватар для procom
procom procom вне форума Интересующийся
Регистрация: 05.03.2012 / Сообщений: 10
Поблагодарили 2 раз(а) / Репутация: 3
Тем более это должен быть советник.
Дальше надо понимать взаимодействие dll с терминалом. Очень важно расположение этой dll и как должно передаваться оттуда или как доставать эти переменные.
У меня такая связка работала почти 2 года. Месяц назад гавкнулся винт и мне не удалось вытащить хоть
что-то из него. В МТ4 работал советник, который мне помог доработать добрый человек, с которым
сейчас у меня нет контактов. На ноуте остались мои черновики, которые я сочинял, но в mql я не Копенгаген.
Вот теперь пытаюсь что-нить придумать.
По поводу dll там все довольно просто и надежно. Dll лежит в Libraries, в коде буквально
4 строчки текста, обмен происходит через собственные регистры Windows довольно быстро.
Вы сами без проблем можете это проверить буквально за 10 минут.
Здесь все написано : https://fx1.net/permvar.php .
22.07.2018, 07:20
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,850
Поблагодарили 3,962 раз(а) / Репутация: 3951
Вы сами без проблем можете это проверить ...
Увы, проверить не могу. Там написано не по русски, а по ихнему я плохо читаю.
22.07.2018, 07:54
Аватар для procom
procom procom вне форума Интересующийся
Регистрация: 05.03.2012 / Сообщений: 10
Поблагодарили 2 раз(а) / Репутация: 3
Ну, уж если очень хочется попробовать скачай Download v3.1.1, остальное расскажу.
22.07.2018, 22:51
Аватар для AlexanderG
AlexanderG AlexanderG вне форума Прохожий
Регистрация: 04.01.2014 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1
Здравствуйте, искал информацию в гугле не смог найти. Подскажите пожалуйста: есть индикатор, ставит стрелки вверх и вниз по закрытию свечи, хочу добавить стрелку, условия которой: поза-позапрошлая свеча закрылась и имеет стрелку вниз И позапрошлая свеча закрылась и имеет стрелку вниз И прошлая свеча закрылась и имеет стрелку вниз и тогда на новой свече уже моя стрелка, т.е. 3 предыдущие свечи закрылись со стрелками, тогда появляется моя стрелка. Может есть ссылка на похожее или сможете подсказать как реализовать код (хотя бы направление в котором искать) Спасибо
23.07.2018, 06:12
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,850
Поблагодарили 3,962 раз(а) / Репутация: 3951
Здравствуйте, искал информацию в гугле не смог найти. Подскажите пожалуйста: есть индикатор, ставит стрелки вверх и вниз по закрытию свечи, хочу добавить стрелку, условия которой: поза-позапрошлая свеча закрылась и имеет стрелку вниз И позапрошлая свеча закрылась и имеет стрелку вниз И прошлая свеча закрылась и имеет стрелку вниз и тогда на новой свече уже моя стрелка, т.е. 3 предыдущие свечи закрылись со стрелками, тогда появляется моя стрелка. Может есть ссылка на похожее или сможете подсказать как реализовать код (хотя бы направление в котором искать) Спасибо
Сначала надо разобраться какие стрелки ставятся. Они могут быть просто графическими объектами и могут быть буферными отображениями.
В первом варианте надо искать объекты, проверять их время и код стрелки, потом на основании этой информации рисовать свою стрелку.
Во втором просто читается последние три бара и если все индексы буфера имеют значения, то в свой, дополнительный буфер заносить значение.
НО! Было-бы гораздо проще давать советы видя существующий код. И даже нашёлся-бы хороший человек который просто так, безвозмездно, сделал-бы так как надо.
23.07.2018, 06:19
Регистрация: 13.03.2009 / Сообщений: 2,547
Поблагодарили 2,084 раз(а) / Репутация: 2161
Здравствуйте, искал информацию в гугле не смог найти. Подскажите пожалуйста: есть индикатор, ставит стрелки вверх и вниз по закрытию свечи, хочу добавить стрелку, условия которой: поза-позапрошлая свеча закрылась и имеет стрелку вниз И позапрошлая свеча закрылась и имеет стрелку вниз И прошлая свеча закрылась и имеет стрелку вниз и тогда на новой свече уже моя стрелка, т.е. 3 предыдущие свечи закрылись со стрелками, тогда появляется моя стрелка. Может есть ссылка на похожее или сможете подсказать как реализовать код (хотя бы направление в котором искать) Спасибо
Самое простое, это выполнить всё как описал.
Вызвать индикатор со стрелками по iCustom на i+1, i+2, i+3 барах и если на них всех есть стрелки, поставить свою на i баре.
Это самый простой, но не эффективный способ.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
23.07.2018, 14:26
Аватар для procom
procom procom вне форума Интересующийся
Регистрация: 05.03.2012 / Сообщений: 10
Поблагодарили 2 раз(а) / Репутация: 3
AlexeyVik, можешь проверять.

1. permvar2.dll копировать в C:\Program Files (x86)\ MT4\MQL4\Libraries\

2. #_Send 2xMA - индикатор, пересечение 2 МА, сигналы пересечения выводятся
в регистр Windows PermVar \ Trend 2xMA, имя - trenMA, для управления советником.
(В командной строке Windows запускаем regedit, поиск - Permvar).

3. #_Receive 2xMA - советник, колхозил (как выражаются проффи) сам, если что не так,
более продвинутые могут поправить.
Индикатор и советник устанавливаю на EUR 1 min, в другом окне открываю GBP 1 min и там тоже
запускаю этот же советник, который торгует по сигналам из EUR. Вроде отрабатывает правильно.

Последний раз редактировалось procom; 23.07.2018 в 14:36.
23.07.2018, 16:58
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,850
Поблагодарили 3,962 раз(а) / Репутация: 3951
AlexeyVik, можешь проверять.

1. permvar2.dll копировать в C:\Program Files (x86)\ MT4\MQL4\Libraries\

2. #_Send 2xMA - индикатор, пересечение 2 МА, сигналы пересечения выводятся
в регистр Windows PermVar \ Trend 2xMA, имя - trenMA, для управления советником.
(В командной строке Windows запускаем regedit, поиск - Permvar).

3. #_Receive 2xMA - советник, колхозил (как выражаются проффи) сам, если что не так,
более продвинутые могут поправить.
Индикатор и советник устанавливаю на EUR 1 min, в другом окне открываю GBP 1 min и там тоже
запускаю этот же советник, который торгует по сигналам из EUR. Вроде отрабатывает правильно.
Спасибо, если когда-то будет это интересно, тогда и посмотрю, проверю.
24.07.2018, 09:38
Аватар для dshk777
dshk777 dshk777 вне форума Интересующийся
Регистрация: 29.03.2013 / Сообщений: 35
Поблагодарили 2 раз(а) / Репутация: 2

По умолчанию Добавление мартингейла к советнику

Уважаемые тредеры, кто-нибудь подскажите как правильно дописать к советнику функцию "lot exponent" (множение лота при проигрыше)???
Сколько сам не пробовал, всеравно не работает сова. Заранее спасибо
24.07.2018, 16:50
Аватар для eevviill2
eevviill2 eevviill2 на форуме Местный знаток
Регистрация: 13.08.2016 / Адрес: Бандерівці / Сообщений: 780
Поблагодарили 658 раз(а) / Репутация: 630
Уважаемые тредеры, кто-нибудь подскажите как правильно дописать к советнику функцию "lot exponent" (множение лота при проигрыше)???
Сколько сам не пробовал, всеравно не работает сова. Заранее спасибо
PHP код:
Lot*MathPow(Lot_multip,orders
24.07.2018, 17:02
Аватар для dshk777
dshk777 dshk777 вне форума Интересующийся
Регистрация: 29.03.2013 / Сообщений: 35
Поблагодарили 2 раз(а) / Репутация: 2
да я вставлял во внутренний код советника например extern double LotExponent = 2; и в сове отображается такое значение, но когда тестировал в тестере всеравно не удваивается. Может быть что-то еще дописать нужно???

Последний раз редактировалось dshk777; 24.07.2018 в 17:07.
25.07.2018, 16:48
Аватар для OSS_5
OSS_5 OSS_5 вне форума Новичок форума
Регистрация: 10.01.2018 / Сообщений: 33
Поблагодарили 8 раз(а) / Репутация: 9
да я вставлял во внутренний код советника например extern double LotExponent = 2; и в сове отображается такое значение, но когда тестировал в тестере всеравно не удваивается. Может быть что-то еще дописать нужно???
Посмотрите, как смиллион делает в эксперте Усредняющий советник по индикатору RSI

Только у него функция называется K_Lot.
05.08.2018, 16:59
Аватар для MrGreen86
MrGreen86 MrGreen86 вне форума Элитный участник
Регистрация: 12.01.2012 / Сообщений: 904
Поблагодарили 1,209 раз(а) / Репутация: 1213
да я вставлял во внутренний код советника например extern double LotExponent = 2; и в сове отображается такое значение, но когда тестировал в тестере всеравно не удваивается. Может быть что-то еще дописать нужно???
если вы добавите extern double LotExponent = 2; и на этом все, то ничего не изменится.

нужно посчитать серию убыточных ордеров
PHP код:
int loss_orders 0;
for(
i=OrdersHistoryTotal()-1;i>=0;i--) {
   if(!
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
   if(
OrderSymbol() != _Symbol) continue;
   if(
OrderMagicNumber() != magic) continue;
   if(
OrderProfit()>0) break;
   
loss_orders++;
   } 
затем, как уже подсказывали выше, посчитать новый лот.
PHP код:
double new_lot NormalizeDouble(Lot*MathPow(LotExponent,loss_orders),lot_digits); 
05.08.2018, 18:18
Аватар для vladradon
vladradon vladradon вне форума Почётный гражданин
Регистрация: 12.02.2015 / Сообщений: 643
Поблагодарили 323 раз(а) / Репутация: 330
нужно посчитать серию убыточных ордеров
Или вычислить или запомнить лот последнего в серии ордера и от него плясать - результат примерно тот же, только расчет разный...
Запомнить можно сразу при открытии ордера, либо прогнать функцию и вычислить последний ордер на данном счете это совсем не сложно...
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...

Последний раз редактировалось vladradon; 05.08.2018 в 18:20.
Ответить

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


Опции темы

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

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



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


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