Мультивалютный советник "MTG" (доработка)

  • Автор темы forexFX
  • Дата начала
forexFX

forexFX

Участник
Форумчанин
Монет
2,457
Нужна помощь в доработке советника на базе MQ5.
Суть проста, но знаний не хватает. Советник уже торгует по одной стратегии без индикатора. Решил расширить советник для торговли на других парах, что бы не ставить на каждый график. Ввёл пока две пары, но советник торгует по стратегии сразу двумя парами. Поступил сигнал, советник вошёл в рынок и торгует одной парой, при этом пропускает сигнал от другой пары. А идея в том, чтобы по стратегии каждая пара торговала независимо.
Если есть возможность, прошу помочь.
P.S. Стратеги в процессе настройки, потому результат ещё слабый. Но есть куда развиваться. Хочу ещё информативную панель прикрутить, как бы рабочий стол трейдера по советнику, ну это со временем.
Заранее спасибо!
 

Вложения

  • Test_mult.mq5
    17.8 КБ · Просмотры: 10
  • Лайк
Реакции: Степaн
Можно попробовать парный трейдинг на расхождении. Либо убрать сетку и входить по сигналам. Пары возможно будут хеджировать друг друга. Еще добавить торговлю в две стороны одновременно. Есть возможность использовать несколько стратегий входа на одной паре, например, трендовая и в диапазоне. Все это можно тестировать, класс.
 
Есть небольшой свет в конце тунеля в советнике.
Для понимания, что к чему, было бы неплохо информативно анализировать по каждой паре в онлайн-тесте.
Если можно, пожалуйста, пропишите некоторые статистические данные по торговли, или направьте меня в коде я поковыряюсь (но это будет не просто)
234
Под номером один на скриншоте - баланс, средства, текущая просадка(средства и процент от средств), максимальная просадка(средства и процент от средств), заработок сегодня, вчера, неделя.
Под номером два на скриншоте - символ пары, которая участвует в торговле, количество лотов, профит, текущая просадка(процент от средств).
Спасибо.
 
Тестируйте советник в тестере стратегий МТ5 до получения приемлемых результатов, только затем на онлайн-тесты. Сейчас советник необходимо дорабатывать. Давайте попробуем сетки пока не использовать, подберем сигналы для входа (индикаторные) и введем стоплосс и тейкпрофит. Болванку сейчас подготовлю.
 
Индикаторы всё врут. Я подбираю значения для стратегии, и думаю в правильном направлении. Только каждая пара имеет свою волатильность. И нужно под каждую пару установить некоторые значения, а именно - умножение лота, профит, шаг сетки. Если такое возможно, пожалуйста, добавьте.
Спасибо.
 
Индикаторы всё врут. Я подбираю значения для стратегии, и думаю в правильном направлении. Только каждая пара имеет свою волатильность. И нужно под каждую пару установить некоторые значения, а именно - умножение лота, профит, шаг сетки. Если такое возможно, пожалуйста, добавьте.
Спасибо.
Вынесены настройки отдельно для каждого инструмента. Добавлен параметр "Разрешить торговлю", false - пара не торгуется и не тестируется.
Индикаторы не могут врать, они лишь обобщают данные.
 

Вложения

  • Test_mult_v1_01.mq5
    25.1 КБ · Просмотры: 13
То что нужно. Скоро будем думать как красиво на mql5.com разместить для аренды и демонстрации торговли :)
Ещё момент. Можно ли научить торговать советник в обе стороны? Сейчас поступил сигнал на продажу, пока не закроет сторону, далее сигнал по паре не берёт во внимание. При этом много пропускает хороших сигналов на покупку. Удобно будет добавить параметр "Разрешить торговлю в обе стороны" для каждой пары. Так можно проверить на тестере, не будет ли загибаться торговля.
Спасибо.
 
Добавил ещё несколько пар, но в функции Comment() есть ограничение на вывод информации.
Как можно по другому организовать вывод, а то более 5-и значений пар не могу вывести на график.
Во вложении часть кода с которым проблема. Шестую пару уже не хочет сохранять редактор.
 

Вложения

  • 890.txt
    1.8 КБ · Просмотры: 10
