Изменить алгоритм частичного закрытия позиций в существующем советнике

Spécifications

Добрый день, уважаемые программисты!


Есть вспомогательный советник (открытый код). Описание функций этого советника есть в прикрепленном файле. В двух словах советник сопровождает открытые позиции, наилучшим образом работает с сетками, тралит последние ордера, полученным профитом "кусает" лотность сетки, может полностью закрывать ордера полученным профитом от последнего ордера и т.п.


Одна из функций советника (в которую необходимо внести изменения) - "частичное перекрытие" ордеров.

Пример:

Цена идет против нас. Усредняемся. Имеем сетку - 4 ордера - 0.1,  0.2,  0.4,  0.8

Рынок разворачивается, как только ордер 0.8 выходит в плюс на определенные выставленные параметры, включается трал "частичного перекрытия". При возврате цены к линии трала произойдет закрытие части ордеров. Например, согласно логике профитом ордера 0.8 закроется часть убытка от первых трех ордеров что в просадке, то есть от каждого согласно суммы может "откусится" по 0.05 убытка. В итоге в рынке останется 0.05, 0.15, 0.35


ИСХОДНЫЕ ДАННЫЕ ЗАДАЧИ: 

Сейчас частичное "откусывание" ордеров в функционирует по следующей логике:
Есть сеть 0,1 / 0,2 / 0,4 /0,8. Ордер 0,8 - стралился и профитом готов "покусать" часть ордеров. И ордера начинают кусаться в порядке - сначал 0,4,  потом -  0,2, потом - 0,1 (тестировал на сетке 4 ордера, возможно при большем количестве ордеров логика может меняться). Это все происходит за миллисекунды, т.е. как одно действие. Но тем не менее порядок такой - от большего ордера к меньшему (не знаю каким образом он определяет - по лотности, дате или по номеру). 

Когда частично кроется ордер, ордер меняет номер в советнике. Номера меняются в порядке возрастания. Т.е. если мы идем в порядке откусывания, как сделано сейчас в советнике, то откусанный ордер 0,1 (самый маленький) будет иметь самый большой номер ордера, так как был изменен последним. В этом случаи, если "кусание" происходило по логике данного советника, самый маленький по объему ордер будет иметь самый последний номер ордера.


Пример:

В порядке возрастания по номеру ордера:

Была сеть 0,1 /0,2 / 0,4 /0,8. Покусалась, стала 0,3 / 0,15 / 0,05.  Самый большой номер ордера после "кусания" стал у 0,05. 


ЗАДАЧА:

1) Изменить логику частичного перекрытия ордеров на противоположную. Чтобы ордера кусались в порядке от меньшего к большему по лотности. Т.е. в предыдущем примере с сеткой 0,1 / 0,2 / 0,4 / 0,8. Профитом последнего оредра сначала кусался бы - 0,1, потом - 0,2, потом - 0,4. Таким образом наибольший по объему из оставшихся ордеров имел самый большой (последний) номер ордера. 

2) Не менее важная задача - при изменении логики ничего больше не повредить в коде, не задеть, не изменить и т.п. Т.е. все должно работать так, как работает сейчас, кроме пункта 1.


Répondu

1
Développeur 1
Évaluation
(589)
Projets
1069
50%
Arbitrage
39
28% / 41%
En retard
49
5%
Gratuit
Publié : 1 article, 8 codes
2
Développeur 2
Évaluation
(45)
Projets
76
20%
Arbitrage
7
0% / 86%
En retard
14
18%
Gratuit
3
Développeur 3
Évaluation
(5)
Projets
3
0%
Arbitrage
19
0% / 100%
En retard
0
Gratuit
4
Développeur 4
Évaluation
(48)
Projets
73
37%
Arbitrage
22
9% / 41%
En retard
14
19%
Travail
5
Développeur 5
Évaluation
(361)
Projets
644
26%
Arbitrage
92
72% / 14%
En retard
12
2%
Travail
Publié : 1 code
6
Développeur 6
Évaluation
(340)
Projets
588
36%
Arbitrage
31
45% / 3%
En retard
16
3%
Gratuit
Publié : 13 codes
7
Développeur 7
Évaluation
(4)
Projets
5
40%
Arbitrage
1
0% / 100%
En retard
0
Gratuit
Publié : 1 code
8
Développeur 8
Évaluation
(574)
Projets
945
47%
Arbitrage
309
58% / 27%
En retard
125
13%
Gratuit
9
Développeur 9
Évaluation
(13)
Projets
34
76%
Arbitrage
1
100% / 0%
En retard
6
18%
Gratuit
Commandes similaires
Требуется написать функцию на MQL4, которая проверяет условия на трех таймфреймах (H4, H1, M15) по индикаторам EMA, AO, RSI и возвращает значения "true" или "false". Открытие сделок не требуется. Только расчет сигнала по готовым формулам. Все формулы и точные условия предоставлю в ТЗ
Язык платформы: MQL4 или MQL5 (уточним с выбранным исполнителем). Тип проекта: Информационный советник-сканер. БЕЗ автоматической торговли (без открытия ордеров). Краткое описание задачи Необходимо разработать высокооптимизированный многопоточный сканер рынков, который будет одновременно мониторить от 250 до 400 торговых инструментов (Forex, Crypto, Индексы, Акции). Система работает на базе 5 независимых виртуальных

Informations sur le projet

Budget
30 - 40 USD
Délais
de 1 à 3 jour(s)