Вобщем мой вариант доработки. Возможно верии 1.9. Просьба не пинать ногами.
Если рынок находится во флете, и цена никак не может коснуться TP, то есть вероятность, что советник начнет открывать следующие ордера примерно в одном узком диапазоне цен. Задействование KoeffMartin приведет к накоплению (увеличению) суммарной величины открытых ордеров. При этом TP подтянуть поближе не удается. И если тут начинается движение цены против ожидаемого направления открытых ордеров, то залоги и просадки начнут увеличиваться до критических величин. Свободные средства будут таять на глазах в геометрической прогрессии. Советник превратившийся в мартина уже ничего сделать не сможет, и если тренд продолжит в том же духе, то ... В данной ситуации может спасти только чудо и большой депозит.
Поэтому мое предложение. Во флете и при движении цены в направлении TP открытой серии ордеров запретить работу прогрессивных КМ , либо использовать KoeffMartin1(предпочтительно <=1). Благодаря этому мы предотвратим накопление общего объема ордеров, которое никак не влияет на подтягивание TP. А вот при движении цены против направления TP после какого-то заданного PipStepa от максимально удаленного ордера от цены TP пусть срабатывает KoeffMartin3 (>1).
Предположим, что у нас открывается постепенно серия ордеров на продажу Lot1, Lot2, Lot3 и Lot4. Советник постоянно контролирует цены открытых лотов и назначает из них пограничный лот, стоящий на максимальном удалении от TP. Так сначала пограничным лотом был естественно Lot1. Затем Lot2, затем Lot3. Далее Lot4 открылся по цене ниже Lot3, поэтому советник пограничным лотом считает Lot3. При открытии Lot5 советник сравнивает его цену с Lot3 и назначает Lot5 пограничным.
Одновременно советник вычисляет разницу цен (С) между пограничным лотом и вновь открывшемся. В зависимости от результата применяет нужный KoeffMartin. Так как цена Lot5 >= цена Lot3+ PipStep, то Lot5 умножается на KoeffMartin3. В этом случае мы резко подтягиваем TP с минимальными потерями маржи.
Если выполняется условие (C >= PipStep) , то KoeffMartin3 , иначе KoeffMartin1
Lot 1 = Lot
Lot 2 = Lot * KoeffMartin1
Lot 3 = Lot * KoeffMartin1
Lot 4 = Lot * KoeffMartin1
Lot 5 = Lot * KoeffMartin3
Далее советник контролирует только Lot 5.
Что нужно добавить в BURN 1.9.
extern double KoeffMartin3 // коэффициент увеличения лота
extern double PipStep // шаг от пограничного ордера.
При этом алгоритм работы с LotN_1, LotN_2, KoeffMartin1, KoeffMartin2 возможно не затрагивается.
Вот как-то так.
Коментарии dpg03.
Думаю, что закрытие сессии надо разбить на несколько зон. В каждой зоне использовать свой алгоритм закрытия: