Сопровождение позиций (нужна помощь программистов)

 

Добрый день!

рассматривая торговую стратегию "Pallada 2009 SE" обратил внимание на их автоматизацию сопровождения позиций.идея состоит в том, что по уровням фибо рисуются 6 ценовых уровней - 3 на длинные позиции и 3 на короткие. Прорисовка этих уровней происходит раз в день по СЕТ с учетом дипазона колебания цены за прошлый день.

Существует в ней две модели закрытия сделок: 1) по достижению первого ценового уровня закрывает все лоты; 2) работает по трем ценовым уровням отображающихся на графике. эта часть наиболее интерсна. закрытие лотов происходит в три этапа, каждый из которых закрывается по достижению ценового уровня с перемещением стоп-лоса на предыдущий уровне закрытия. Так должно быть, но в реале этого не происходит. В приложенном декомпилированном эксперте мне кажется кроется какая-то не точность. Суть ее в следующем. Есть в коде переменные CloseLots их две (не понятно почему две, когда должно быть 3?) исходя из их значения закрывает определенное количество лотов на том или ином уровне. В действительности просиходит следующее: открываю позицию 0,3 лота, занчения CloseLots_1 и CloseLots_2 = 0,1. На первом ценовом уровне закрывается как и положено 0,1 лот. цена пошла в сторону открытой позиции дальше... прошла 2-ой уровень и идет дальше, но на это этапе закрываются 0,2 лот.

Грамотные люди глянь пожалуйста в чем неточность и почему так срабатывает? Есть кое-какое мнение по усовершенствованию этого эксперта

Файлы:
 
Если код декомпилированый, никто Вам не поможет
 
а создать аналогичный можно?
 
Для этого Вам нужно составить ТЗ на советник.
 

в двух словах в первом посте сказано. Ну хорошо, может кто откликнется сделать такой эксперт по сопровождению позиций.

Вот примерно такой набор переменных должен быть в этом эксперте (выдрано из #Pallada_Tralling):

extern int Mode = 2 - либо 1 либо 2 (подробности ниже)
extern int Magic_N = -1 - уникальный номер ордера, если отрицательный - ведет все позиции ордеров пары, на график которой эксперт установлен
string gs_84 = "";
int gi_92 = 0;
extern string s0 = "==== ==== ==== ==== ==== ====";
extern double CloseLots_1 = 0.1;
extern double CloseLots_2 = 0.1; - Это размеры лотов которые будут закрываться при определенных условиях
extern double CloseLots_3 = 0.1; #Pallada_Tralling этого нет)
extern double Range = 100.0; - Диапазон колебания цены (волотильность наверно), на основании которого прорисовываются уровни Фибо

(линии рисуются как цена)
extern bool UseSimpleThreeStep = TRUE; - использование трала по принципу трех уровней (true/false)
extern int Level_1 = X;
extern int Level_2 = Y; - Уровни профита в пунках, при достижении которых закрываются ордера по частяс согласно величинам CloseLots
extern int Level_3 = Z; и стоп-лос переносится на этот уровень
extern int Slippage = 3;
extern string s1 = "==== Параметры уровней ====";
extern int TimeFrame = 0; - Таймфрейм на котором будет работать эксперт (если = 0, то любой таймфрейм)
extern int StartHour = 0;
int gi_164 = 0; - StarHour и EndHour - указывает время брокера (по умолчанию стоит СЕТ) по-видимому, в этот промежуток времени эксперт не
extern int EndHour = 7; работает, а по достижению EndHour - расчитывается параметр Range и рисуются уровни Фибо на текущий день
int gi_172 = 0;
extern double Fibo_K_1 = 161.0; - собственно значения фибо, по которым рисуются ценовые цели
extern double Fibo_K_2 = 200.0;
extern double Fibo_K_3 = 261.0;
extern bool DrawLevels = TRUE; - рисовать или не рисовать ценовые уровни


теперь о принципе работы такого эксперта

Сделки и стоп-лосы открываются в ручную !!!

присутствие парамтера MODE - позволяет выбрать как будет вести себя эксперт.

MODE= 1 - советник закроет все лоты ордера при достижении первого ценового уровня.

MODE= 2 - Советник работает по ценовым целям - при достижении того или иного ценового уровня закрываются лоты установленные в CloseLots, а стоп-лос передвигается, т.е. при достижении первой цели закрывается кол-во лотов из CloseLots_1 и стоп-лос передвинется на уровень первой цели и т.д.

Range - очень полезная штука, нужно чтобы тоже отображалась на графике. От ее величины зависит будет ли срабатывать UseSimpleThreeStep или нет. В параметрах советника должна быть изменяемая величина, каждая пара имеет свою волотильность. Так вот, установив какое-либо значение в ручную, советник будет сравнивать текущее (вычисленное советником и отображенное на графике) значение Range c установленным. Если текущее значение больше установленного, то будет активизироваться трал по уровням (UseSimpleThreeStep).

UseSimpleThreeStep: Это функция работает по уровням профита. Т.е. цена прошла в плюс X пунктов- советник закрывает часть ордера по параметру CloseLots_1 и передвигает сто-лос на уровень цены закрытия первой части ордера. Дальше цена прошла Y пунктов от цены открытия ордера - советник закрывает вторую часть ордера по параметру CloseLots_2 и передвигает стоп-лос на этот уровень.

при достижении профита в Z пунктов от цены открытия можно рассмотреть два варианта. 1) можно полностью закрыть позицию, что в принципе было бы предпочтительней. но бывают случаи когда цена продолжает расти, то здесь можно рассмотреть применимость обычного трала, чтобы набрать побольше профита - это от жадности.


В общем это чем-то похоже на трал Кима, но улучшенный. Кто-нибудь сможет такую штуку сделать? Буду презнателен, да и не только я.

 
https://forum.mql4.com/ru/22086
 
satop >>:
https://forum.mql4.com/ru/22086

Это не то... но идея хорошая

 
UP
 
как появится время или интерес, нарисую!
 
vvavva >>:
как появится время или интерес, нарисую!

Благодарю за отзыв

 
Поднять темку