Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Мультивалютный помощник-полуавтомат

Добрый день.
Андрей, прошу написать мультивалютный советник помощник-полуавтомат с одной кнопкой и одной функцией.
Назначение: закрывать все позиции любых валютных пар с любым лотом с определенным магиком
кроме самой убыточной позиции в валюте депозита.
Пример:
пользователь открыл несколько разных позиций по разным валютным парам
у всех валютных пар одинаковый магик — 12345;
открыты позиции по
EURUSD лот 0.1 прибыль 12.3 $
GBPUSD лот 0.03 прибыль — 2.7 $
USDJPY лот 0.17 прибыль — 27.1 $
USDCAD лот 0.2 прибыль 13.9 $
EURGBP лот 0.09 прибыль 39.5 $
NZDUSD лот 0.12 прибыль — 22.4 $

При нажатии кнопки на панели помощник закроет все позиции по всем парам кроме USDJPY так как у этой
валютный пары самый большой убыток — 27.1 $.
Эта позиция остается в работе.

Других действий мультивалютный советник помощник-полуавтомат не производит.
Спасибо.
  • 0
  • Просмотров: 1871
  • 1 июня 2020, 19:45
  • ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник WeisWave
01 июня 2020
02 июня 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (12)

+
0
на 11-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 1 июня 2020, 19:47
+
0
Спасибо.:) 
avatar

  16  ssg Автор Сообщений: 817

  • 1 июня 2020, 19:49
+
0
*shock* 
avatar

  12  Slava78 Сообщений: 598

  • 1 июня 2020, 20:18
+
0
Андрей, если еще не начали писать программу по моему заказу и если не затруднит добавьте пожалуйста через триггер следующее условие:
-открыть противоположенную позицию оставшейся после общего закрытия позиции;
-не отрывать противоположенную позицию оставшейся после общего закрытия
позиции;
То есть выставить лок или не выставлять.
В моем примере:
После закрытия всех позиций, кроме самой убыточной, осталась позиция USDJPY(бай) так как у этой валютный пары самый большой убыток — 27.1 $ советник откроет(или не откроет) позицию USDJPY(селл) тем же лотом и с тем же магиком.
Триггер вынесен в настройки.Например так:
extern bool stoplock = true;

Спасибо.
avatar

  16  ssg Автор Сообщений: 817

  • 2 июня 2020, 05:12
+
0
по первоначальному тз сделал:



www.opentraders.ru/downloads/2683/

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 6 июня 2020, 11:11
+
0
Андрей, добрый день.
Спасибо за оперативность.
Но помощник не доработан.
1.Он не мультивалютный.
2.Судя по коду он не только не мультивалютный, но перебирает ордера только одной пары и закрывает все позиции у которых профит меньше 0.
Я просил что бы советник смотрел все позиции по всем парам и закрывал все позиции КРОМЕ самой убыточной.
Андрей прочитай те пожалуйста еще раз ТЗ.
И если Вас сильно не затруднит добавьте пожалуйста локирование оставшейся не закрытой самой убыточной позиции.
Функцию открытия позиций можно убрать.Она не нужна.
Спасибо.
avatar

  16  ssg Автор Сообщений: 817

  • 6 июня 2020, 14:37
+
0
Прошу прощения, сразу не сообразил*hi* !
Как я понял функцию открытия позиций добавлена для проверки работоспособности в тестере.
Но посмотрите остальные мои замечания и пожелание.
Еще раз приношу свои изменения.
Редактирован: 6 июня 2020, 14:57
avatar

  16  ssg Автор Сообщений: 817

  • 6 июня 2020, 14:55
+
0
Андрей еще раз приношу свои извинения!*hi* 
Подвела моя невнимательность.
Смутили лишние кнопки и в функции AllProfit(int ot=-1) строка
if(OrderSymbol()==Symbol())
           {
.
Мне кажется она лишняя.
Дальше по коду в функции LossTicket() идет перебор тикетов уже без ссылки на пару только на магик…
То же самое в функции void CloseAll().
Нет возможности проверить сейчас мультивалютность, но наверное должно работать правильно.
Андрей добавьте пожалуйста отключаемую функцию локирования оставшейся позиции.
Прошу прощения за свою невнимательность.
avatar

  16  ssg Автор Сообщений: 817

  • 6 июня 2020, 15:25
+
0
я сначала на одну пару сделал, потом мультивалютность добавил.
этот вариант уже на демо надо отлаживать: www.opentraders.ru/downloads/2683/

про постановку локов пока речи не идет, итак работы хватает. это только кажется что все так просто.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 6 июня 2020, 15:57
+
0
Я и не говорю, что это элементарно.
Просто я сам этого не смог сделать и по этому обратился к Вам.
Пишу мультивалютный советник и этот блок часть стратегии.Его я не смог сам осилить. А без этого блока сейчас все встало.
Андрей, если появиться возможность и время допишите пожалуйста этот момент.
Спасибо за работу и помощь:) 
avatar

  16  ssg Автор Сообщений: 817

  • 6 июня 2020, 17:13
+
0
проверяем :) 

открыл несколько ордеров:



нажал кнопку и остался только сиплый:

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 8 июня 2020, 20:43
+
0
Андрей спасибо.<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
У себя тоже проверил, работает.
Осталась проблема с локовой позицией.
Для одной пары решил просто: добавил функцию PutOrderLock(), что бы можно было и лот менять и магик для дальнейшего учета.
Дописал условие выставления лока в функции CloseAll() добавив условие
if(OrderTicket()==tik)
{
А проблема определения наименования пары самого убыточного осталась.
Нужна функция на подобии LossTicket() только что бы возвращала не тикет а символ пары.
Потом обращения к ней добавить в void CloseAll() как и LossTicket() и проблема будет решена!
Смотрел функции Кима, но не нашёл нужной.
Андрей, если будет возможность — добавьте выставление лока для оставшейся пары.
Спасибо.

Редактирован: 9 июня 2020, 07:06
avatar

  16  ssg Автор Сообщений: 817

  • 9 июня 2020, 06:43

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий