Мультивалютный помощник-полуавтомат |
Добрый день.
Андрей, прошу написать мультивалютный советник помощник-полуавтомат с одной кнопкой и одной функцией.
Назначение: закрывать все позиции любых валютных пар с любым лотом с определенным магиком
кроме самой убыточной позиции в валюте депозита.
Пример:
пользователь открыл несколько разных позиций по разным валютным парам
у всех валютных пар одинаковый магик — 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я материал? Не забудьте поставить плюс и поделиться в социальной сети!
Комментарии (12)
35 AM2 Сообщений: 16250 - Андрей
16 ssg Автор Сообщений: 817
12 Slava78 Сообщений: 598
-открыть противоположенную позицию оставшейся после общего закрытия позиции;
-не отрывать противоположенную позицию оставшейся после общего закрытия
позиции;
То есть выставить лок или не выставлять.
В моем примере:
После закрытия всех позиций, кроме самой убыточной, осталась позиция USDJPY(бай) так как у этой валютный пары самый большой убыток — 27.1 $ советник откроет(или не откроет) позицию USDJPY(селл) тем же лотом и с тем же магиком.
Триггер вынесен в настройки.Например так:
extern bool stoplock = true;
Спасибо.
16 ssg Автор Сообщений: 817
www.opentraders.ru/downloads/2683/
35 AM2 Сообщений: 16250 - Андрей
Спасибо за оперативность.
Но помощник не доработан.
1.Он не мультивалютный.
2.Судя по коду он не только не мультивалютный, но перебирает ордера только одной пары и закрывает все позиции у которых профит меньше 0.
Я просил что бы советник смотрел все позиции по всем парам и закрывал все позиции КРОМЕ самой убыточной.
Андрей прочитай те пожалуйста еще раз ТЗ.
И если Вас сильно не затруднит добавьте пожалуйста локирование оставшейся не закрытой самой убыточной позиции.
Функцию открытия позиций можно убрать.Она не нужна.
Спасибо.
16 ssg Автор Сообщений: 817
Как я понял функцию открытия позиций добавлена для проверки работоспособности в тестере.
Но посмотрите остальные мои замечания и пожелание.
Еще раз приношу свои изменения. Редактирован: 6 июня 2020, 14:57
16 ssg Автор Сообщений: 817
Подвела моя невнимательность.
Смутили лишние кнопки и в функции AllProfit(int ot=-1) строка .
Мне кажется она лишняя.
Дальше по коду в функции LossTicket() идет перебор тикетов уже без ссылки на пару только на магик…
То же самое в функции void CloseAll().
Нет возможности проверить сейчас мультивалютность, но наверное должно работать правильно.
Андрей добавьте пожалуйста отключаемую функцию локирования оставшейся позиции.
Прошу прощения за свою невнимательность.
16 ssg Автор Сообщений: 817
этот вариант уже на демо надо отлаживать: www.opentraders.ru/downloads/2683/
про постановку локов пока речи не идет, итак работы хватает. это только кажется что все так просто.
35 AM2 Сообщений: 16250 - Андрей
Просто я сам этого не смог сделать и по этому обратился к Вам.
Пишу мультивалютный советник и этот блок часть стратегии.Его я не смог сам осилить. А без этого блока сейчас все встало.
Андрей, если появиться возможность и время допишите пожалуйста этот момент.
Спасибо за работу и помощь
16 ssg Автор Сообщений: 817
открыл несколько ордеров:
нажал кнопку и остался только сиплый:
35 AM2 Сообщений: 16250 - Андрей
У себя тоже проверил, работает.
Осталась проблема с локовой позицией.
Для одной пары решил просто: добавил функцию PutOrderLock(), что бы можно было и лот менять и магик для дальнейшего учета.
Дописал условие выставления лока в функции CloseAll() добавив условие
if(OrderTicket()==tik)
{
А проблема определения наименования пары самого убыточного осталась.
Нужна функция на подобии LossTicket() только что бы возвращала не тикет а символ пары.
Потом обращения к ней добавить в void CloseAll() как и LossTicket() и проблема будет решена!
Смотрел функции Кима, но не нашёл нужной.
Андрей, если будет возможность — добавьте выставление лока для оставшейся пары.
Спасибо.
Редактирован: 9 июня 2020, 07:06
16 ssg Автор Сообщений: 817
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий