Jump to content

Напишу советник, скрипт, индикатор на MQL бесплатно


Capman
Message added by Capman,

Данная ветка предназначена для тех, кто ищет помощи специалистов в реализации своих торговых идей для терминала MetaTrader, а также для специалистов MQL, готовых воплощать интересные идеи трейдеров на безвозмездной основе.

 

Вот рекомендации, которым нужно следовать:

  • Идея торговой системы/индикатора/скрипта должна быть полностью описана Вами в сообщении.
  • Выкладывать декомпилированный код запрещено.
  • Программы, изготавливаемые по публичным заданиям, должны выкладываться с открытым кодом.
  • Конфиденциальность гарантируется только при заказе советника за деньги. Самым надежным способом заказа советника является сервис "Работа" от компании MetaQuotes. В этом разделе форума запрещено оставлять объявления о заказе или выполнении работ по написанию советников. Для этого используйте раздел "Реклама".
  • Если кого-либо из программистов заинтересует Ваша идея, или он просто захочет помочь, то займется написанием. Отсутствие ответов означает, что Ваша идея никого пока не заинтересовала. Повторять пост с просьбой в этом случае не нужно (такие посты нарушают правило форума 10).

Recommended Posts

Hitronrav
1 час назад, BooGUY сказал:

Почему NormalizeDouble иногда не срабатывает? 

Принтом вывожу массив в журнал, почти все double значения выводятся до указанного 1 знака после запятой, а какие-нибудь 3-4 значения (из ста) с 15 знаками.

 

https://www.mql5.com/ru/forum/363676

  • Thanks 1
Link to post
Share on other sites
  • Replies 138
  • Created
  • Last Reply

Top Posters In This Topic

  • DVargo

    24

  • Ugar68

    16

  • Pirojoque Project

    13

  • BooGUY

    13

Top Posters In This Topic

Popular Posts

Код, отслеживающий спред, должен быть внедрён в торгующий советник, иначе выйдет добротный велосипед на костылях. Более того, от ТС поведение при событиях по спреду могут сильно различаться, т.е. подо

Если данные свечей больше нигде не будут нужны, то и запоминать их не зачем. Да и без массивов можно обойтись. Всё делать в момент открытия свечи. Если сформировалась свеча >= X, то переб

Советник называется cm partial closing position 1.Советник отслеживает открытые позиции по всем или заданному инструменту. 2 При достижении указанной прибыли закрывает часть позиции. Можно у

Posted Images

BooGUY

iHigh(NULL,PERIOD_H1,i) и double H=iHigh(NULL,PERIOD_H1,i); - это не одно и тоже?

Почему-то после цикла while дают разные результаты. 

Хотел оптимизировать, чтобы постоянно не писать длинную строчку  iHigh(NULL,PERIOD_H1,i), а забить её в переменную. Поменял в цикле на переменную, результат получился другой. 

Link to post
Share on other sites
Pirojoque Project

В цикле функция при каждом запуске возвращает акутальное (для текущего значения i) значение, а однажды записанная переменная хранит только то, что было актуально в момент её записи. В общем, H не является "хендлом" или указателем на значение вызываемой функции.

 

Впрочем, без явного контекста локализовать проблему конкретно сложно.

  • Thanks 1
Link to post
Share on other sites
BooGUY
34 минуты назад, Pirojoque Project сказал:

В цикле функция при каждом запуске возвращает акутальное (для текущего значения i) значение, а однажды записанная переменная хранит только то, что было актуально в момент её записи. В общем, H не является "хендлом" или указателем на значение вызываемой функции.

 

Впрочем, без явного контекста локализовать проблему конкретно сложно.

Спасибо, имею ввиду. 

Подскажите, пожалуйста такой момент:

 

...

...
double Size[10]; 
x=1;
for (i=10; i>0; i--) 
      {
if (iClose(SymbolName(Symbol_i,true),PERIOD_M1,10)-iLow(SymbolName(Symbol_i,true),PERIOD_M1,i) >= trend*Point) 
          {      
            Size[x]=iClose(SymbolName(Symbol_i,true),PERIOD_M1,10)-iLow(SymbolName(Symbol_i,true),PERIOD_M1,i);  // dв этом месте тут же вылетает USDJPY,М1: array out of range, не успев начаться

            х++;

            ...

            ...

Потом срабатывает. Потов снова вылетает. Одно и то же действие, но иногда вылетает

Пробовал поставить Comment, так перед вылетом написано либо 1, либо 10. 
            

Edited by BooGUY
Link to post
Share on other sites
Pirojoque Project
  1. В инициализации цикла, а дальше в цене закрытия видим "10" (дальше вообще "100") — лучше вынести во внешнюю переменную и иметь возможность её регулировать. Использовать сами значения — значит "захардкодить" их в коде (и фактически утратить возможность для безболезненной регулировки).
  2. В конструкциях "if" рекомендую сравнивать готовые посчитанные значения, чтобы код было легче читать. Т.е. сначала вычисляем предел свечи, затем размер свечи, сохраняем всё это в переменные, а уже потом в if'е сравниваем эти переменные.
  3. Из замечания 1 вытекла ошибка как раз по обращению к функциям, работающим с массивами (iClose и прочие). Откуда там 100 взялось? Почему в x-ый элемент мы пытаемся насыпать вычисленные значения из 100 - i-тый? Да ещё и цены разные у i-того и 100-того. Не понятен код, не ясна задумка.
  4. Ну и самое главное — массив Size изначально имеет 10 элементов. Т.е. от нулевого до девятого. А вы пытаетесь обратиться к элементу с индексом 10, которого нет (i = 10 ?).

 

Стоит попробовать заменить for (i=10; i>0; i--)  на for (i=9; i>=0; i--) 

Edited by Pirojoque Project
  • Thanks 1
Link to post
Share on other sites
BooGUY
2 часа назад, Pirojoque Project сказал:
  1. В инициализации цикла, а дальше в цене закрытия видим "10" (дальше вообще "100") — лучше вынести во внешнюю переменную и иметь возможность её регулировать. Использовать сами значения — значит "захардкодить" их в коде (и фактически утратить возможность для безболезненной регулировки).
  2. В конструкциях "if" рекомендую сравнивать готовые посчитанные значения, чтобы код было легче читать. Т.е. сначала вычисляем предел свечи, затем размер свечи, сохраняем всё это в переменные, а уже потом в if'е сравниваем эти переменные.
  3. Из замечания 1 вытекла ошибка как раз по обращению к функциям, работающим с массивами (iClose и прочие). Откуда там 100 взялось? Почему в x-ый элемент мы пытаемся насыпать вычисленные значения из 100 - i-тый? Да ещё и цены разные у i-того и 100-того. Не понятен код, не ясна задумка.
  4. Ну и самое главное — массив Size изначально имеет 10 элементов. Т.е. от нулевого до девятого. А вы пытаетесь обратиться к элементу с индексом 10, которого нет (i = 10 ?).

 

Стоит попробовать заменить for (i=10; i>0; i--)  на for (i=9; i>=0; i--) 


Pirojoque Project,благодарю Вас за оперативные ответы по существу. Форум живой у Альпари. 
Я могу ошибаться, но мне кажется, что проблема была в Point. Я повесил на один график, а в коде другая валютная пара, но при этом умножал на Point (валютной пары графика). Поменял на MarketInfo и вроде заработало. Круги нарезает цикл, пока без ошибок (тьфу-тьфу). 

Вы, случайно, не знаете, можно как-то историю порезать? Когда загружаешь, то загружается лет за 20, а нужна года 2-3 назад... 
Сейчас лежит архивный груз МТ4 в 13 гигабайт) Избавиться бы от ненужной истории. Как вариант, нажимать на кнопку Home, но хотелось бы попроще, в идеале программно (либо загружать частично).

Link to post
Share on other sites
Pirojoque Project
46 минут назад, BooGUY сказал:

Вы, случайно, не знаете, можно как-то историю порезать?

В МТ5 нет такой проблемы 🙂  А вообще лучше всего всё удалить и загрузить заново. Для массированной загрузки есть решение.

  • Thanks 1
Link to post
Share on other sites
GlyhoNemoi
22 часа назад, BooGUY сказал:

Size[x]=

 

22 часа назад, BooGUY сказал:

x=1;

 

проблема вот тут.  индексация в массивах с нуля начинается.

 

когда все условия в циклах верны x=10 а последний индекс массива Size -> 9,  возникает ошибка (индексация массива идет от нуля по этому  последний индекс = "размер массива" - 1).

 

В данном случае проблему решит  x=0.

Link to post
Share on other sites
BooGUY
4 часа назад, GlyhoNemoi сказал:

 

 

проблема вот тут.  индексация в массивах с нуля начинается.

 

когда все условия в циклах верны x=10 а последний индекс массива Size -> 9,  возникает ошибка (индексация массива идет от нуля по этому  последний индекс = "размер массива" - 1).

 

В данном случае проблему решит  x=0.

Благодарю за информацию

Link to post
Share on other sites
  • 1 month later...
Guiseppe

Здравствуйте.На форуме первый раз,может что не так делаю....Уважаемые программисты,нужно написать советник по стохастику.Алгоритм простой.

                                                                                                               АЛГОРИТМ 

1)Уровни не важны.

