Помогите разобраться с програмированием советников

 
Народ помогите разобраться с программированием советников.
Прошу написать советника по заданному алгоритму, смысл просьбы в том что бы разобраться в структуре и языке ...... То есть вы пишите а я разбираюсь, так как алгоритм достаточно простой и разобраться в написании будет не очень сложно.......
Просьба если у кого-то есть готовые "навороченные" советники с аналогичным алгоритмом на предлагать ...... чем проще будет написано тем проще мне будет разобраться в тексте.

А теперь описание советника:

Eсли H[2]>H[1] то покупка по ордеру = H[2] (то есть покупаем по цене максимума два бара назад)
Если L[2]<L[1] то продажа по ордеру = L[2] (то есть продаем по цене минимума два бара назад)

Выход из позиции осуществляется путем входа в противоположную.

Просьба предусмотреть подключение и отключение стопров:
стоп лосс;
тейк профит.

Советник должен быть универсальный - без привязки к фрейму и тикеру.

Я сгенерировал подобного советника вот тут http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ , но код достаточно объемен и я не смог в нем разобраться и кроме того он явно сгенерирован с ошибкой….. или ошибкой в логике ...... по несколько раз совершает сделки на одном и том же баре ......... история в тесте 600 баров а он нагенерил 14000 сделок. :) и профит в турбо процентах.......
 
Народ помогите разобраться с программированием советников.
Прошу написать советника по заданному алгоритму, смысл просьбы в том что бы разобраться в структуре и языке ...... То есть вы пишите а я разбираюсь, так как алгоритм достаточно простой и разобраться в написании будет не очень сложно.......
Просьба если у кого-то есть готовые "навороченные" советники с аналогичным алгоритмом на предлагать ...... чем проще будет написано тем проще мне будет разобраться в тексте.

А теперь описание советника:

Eсли H[2]>H[1] то покупка по ордеру = H[2] (то есть покупаем по цене максимума два бара назад)
Если L[2]<L[1] то продажа по ордеру = L[2] (то есть продаем по цене минимума два бара назад)

Выход из позиции осуществляется путем входа в противоположную.

Просьба предусмотреть подключение и отключение стопров:
стоп лосс;
тейк профит.

Советник должен быть универсальный - без привязки к фрейму и тикеру.

Я сгенерировал подобного советника вот тут http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ , но код достаточно объемен и я не смог в нем разобраться и кроме того он явно сгенерирован с ошибкой….. или ошибкой в логике ...... по несколько раз совершает сделки на одном и том же баре ......... история в тесте 600 баров а он нагенерил 14000 сделок. :) и профит в турбо процентах.......


Для изучения программирования советников для МТ4 лучше воспользоваться ресурсами сайта https://www.mql4.com/ru
Это ресурс посвящен различным вопросам разработки и использования механических торговых систем.

Трейдеры, работающие с механическими торговыми системами, найдут здесь все необходимое. MQL4.com представляет собой интерактивную библиотеку всевозможных программ для автотрейдинга, написанных на языке программирования MetaQuotes Language 4. На сайте доступно полное описание этого языка и его особенностей. Кроме того, на нем можно свободно обсуждать любые вопросы, связанные с механическими торговыми системами, совместно разрабатывать новые методики технического анализа и автотрейдинга, а также обменивать и продавать свои разработки другим трейдерам.
 
Народ помогите разобраться с программированием советников.
Прошу написать советника по заданному алгоритму, смысл просьбы в том что бы разобраться в структуре и языке ...... То есть вы пишите а я разбираюсь, так как алгоритм достаточно простой и разобраться в написании будет не очень сложно.......
Просьба если у кого-то есть готовые "навороченные" советники с аналогичным алгоритмом на предлагать ...... чем проще будет написано тем проще мне будет разобраться в тексте.

А теперь описание советника:

Eсли H[2]>H[1] то покупка по ордеру = H[2] (то есть покупаем по цене максимума два бара назад)
Если L[2]<L[1] то продажа по ордеру = L[2] (то есть продаем по цене минимума два бара назад)

Выход из позиции осуществляется путем входа в противоположную.

Просьба предусмотреть подключение и отключение стопров:
стоп лосс;
тейк профит.

Советник должен быть универсальный - без привязки к фрейму и тикеру.

Я сгенерировал подобного советника вот тут http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ , но код достаточно объемен и я не смог в нем разобраться и кроме того он явно сгенерирован с ошибкой….. или ошибкой в логике ...... по несколько раз совершает сделки на одном и том же баре ......... история в тесте 600 баров а он нагенерил 14000 сделок. :) и профит в турбо процентах.......



Мне так кажеца, Ваш, "сгенерированный" сторонним ПО, советник работал не по барам, а по тикам. Есессно условия выполнялись каждый тик.
 


Мне так кажеца, Ваш, "сгенерированный" сторонним ПО, советник работал не по барам, а по тикам. Есессно условия выполнялись каждый тик.


А как с этим бороться?

Для изучения программирования советников для МТ4 лучше воспользоваться ресурсами сайта https://www.mql4.com/ru
Это ресурс посвящен различным вопросам разработки и использования механических торговых систем.

Трейдеры, работающие с механическими торговыми системами, найдут здесь все необходимое. MQL4.com представляет собой интерактивную библиотеку всевозможных программ для автотрейдинга, написанных на языке программирования MetaQuotes Language 4. На сайте доступно полное описание этого языка и его особенностей. Кроме того, на нем можно свободно обсуждать любые вопросы, связанные с механическими торговыми системами, совместно разрабатывать новые методики технического анализа и автотрейдинга, а также обменивать и продавать свои разработки другим трейдерам.


Для того что бы начать изучение надо отталкиваться от чегонить простенького.... иначе достаточно легко запутаться..... Большенстнов же статей направлено на людей которые уже имеют представление о предмете обсуждения...... А для таких так я (элементарно не хватает времени) освоить новое програмирование достаточно проблематично, не имея пристеньких примеров........а что может быть проще примеров про HL?
 
Народ а как избавиться от лишних сигналов....
Я тут покапался и накропал маленько, но столкнулся с такой проблемкой если система находится в трейде и поступает еще одни сигнал, то она тупо генерит еще одну сделку в том же направлении.
Как с этим бороться?
 
Народ а как избавиться от лишних сигналов....
Я тут покапался и накропал маленько, но столкнулся с такой проблемкой если система находится в трейде и поступает еще одни сигнал, то она тупо генерит еще одну сделку в том же направлении.
Как с этим бороться?


Просто прежде чем генерить сделку снача нужно просто посчитать (определить) а сколько сделок у тебя уже открыто. Я например подсчёт делаю по комментариям и магическому числу. По магическому числу самый надёжный вариант. Подсчёт только по комментариям может дать сбой в некоторых случаях. И в данном коде приведён как пример.
Вот функция:
//функция подсчёта количества открытых и отложенных ордеров, имеющих комментарий NAME или магическое число MN
int quantity (string NAME, int MN)
{
   int ticket, count=0;
   
   for(ticket=0;ticket<OrdersTotal();ticket++)
   {//внутренний for
      if (OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) break;
      else
      {//начало else
         if (OrderComment()==NAME || OrderMagicNumber()==MN) count++;      
      }//конец else
  
    
   }//внутренний for
   return(count);
 }  



Вызов функции следующий:

q=quantity("MY_SYSTEM",MagicNumberM5);



В q будет помещено количество открытых и отложенных ордеров, имеющих комментарий "MY_SYSTEM" или магическое число MagicNumberM5.

 
Народ а как избавиться от лишних сигналов....
Я тут покапался и накропал маленько, но столкнулся с такой проблемкой если система находится в трейде и поступает еще одни сигнал, то она тупо генерит еще одну сделку в том же направлении.
Как с этим бороться?

Можно ещё проще(в случае, если хочешь только 1 позу держать открытой)Вставить
 if(OrdersTotal()>0)  return;

Непосредственно перед проверкой на открытие. Если не хочешь открываться на той же свече- тогда перед проверкой на открытие-

 if (Bars==bars) return;


и, если сделка открылась, то сразу после открытия

bars=Bars;


У Вас возникнет ещё с пол-миллиона вопросов, поэтому, советую почитать описание любого языка программирования, но лучше mql4.