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

명시

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


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


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

Пример:

Цена идет против нас. Усредняемся. Имеем сетку - 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.


응답함

1
개발자 1
등급
(588)
프로젝트
1064
50%
중재
39
28% / 41%
기한 초과
49
5%
무료
게재됨: 1 기고글, 8 코드
2
개발자 2
등급
(45)
프로젝트
76
20%
중재
7
0% / 86%
기한 초과
14
18%
무료
3
개발자 3
등급
(5)
프로젝트
3
0%
중재
19
0% / 100%
기한 초과
0
무료
4
개발자 4
등급
(48)
프로젝트
73
37%
중재
22
9% / 41%
기한 초과
14
19%
작업중
5
개발자 5
등급
(361)
프로젝트
643
26%
중재
92
72% / 14%
기한 초과
12
2%
작업중
게재됨: 1 코드
6
개발자 6
등급
(340)
프로젝트
588
36%
중재
31
45% / 3%
기한 초과
16
3%
무료
게재됨: 13 코드
7
개발자 7
등급
(4)
프로젝트
5
40%
중재
1
0% / 100%
기한 초과
0
무료
게재됨: 1 코드
8
개발자 8
등급
(574)
프로젝트
945
47%
중재
309
58% / 27%
기한 초과
125
13%
무료
9
개발자 9
등급
(13)
프로젝트
34
76%
중재
1
100% / 0%
기한 초과
6
18%
무료
비슷한 주문
Необходима таблица с параметрами:тф,частота изменения цены за данный тф,ход цены за данный тф.Возможность выгрузки данной сформированной за выбранный период инфо.1 мин,3 мин,6 мин,20 мин …. День,неделя,месяц.Любой период который мне надо будет анализировать
1. Сеточный алгоритм, без мартингейла (открываются одинаковые ордера по лотности). 2. Депозит делится на 3 части. Условно 1000$ по 330$. Торговля ведется на 330$, лотность, просадка, маржа и тд., высчитывается от этой суммы. 3. Счет центовый. Под плечо 1:1000. 4. Ордера набираются группами. 5-7 групп по 10 -15 ордеров. Если цена ушла не в сторону сделки, робот должен дождаться сигнала на покупку
Основная идея советника заключается в использовании коррелирующих валютных пар для выравнивания отрицательного баланса. Изначально запускаются 4 пары, разделенные на 2 блока. В каждом блоке 2 пары, каждая из которых открыты разнонаправленно buy\sell с установленными заранее уровнями TP. Например: в одном блоке 2 пары EUR\USD buy и sell, во втором блоке 2 пары USD\CHF buy и sell. TP устанавливается в каждом блоке
Требуется построить индикатор ZigZag для MetaTrader 4 Который будет фиксировать точки и показывать линии ДО перерисовки значений (если таковые есть) По сути "оставлять след" перерисовки Необходимо взять за основу обычный индикатор ZigZag и модернизировать его. Основные функции обычного ZigZagа сохранить. Когда его устанавливаешь на график, то он, как обычный индикатор, должен отрисовывать ВСЮ историю. Т.е. он будет
Суть ТС:Приход в POI старшего тф, вход в позицию на младшем тф Анализ графика начинается всегда со старшего тф. Должен быть понятный контекст для работы. Активы: EURUSD, XAUUSD POI старшего таймфрейма: Liquidity (1M, 1W, 1D, 4H, 1H) Imbalance (1M, 1W, 1D, 4H, 1H) Order Block (1M, 1W, 1D, 4H, 1H) HTF Fractals (1M, 1W, 1D, 4H, 1H) Всегда дожидаться цену в POI старшего таймфрейма. Вход в позицию: Слом LTF структуры на

프로젝트 정보

예산
30 - 40 USD
기한
에서 1  3 일