2)Быстрая линия %K пересекает медленную %D - с низу на верх-- ПОКУПКА

3)Быстрая линия %K пересекает медленную %D - с верху на низ-- ПРОДАЖА

4) TP. и SL. не нужно, позиция должна закрываться по обратному сигналу Stochastic

5) Если позиция закрылась в убыток,в следующую позицию ( не важно SEL или BAY ) входить с удвоенным лотом и так до тех пор пока позиция закроется в прибыль, после чего лот сбросить до начального.

Все.Заранее спасибо.

Link to post
Share on other sites
Karelia_invest

Первая сделка лотом 0,01 закрылась в -5$, вторая лотом 0,02 закрылась в -55$, третья лотом 0,04 закрылась в +3$. Следующая сделка открывается лотом 0,01? Несмотря на то, что совокупный результат по трем сделкам -57$?

Link to post
Share on other sites
  • 4 months later...
AlexVGol

Здравствуйте, уважаемые участники форума)

Хочу найти разработчика для написания советника на МТ4.  Коротко идея торговой стратегии: на основании показаний существующего индикатора Ди Наполи ( у меня есть его исходник) открываются отложенные ордера с установленными значениями TP и SL.  Ордера срабатывают по рынку. Если индикатор  поменял прогноз на разворотный - оставшиеся в рынке сделки и ордера закрываются по рыночной цене и открываются новые отложенные ордера по новому сигналу.   https://www.mql5.com/ru/charts/15947479/eurusd-h4-alpari-primer-raboti-indikatora-di-napoli

Конкретные параметры торговой системы в личном контакте. 

Если кто-либо заинтересовался, прошу сообщить.

Link to post
Share on other sites
  • 7 months later...
Caravadgo

Друзья, кто сможет нарисовать простенький советник под мт4
1) Определяем флетовый участок примерно в 14:00 – 14:30 мск;

2) Выставляем отложенные ордера Sell stop и Buy stop ниже и выше границ флета;

3) Стоп-лосс ордера на уровне противоположного ордера, тейк-профит равен размеру флетового диапазона;

4) Свеча в 15:00 (иногда чуть раньше, иногда чуть позднее) активирует наш ордер, ждем ТП, либо СЛ.

5) В 20:00, если ни тейк ни стоп-лосс не сработали, закрываем позицию, независимо от наличия прибыли/убытка.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...