То что нужно. Скоро будем думать как красиво на mql5.com разместить для аренды и демонстрации торговли :)
Ещё момент. Можно ли научить торговать советник в обе стороны? Сейчас поступил сигнал на продажу, пока не закроет сторону, далее сигнал по паре не берёт во внимание. При этом много пропускает хороших сигналов на покупку. Удобно будет добавить параметр "Разрешить торговлю в обе стороны" для каждой пары. Так можно проверить на тестере, не будет ли загибаться торговля.
Спасибо.
Торговля в обе стороны логична и необходима по умолчанию. Пока в одну сторону строится сетка, в другую получаем прибыль. Добавил торговлю в обе стороны по умолчанию.
Screenshot 1
 

Вложения

  • Test_mult_v1_03.mq5
    22.7 КБ · Просмотры: 13
а можете вкратце описать точки входа....по которым сов торгует
 
Много просмотрел сеточников, у всех проблема с СРЕДСТВАМИ, так как для открытия ордеров против тренда, нужны именно средства. В данном советнике хочу сохранить средства и не акцентирую на доходе. А ставлю ставку на количество пар, которые будут сохранять средства. Для этого нужно вместить все пары которые будут торговать, на график для информативности. В функцию Comment () не вмещаются технически. Просьба что-то придумать, как вывести инфу по парам на график!
 
Торговля в обе стороны логична и необходима по умолчанию. Пока в одну сторону строится сетка, в другую получаем прибыль. Добавил торговлю в обе стороны по умолчанию.
Для точности тестирования, сделайте опцию в советнике включать и отключать две стороны. Чисто теоретически, в две стороны делже существенно возрости профит. Но сделал тестирования нового и прошлого советника разница не болшьшая, но средства в минус на новом советнке больше. Вобщем, если можно - сделайте такую опцию.
 
Много просмотрел сеточников, у всех проблема с СРЕДСТВАМИ, так как для открытия ордеров против тренда, нужны именно средства. В данном советнике хочу сохранить средства и не акцентирую на доходе. А ставлю ставку на количество пар, которые будут сохранять средства. Для этого нужно вместить все пары которые будут торговать, на график для информативности. В функцию Comment () не вмещаются технически. Просьба что-то придумать, как вывести инфу по парам на график!
Ловкость рук и никакого мошенства :cool:
Screenshot 1
C#:
[SIZE=2]//+------------------------------------------------------------------+
//| Информационная панель                                            |
//+------------------------------------------------------------------+

void ShowInfo()
{   
   double profit = NormalizeDouble(AccountInfoDouble(ACCOUNT_PROFIT) * 100 / AccountInfoDouble(ACCOUNT_BALANCE), 2);
  
   if (AccountInfoDouble(ACCOUNT_PROFIT) < maxProfit)
   {
      maxProfit = AccountInfoDouble(ACCOUNT_PROFIT);
      maxProfitPercent = profit;
   }
  
   string message = "--------------------------------------------------------------------------\n";
   message += "Баланс счета: " + AccountInfoDouble(ACCOUNT_BALANCE) + "\n";
   message += "Средства: " + AccountInfoDouble(ACCOUNT_EQUITY) + "\n";
   message += "Текущая прибыль/просадка: " + AccountInfoDouble(ACCOUNT_PROFIT) + "  (" + profit + "%)\n";
   message += "Максимальная просадка: " + maxProfit + "  (" + maxProfitPercent + "%)\n";
   message += "--------------------------------------------------------------------------\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
   message += Symb1 + "  ордеров: " + (PositionCount(0, Symb1) + PositionCount(1, Symb1)) + "  лоты: " + GetLots(Symb1) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb1),1) + "\n";
   message += Symb2 + "  ордеров: " + (PositionCount(0, Symb2) + PositionCount(1, Symb2)) + "  лоты: " + GetLots(Symb2) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb2),1) + "\n";
   message += Symb3 + "  ордеров: " + (PositionCount(0, Symb3) + PositionCount(1, Symb3)) + "  лоты: " + GetLots(Symb3) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb3),1) + "\n";
   message += Symb4 + "  ордеров: " + (PositionCount(0, Symb4) + PositionCount(1, Symb4)) + "  лоты: " + GetLots(Symb4) + "  профит/убыток: " + NormalizeDouble(AllProfit(Symb4),1) + "\n";
  
   Comment(message);
}[/SIZE]
 

Проверенные Брокеры

Реклама

Заработок онлайн

Назад
Верх