PDA

View Full Version : Советник FXO.SlosTraling



artamir
06-03-2014, 03:05 PM
Советник заказан в этом сообщении (http://forum.fxopen.ru/showthread.php?99949-otdam-sovetnik-indikator-ili-skript-za-ideju&p=1928795&viewfull=1#post1928795)


Здравствуй те, я не знаю к сожалению насколько затянулось отсутствие на форуме Вашего коллеги Макса, надеюсь что нет. Тем не менее работа стоит. Я не прошу Вас заняться его начатыми проектами и даже ТЗ, которые ему были заказаны, но к которым он по тем или иным причинам еще не приступил.
Мне нужен вспомогательный советник (лучше и удобнее, наверное советник, чем просто скрипт, в готовности работать и работающий постоянно).
Максу был заказан советник на основе индикатора DSS Bressert+ahtf (FILTER) с элементами мартингейла, но так как он сейчас временно (надеюсь) отсутсвует а работа стоит - начал тестировать от нечего делать ТЗ в ручном режиме. http://forum.fxopen.ru/showthread.php?100344-indikator-dss-bressert-ahtf-(filter)-testiruemyjj-variant-ts&p=1928217&viewfull=1#post1928217
Для удобства этой пока еще ручной торговли мне нужен вспомогательный советник закрывающий серии ранее убыточных сделок с увеличенными относительно предыдщущих к ним объемами при достижении общего уровня безубытка.
Частично этот принцип изложен в ТЗ к тому советнику, скопирую его сюда в качестве отдельного ТЗ для самостоятельной "закрывашки":
1. Текущая цена ранее бывшая в убыточной зоне, наконец то вышла в зону общего для серии безубытка (нулевой уровень безубытка).
2. При достижении N1N1 пп (величина переменная) от этого уровня в положительной зоне, между уровнями текущей цены и нулевым уровнем на расстоянии N2N2 от нулевого уровня выставляется 1-й исходный уровень общего закрытия сделок серии.
3. Этот уровень не статический а динамический - расстояние N2N2 пп от нулевого уровня безубытка постоянно увеличивается, отодвигаясь от него в сторону увеличения, одновременно и с ростом отставания от текущей цены с коэффициентом по принципу указанному в ТЗ для уже готового советника DinamicTralilng (коэффициент DynamicTrailingStopKoef
http://forum.fxopen.ru/showthread.php?97285-sovetnik-fxopen-dynamictrailing&p=1738449&viewfull=1#post1738449 )

p,s, Для расчетов уровня общего уровня безубытка (если это будет Вам проще) можно взять за основу уже готовый соответсвующий индикатор (есть в тестируемой ручной стратегии), ссылку на которую я на всякий случай дал в начале задания. Но в этом случае, исходя из специфики данной конкретно стратегии мне необходимо, чтобы он начинал свою работу не для всех сделок, начиная с первой одиночной,(в моей ТС предусмотрены и такие, но закрываемые в безубытке по обратному индикаторному сигналу, если она одна и не успела стать серией сделок), а именно для СЕРИИ однотипных ордеров. т.е. когда их количество будет как минимум = 2.
Хотя как более универсальный вариант использования данной закрывашки вне использования именно в моей ТС, можно вставить отключаемый по желанию пользователе режим, когда она начинает свою работу непосредственно и с 1-й единичной сделки.
Спасибо. Если нужны будут дополнительные пояснения, естественно буду на связи.

Настройки


Slos traling - разрешает советнику использовать данный алгоритм трейлингстопа.
Price step - Расстояние между ценовыми уровнями, на которых происходит изменение стоплосса. (При достижении ценой уровня 1010 ...) Ценовые уровни рассчитываются начиная с уровня безубытка.
SL step - Шаг изменения стоплосса.
SL koef - Коэффициент замедления увеличения расстояния от текущей цены до стоплосса.


Описание работы советника.
Допустим, безубыток для группы бай ордеров равен ценовому уровню 1.3000

Price step = 10
SL step = 5
SL koef = 1

При данных настройках, если цена достигнет уровня 1.3010 (уровень 1), то стоплосс для всей группы будет выставлен на уровень 1.3005.

Если цена достигнет уровня 1.3020 (уровень 2), то стоплосс будет выставлен на уровень 1.3010

Если цена достигнет уровня 1.3030 (уровень 3), то стоплосс будет выставлен на уровень 1.3015

Т.е. для текущей цены определяется количество уровней по формуле:
(текущая цена - безубыток) / Price step.

Далее определяется на каком расстоянии от максимального уровня должен находиться стоплосс по формуле:
SL step*SL koef*количество уровней.

Пример: количество уровней = 1. СЛ в пунктах = 5*1*1=5 пунктов.
количество уровней = 2. СЛ в пунктах = 5*1*2=10 пунктов.
количество уровней = 3. СЛ в пунктах = 5*1*3=15 пунктов.
И т.д.

Затем определяется цена последнего уровня.

И определяется цена стоплосса относительно цены последнего уровня.





Затем определяется цена максимального уровня.

Версия 5.0
Посмотреть изменения и скачать советника можно в этом сообщении (http://forum.fxopen.ru/showthread.php?101260-sovetnik-fxo-slostraling&p=2120079&viewfull=1#post2120079).

Версия 2.1 (http://forum.fxopen.ru/showthread.php?101260-sovetnik-fxo-slostraling&p=1996282&viewfull=1#post1996282)

Изменены настройки и алгоритм работы советника.

Версия 3.11 (http://forum.fxopen.ru/showthread.php?101260-sovetnik-fxo-slostraling&p=2039547&viewfull=1#post2039547)
Изменения связанные с заказом (http://forum.fxopen.ru/showthread.php?99949-otdam-sovetnik-indikator-ili-skript-za-ideju&p=2024947&viewfull=1#post2024947) интеграции данного советника в другие советники

+ исходный код советника.

slos
06-04-2014, 11:02 AM
Респек! Буду разбираться :sm46:

slos
06-04-2014, 12:16 PM
Начнем разбираться поэтапно:
Допустим меня устраивает
"Price step = 10
SL step = 5
SL koef = 1" - (хотя пока и не совсем понятно для чего он)
Но хочу чтобы сова начала выставлять первый уровень общего закрытия в безубытке именно с этими параметры не через 10 пп с уровня 1.3010 (слишком мало значение для 4-х часового таймфрейма,) а через к примеру 50 т.е. в данном случае с 1.3050 ? (и Price step = 50 а SL step = 25 чтобы старт трала включился не через 10 а 50 пп - меня не устраивает)
т.е.
1. уровень б/у = 1.3000
2. цена достигла уровня 1.3050
3. посередине между этими уровнями: 50 пп/2 или 50 пп*0.5 (именно эту задачу для коэффициента 0.5 я и предполагал изначально)= 25 пп т.е. на 1.3025 в итоге выставляется 1-й уровень s/l
4. Далее все продолжается как и должно продолжаться с именно с этими Price step =10 и
SL step=5. Цена ушла на 10 пп=1.3060 s/l изменился на 5 пп=1.3030 Еще ушла на 10 пп = 1.3070 s/l= 1.3035 и т.д.
Предусмотрена ли тут вариант переменной величины price start 10-20-30-40-50 пп (величина переменная) от уровня безубытка ?
Или для этого как то нужно оперировать с переменной SL koef (?) (не могу пока врубиться в его предназначение)

slos
06-04-2014, 01:23 PM
И еще - для чего нужны и как оценивать параметры
TR_TwiseLots 20.0 (20.0 это максимально предусмотренный сумарныйобъем все сделок серии или это самой последней допустимый объем последней сделки в этой серии? и для чего в итоге это нужно если это пока только вспомогательная сова к ручному мартину)
TR_MN = 0
TR_E
:sm23:
И еще, мне лично нужно было чтобы он включался в работу только когда однотипных сделок (бай или селл) было > 1 т.е. минимум 2 (две). т.к. одиночные сделки планирую закрывать не по трейлинг стопу а по обратному сигналу (Покрайне мере пока. Пока не обкатал в ручную до конца эту ТС и в результате не окажется, что закрытие по обратному сигналу , а с этим ранее я уже сталкивался к примеру на "машках", окажется и неэффективным подходом). Это предусмотрено?
И еще, я надеюсь он рассчитывает безубыток отдельно для сделок бай и отдельно для селл, а не всеобщий для всех?
p.s. Заранее прошу прощения, если как то неточно выразил свои желания сразу в ТЗ и был неправильно в итоге понят.
Пока "Price step = 10 и SL step = 5" мне нравится. Сюда бы еще Price start добавить при Koef отставания 1-го уровня S/L от величины Price start = 0.5 (т.е. 1-й уровень S/L = PriceStart*0.5) а последующие уровни S/L пусть так и меняются согласно "Price step = 10 и SL step = 5" ! И будет мне счастье :sm55:

artamir
06-04-2014, 01:53 PM
И еще как оценивать параметры
TR_TwiseLots 20.0 (20.0 это максимально предусмотренный сумарныйобъем все сделок серии или это самой последней допустимый объем последней сделки в этой серии?)
TR_MN = 0
TR_E


Из данных настроек интересует TR_MN - это магик ордеров, которые будет обрабатывать советник.

Остальные настройки на работу советника не влияют.

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

- - - Добавлено - - -


Начнем разбираться поэтапно:
Допустим меня устраивает
"Price step = 10
SL step = 5
SL koef = 1" - (хотя пока и не совсем понятно для чего он)
Но хочу чтобы сова начала выставлять первый уровень общего закрытия в безубытке именно с этими параметры не через 10 пп с уровня 1.3010 (слишком мало значение для 4-х часового таймфрейма,) а через к примеру 50 т.е. в данном случае с 1.3050 ? (и Price step = 50 а SL step = 25 чтобы старт трала включился не через 10 а 50 пп - меня не устраивает)
т.е.
1. уровень б/у = 1.3000
2. цена достигла уровня 1.3050
3. посередине между этими уровнями: 50 пп/2 или 50 пп*0.5 (именно эту задачу для коэффициента 0.5 я и предполагал изначально)= 25 пп т.е. на 1.3025 в итоге выставляется 1-й уровень s/l
4. Далее все продолжается как и должно продолжаться с именно с этими Price step =10 и
SL step=5. Цена ушла на 10 пп=1.3060 s/l изменился на 5 пп=1.3030 Еще ушла на 10 пп = 1.3070 s/l= 1.3035 и т.д.
Предусмотрена ли тут вариант переменной величины price start 10-20-30-40-50 пп (величина переменная) от уровня безубытка ?
Или для этого как то нужно оперировать с переменной SL koef (?) (не могу пока врубиться в его предназначение)

Price step - величина фиксированная. т.е. ценовые уровни для которых будет рассчитываться стоплосс находятся на фиксированном расстоянии друг от друга. И это расстояние будет равно Price step.

Если требуется, чтоб при безубыте 1.3000, сл выставился по цене 1.3025, когда бид достигнет цены 1.3050 нужны следующие настройки:
Price step (шаг цены) = 50;
SL step (шаг стоплосса) = 25;
SL koef = 1;

При данных настройках, коэффициент замедления, который вы описали будет равен отношению Price step к SL step. Т.е. 0.5

SL koef в контексте текущей версии советника играет роль дополнительного замедлителя/ускорителя. Если значение этого параметра больше 1, то стоплосс дополнительно замедляется, а если меньше 1, то ускоряется.

Например для рассмотренного выше:
уровень 1. цена = 1.3050, сл(пункт) = 1(номер уровня)*25(шаг сл)*1.5(коэффициент) = 37, сл(цена)=1.3050-37=1.3013ж
уровень 2. цена = 1.3100, сл(пункт) = 2(номер уровня)*25(шаг сд)*1.5(коэф)=75, сл(цена) = 1.3100-75=1.3025;
И т.д.

Граничными значениями для параметра SL koef являются 0 и 2.

slos
06-04-2014, 02:33 PM
Ок! все Ок! все понятно и koef = 1 меня вполне устраивает.
За предупреждение ("Небольшая ремарка.
При отсутствии открытых позиций и выставленных ордеров, советник никого не спрашивая открывает позицию на продажу.") - спасибо. Главное теперь не забыть его выключать при отсутствии сделок.
Хотя вопрос. Я отсутствую по делам а в это время сова закрывает сделки, на мониторе естественно девственная пустота и она тут же врубает мне продажу? И через какое время после закрытия последней сделки это произойдет? А если мгновенно с новым тиком?
Мне кажется это не совсем удобно. Никак нельзя это убрать или я что не так понял?
p.s. TR_MN=0 это любые ручные сделки, а значение отличное от нуля предусмотрено для параллельной работы с другими совами, имеющими свой магик?

artamir
06-04-2014, 02:46 PM
И еще, мне лично нужно было чтобы он включался в работу только когда однотипных сделок (бай или селл) было > 1 т.е. минимум 2 (две). т.к. одиночные сделки планирую закрывать не по трейлинг стопу а по обратному сигналу (Покрайне мере пока. Пока не обкатал в ручную до конца эту ТС и в результате не окажется, что закрытие по обратному сигналу , а с этим ранее я уже сталкивался к примеру на "машках", окажется и неэффективным подходом). Это предусмотрено?
И еще, я надеюсь он рассчитывает безубыток отдельно для сделок бай и отдельно для селл, а не всеобщий для всех?
p.s. Заранее прошу прощения, если как то неточно выразил свои желания сразу в ТЗ и был неправильно в итоге понят.
Пока "Price step = 10 и SL step = 5" мне нравится. Сюда бы еще Price start добавить при Koef отставания 1-го уровня S/L от величины Price start = 0.5 (т.е. 1-й уровень S/L = PriceStart*0.5) а последующие уровни S/L пусть так и меняются согласно "Price step = 10 и SL step = 5" ! И будет мне счастье :sm55:

Сов работает отдельно с Бай позициями и отдельно с Селл позициями.

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

Безубыток расчитывается для каждого направления позиций отдельно. Это означает, что безубыток будет рассчитан отдельно для Бай позиций, отдельно для Селл позиций.

Давайте еще раз синхронизируем техзадание, бо я начинаю слегка путаться в том, какой конечный результат должен быть.

Итак, что я понял на текущий момент.

Отправная точка расчетов - это связка ценового уровня безубытка и типа позиции.
Для упрощения предположим, что советник будет работать с группой бай позиций. Для селл позиций работа советника будет аналогичной.

1. Безубыток. - Цена безубытка группы позиций.
2. Стоплосс для группы позиций выставляется на одном уровне.
3. Советник должен начинать работу, когда будет открыто заданное в настройках количество позиций.
4. Выход цены в плюсовую зону (для бай позиций - зона находится выше безубытка).
5. При достижении ценой ценовых уровней должен меняться стоплосс.
6. Ценовые уровни находятся на заданном расстоянии друг от друга.
7. Это расстояние является фиксированным / динамическим. (Нужное подчеркнуть :) )
7.1 Если расстояние динамическое, то нужен алгоритм расчета данного расстояния.
8. Стоплосс должен находиться на заданном расстоянии от ценового уровня/последнего значения стоплосса (нужное подчеркнуть, но что-то мне подсказывает, что будет выбран первый вариант).
9. Это расстояние является фиксированным / динамическим.
9.1 Если расстояние динамическое, то нужен алгоритм его расчета.

Вот как-то так.
Подправьте, если я что-нибудь упустил.

- - - Добавлено - - -


Ок! все Ок! все понятно и koef = 1 меня вполне устраивает.
За предупреждение ("Небольшая ремарка.
При отсутствии открытых позиций и выставленных ордеров, советник никого не спрашивая открывает позицию на продажу.") - спасибо. Главное теперь не забыть его выключать при отсутствии сделок.
Хотя вопрос. Я отсутствую по делам а в это время сова закрывает сделки, на мониторе естественно девственная пустота и она тут же врубает мне продажу? И через какое время после закрытия последней сделки это произойдет? А если мгновенно с новым тиком?
Мне кажется это не совсем удобно. Никак нельзя это убрать или я что не так понял?

p.s. TR_MN=0 это любые ручные сделки, а значение отличное от нуля предусмотрено для параллельной работы с другими совами, имеющими свой магик?


Совершенно верно, сов на следующем тике откроет селл позицию.
Мне это было необходимо для проверки работоспособности совы в тестере стратегий.
В следующей версии сделаю данную возможность отключаемой.

На счет TR_MN вы все правильно поняли

slos
06-04-2014, 04:12 PM
1. Безубыток. - Цена безубытка группы позиций. - ДА.
2. Стоплосс для группы позиций выставляется на одном уровне. - ДА
3. Советник должен начинать работу, когда будет открыто заданное в настройках количество позиций - ДА, если количество сделок > 1, с возможностью выбора варианта >&&= 1 т.е. и для одиночных сделок (а не только серий) тоже.
4. Выход цены в плюсовую зону (для бай позиций - зона находится выше безубытка). - ДА.
5. При достижении ценой ценовых уровней должен меняться стоп лосс. - ДА
6. Ценовые уровни находятся на заданном расстоянии друг от друга. - ну пусть будет ДА, не плавное по 1 пп а скачками на расстоянии 5 пп (Хотя почему не плавное, а скачками с шагом именно в 5 пп, может я что все-таки что-то не понимаю ?) друг от друга, если имеется ввиду ценовые уровни S/L 1-2-3 и т.д при последовательном увеличении текущей цены на величину 10 пп (при SL Koef=1)
7. Это расстояние является фиксированным / динамическим. (Нужное подчеркнуть ) - ха! Получается, что фиксированное по отношению друг к другу (равное 5 пп) но динамическое по отношению к последнему максимальному значению текущей цены и уровня безубытка (общее значение уровней СЛ от уровня безубытка последовательно увеличиваются к примеру с 25 пп и пошло поехало 30 - 35- 40 -45... N+5 пп. .
7.1 Если расстояние динамическое, то нужен алгоритм расчета данного расстояния. - только что описал пунктом выше.
8. Стоп лосс должен находиться на заданном расстоянии от ценового уровня/последнего значения стоп лосса (нужное подчеркнуть, но что-то мне подсказывает, что будет выбран первый вариант). - не соображу, наверное первый вариант. К примеру при нужных мне исходных параметрах - Price step (шаг цены) = 50; SL step (шаг стоплосса) = 25; и SL koef = 1; первый и последующие уровни стоп лосса будут всегда ровно посередине (при SL Koef=1) между уровнями безубытка и последним максимальным значением текущей цены (1-й уровень СЛ при этом появится на расстоянии в 25 пп от уровня безубытка и текущей цены при ее достижении в 50 пп от этого уровня б/у)
9. Это расстояние является фиксированным / динамическим.
9.1 Если расстояние динамическое, то нужен алгоритм его расчета. - получается что это расстояние фиксированное в относительном значении (находится ровно посередине от последнего максимального ценового значения текущей цены и постоянного ценового уровня общего безубытка серии. Но динамически последовательно увеличивающееся (на 5 пп) в абсолютных ценовых выражениях.
Как то так.

p.s. Точно так же наверное он будет находится посередине, если я выставлю параметры Price step (шаг цены) = 60; SL step (шаг стоплосса) = 30; и SL koef = 1
или Price step (шаг цены) = 70; SL step (шаг стоплосса) = 35; и SL koef = 1 :sm23:

Опять p.s. (писец) - смущает это 5 пп (откуда оно взялось) В общем то особо не принципиально, но может уровни S/L будут увеличиваться не дискретно скачками через 5 пп а плавно?
К примеру при SL Koef=1 появился 1-й уровень СЛ. Текущая цена выроста на 2 пп - СЛ повысился на 1 пп. Цена выросла на 4 пп - СЛ - на 2 пп Выросла на 6 пп - СЛ на 3 пп и т.д. :sm23:

- - - Добавлено - - -

(несколько раз отредактировал текст, так что на всякий случай прочитай его еще раз)

artamir
06-05-2014, 07:26 AM
1. Безубыток. - Цена безубытка группы позиций. - ДА.
2. Стоплосс для группы позиций выставляется на одном уровне. - ДА
3. Советник должен начинать работу, когда будет открыто заданное в настройках количество позиций - ДА, если количество сделок > 1, с возможностью выбора варианта >&&= 1 т.е. и для одиночных сделок (а не только серий) тоже.
4. Выход цены в плюсовую зону (для бай позиций - зона находится выше безубытка). - ДА.
5. При достижении ценой ценовых уровней должен меняться стоп лосс. - ДА
6. Ценовые уровни находятся на заданном расстоянии друг от друга. - ну пусть будет ДА, не плавное по 1 пп а скачками на расстоянии 5 пп (Хотя почему не плавное, а скачками с шагом именно в 5 пп, может я что все-таки что-то не понимаю ?) друг от друга, если имеется ввиду ценовые уровни S/L 1-2-3 и т.д при последовательном увеличении текущей цены на величину 10 пп (при SL Koef=1)
7. Это расстояние является фиксированным / динамическим. (Нужное подчеркнуть ) - ха! Получается, что фиксированное по отношению друг к другу (равное 5 пп) но динамическое по отношению к последнему максимальному значению текущей цены и уровня безубытка (общее значение уровней СЛ от уровня безубытка последовательно увеличиваются к примеру с 25 пп и пошло поехало 30 - 35- 40 -45... N+5 пп. .
7.1 Если расстояние динамическое, то нужен алгоритм расчета данного расстояния. - только что описал пунктом выше.
8. Стоп лосс должен находиться на заданном расстоянии от ценового уровня/последнего значения стоп лосса (нужное подчеркнуть, но что-то мне подсказывает, что будет выбран первый вариант). - не соображу, наверное первый вариант. К примеру при нужных мне исходных параметрах - Price step (шаг цены) = 50; SL step (шаг стоплосса) = 25; и SL koef = 1; первый и последующие уровни стоп лосса будут всегда ровно посередине (при SL Koef=1) между уровнями безубытка и последним максимальным значением текущей цены (1-й уровень СЛ при этом появится на расстоянии в 25 пп от уровня безубытка и текущей цены при ее достижении в 50 пп от этого уровня б/у)
9. Это расстояние является фиксированным / динамическим.
9.1 Если расстояние динамическое, то нужен алгоритм его расчета. - получается что это расстояние фиксированное в относительном значении (находится ровно посередине от последнего максимального ценового значения текущей цены и постоянного ценового уровня общего безубытка серии. Но динамически последовательно увеличивающееся (на 5 пп) в абсолютных ценовых выражениях.
Как то так.

p.s. Точно так же наверное он будет находится посередине, если я выставлю параметры Price step (шаг цены) = 60; SL step (шаг стоплосса) = 30; и SL koef = 1
или Price step (шаг цены) = 70; SL step (шаг стоплосса) = 35; и SL koef = 1 :sm23:

Опять p.s. (писец) - смущает это 5 пп (откуда оно взялось) В общем то особо не принципиально, но может уровни S/L будут увеличиваться не дискретно скачками через 5 пп а плавно?
К примеру при SL Koef=1 появился 1-й уровень СЛ. Текущая цена выроста на 2 пп - СЛ повысился на 1 пп. Цена выросла на 4 пп - СЛ - на 2 пп Выросла на 6 пп - СЛ на 3 пп и т.д. :sm23:

- - - Добавлено - - -

(несколько раз отредактировал текст, так что на всякий случай прочитай его еще раз)

Как я себе представляю:
У нас есть сетка ценовых уровней, при достижении которых, активируется изменение стоплосса.
И есть сетка уровней стоплосса, которая зависит от текущего уровня сетки ценовых уровней.

Пункты 6-7.1 - это описание сетки ценовых уровней.
Пункты 8-9.1 - это описание сетки стоплоссов. Причем зависит от значения ближайшего уровня ценовой сетки.

Задача: Описать закон расчета этих сеток.
Для ценовой сетки мне видится следующая формула.
PRICE(n) = PRICE(n-1)+Price step.

Для стоплоссов нужно придумать как реализовать эту самую плавность.
А как это сделать я пока не знаю.

slos
06-05-2014, 08:12 AM
"Для стоплоссов нужно придумать как реализовать эту самую плавность.
А как это сделать я пока не знаю."
Ну если сложно, то и не надо, хотя принцип тут по идее такой же как и во встроенном в терминале обычном трейлинг стопе только не для одной сделки вышедшей в безубыток и достигнувшей определенного уровня, а нескольких в серии. Ну да Бог с ней - я тем более не знаю как это выполнить технически
.
"Задача: Описать закон расчета этих сеток.
Для ценовой сетки мне видится следующая формула.
PRICE(n) = PRICE(n-1)+Price step."
Пусть примерно так и будет. Цена достигла заданного ценового уровня PRICE(n1) выше общего уровня безубытка - выставили СЛ согласно СЛ Koef=1. Фиг с ним, не плавно а при достижении следующего ценового уровня с шагом через 10 пп выше предыдущего PRICE(n-1) - выставили следубщий уровень СЛ 2 выше CЛ 1 на 5 пп (опять же согласно СЛ Koef=1)

Но в формуле PRICE(n) = PRICE(n-1)+Price step меня смущает шаг сетки = Price step
Если мне нужно чтобы PRICE(n1) был выше уровня безубытка на 50 пп то и Price step будет = 50 А шаг сетки в 50 пп для PRICE(n) и 25 пп для уровней СЛ при СЛ Koef=1 многовато будет
Лучше тогда PRICE(n) = PRICE(n-1)+ N пп где значение N фиксированная переменная величина, заданная в настройках по умолчанию ну пусть = 10 пп (имхо)
Кстати почти плавная смена уровней CЛ 1-2-3 по взрастающей получится если N задать со значением 2 пп (или это сильно перегрузит сову и сервер?)

artamir
06-05-2014, 01:20 PM
Но в формуле PRICE(n) = PRICE(n-1)+Price step меня смущает шаг сетки = Price step
Если мне нужно чтобы PRICE(n1) был выше уровня безубытка на 50 пп то и Price step будет = 50 А шаг сетки в 50 пп для PRICE(n) и 25 пп для уровней СЛ при СЛ Koef=1 многовато будет
Лучше тогда PRICE(n) = PRICE(n-1)+ N пп где значение N фиксированная переменная величина, заданная в настройках по умолчанию ну пусть = 10 пп (имхо)

Так Price step - это и есть N пп.

Скорее всего нужно сделать отдельную настройку для расстояния до первого уровня. Пусть будет Price start.
А затем плясать c учетом этой настройки.

Тогда в итог получаем формулу:
PRICE(n)=Безубыток+Price start+(n-1)*Price step;

Это позволит отдельной настройкой регулировать расстояние до первого уровня.

slos
06-05-2014, 02:18 PM
Ок, так действительно понятнее. И при Price step=10 и SL step = 5 шаг последующей ценовой сетки будет именно 10 пп а не 50 если Price start у меня будет к примеру=50 а первый уровень СЛ1 при СЛ Koef=1 будет на уровне = 25 пп выше безубытка и последовательно повышаться с каждым новым ценовым уровнем на 5 пп при повышении ценового уровня на 10 (?)

artamir
06-06-2014, 11:15 AM
Со стоплоссами ситуация немного другая.

Думаю, что нужно отталкиваться от ближайшего к текущей цене уровня ценовой сетки.
Звучит как-то не очень - ценовая сетка. Может обозвать ее сеткой активации? Но это так, лирика.

А проблема следующая.
Я действительно пока не знаю как рассчитывать сл в пунктах от текущего уровня.

Может сл сделать как функцию зависящую от расстояния от безубытка до текущего ценового уровня.

Например: Если расстояние от безубытка до текущего ценового уровня = PRICE_LEVEL(n), тогда СЛ можно сделать функцией от этого расстояния.

SL(n)=PRICE_LEVEL(n)*SL koef.

Тем самым будет решен вопрос со стоплоссом на первый уровень, который задается отдельно.

slos
06-07-2014, 01:18 PM
Думаю - не принципиально, лишь бы работало. Как проще сделать - пусть так и будет :sm55:

artamir
06-09-2014, 08:36 AM
Версия 2.1

Настройки текущей версии:
Slos traling - Разрешение работы советника.
Positions amount - Количество позиций в одном направлении+с одинаковым магиком+по одной валютной паре.
Price start - Начальное расстояние от уровня безубытка для активации изменения стоплоссов группы ордеров.
Price step - Расстояние между последующими уровнями активации изменения стоплоссов.
SL koef - Коэффициент зависимости стоплосса от расстояния от безубытка до ближайшего уровня активации.

slos
06-09-2014, 08:46 AM
:sm46: Версия рабочая? Или пока так же окрывает продажи при отсутствии ордеров?
p.s. И еще вопрос - как понимать Positions amount - Количество позиций в одном направлении+с одинаковым магиком+по одной валютной паре. - это максимально допустимое кол-во сделок серии которые сова будет рассчитывать, или этот параметр нужно будет каждый раз менять в зависимости от реального кол-ва сделок. (?)
Поставил пока на время чтобы проверить с параметрами
PriseStart 100 Step 10 и Koef 0.5 - вроде работает:
43110

artamir
06-09-2014, 01:22 PM
:sm46: Версия рабочая? Или пока так же окрывает продажи при отсутствии ордеров?
p.s. И еще вопрос - как понимать Positions amount - Количество позиций в одном направлении+с одинаковым магиком+по одной валютной паре. - это максимально допустимое кол-во сделок серии которые сова будет рассчитывать, или этот параметр нужно будет каждый раз менять в зависимости от реального кол-ва сделок. (?)
Поставил пока на время чтобы проверить с параметрами
PriseStart 100 Step 10 и Koef 0.5 - вроде работает:
43110
А означает это - количество позиций, начиная с которых начинает свою работу советник.
Если поставить 2, то должно быть 2 бая или 2 селла.

slos
06-09-2014, 01:28 PM
Респект! Все отлично! Большое спасибо!
Выключать перед закрытием всех сделок серии, чтобы предотвратить лишние продажи уже не нужно?
На всякий случай еще вопрос (последний): Закрылась серия покупок но осталась действующая продажа - все равно после закрытия покупок включится на следующем тике еще одна продажа (и наоборот)?

artamir
06-09-2014, 02:09 PM
Респект! Все отлично! Большое спасибо!
Выключать перед закрытием всех сделок серии, чтобы предотвратить лишние продажи уже не нужно?
На всякий случай еще вопрос (последний): Закрылась серия покупок но осталась действующая продажа - все равно после закрытия покупок включится на следующем тике еще одна продажа (и наоборот)?

Продажа включится ТОЛЬКО В ТЕСТЕРЕ СТРАТЕГИЙ!!!!

Собственно она мне и нужна была там, чтоб можно было проверить работу алгоритма.

artamir
07-07-2014, 09:57 AM
Версия 3.11

Добавлена возможность передавать параметры и запускать работу советника из других советников.

+ По просьбе andref выкладываю исходный код советника.

slos
09-07-2014, 04:27 PM
Нет предела совершенству и желаниям его достичь!
Советник работает отлично. Выставляет и тянет уровни общего закрытия сделок как положено. Но на относительно небольших ценовых диапазонах это было не так заметно, при небольшой волатильности не проблема было вмешиваться в его работу руками.
Но вот когда волатильность и динамика ценовых изменений растет - столкнулся со следующей проблемой.
Когда цена проходит значительное расстояние в зоне безубытка со временем отставание стопов от текущей цены становится слишком черезмерно удаленным от нее и приходится вмешиваться руками, уменьшая коэффициент отставания чтобы уже наоборот подтянуть уровни стопов поближе к текущей цене перед ее потенциальным замедлением и началом противоположного движения.
Плюс это постоянное возрастание мне нужно было на трендовых ТС а на флетовых (канальных) ситуация несколько изменилась и я наоборот стал недобирать прибыль на чрезмерных откатах когда цена гуляет туда-сюда внутри канальных ценовых диапазонах и нет возможности вмешться в работу трала по причине отсутствия.
К примеру вот недавний пример где мне пришлось руками уменьшать это коэффициент
4524845249
Итоговое закрытие обеих противоположных серий:
45250
Отсюда вопрос - возможно ли модернизировать и автоматизировать следующий процесс в работе трала - постепенное уменьшение до определенного значения SL_Koef (?)
К примеру по следующему пути, добавив несколько дополнительных параметров в настройках.
PriseStart = 20 (переменная)
Prise Step = 5 (переменная)
X Prise Step = 2 (переменная) - количество PriseStep которое должна пройти цена после Prise Start после чего SL_koef должен уменьшиться на 0.1
SL_Koef Start = 0.6 (переменная)
SL_Koef Stop = 0.2 (переменная) - конечное неуменьшаемое значение коэффициента отставания от текущей цены в зоне безубытка.

Своими словами - сова как работает так и работает - выставился первый уровень стопов по исходному SL_Koef Start (=0.6)
Цена проходит 5 пп (Prise Step) - выставляется следующий уровень стопов по прежнему SL_Koef Start = 0.6
А вот далее цена проходит еще 5 пп итого 10 пп (Prise Step(=5)*X(=2) SL_Koef становится =0.6-0.1=0.5 и т.д... 0.5-0.1=0.4 0.4-0.1=0.3 0.3-0.1=0.2
пока SL_Koef не достигнет значения SL_Koef Stop (=0.2) после чего общий уровень стопов тянется за ценой при неизменном конечном SL_Koef(=0.2) от текущего максимума и не закроется на откате.
(?)

artamir
09-08-2014, 06:23 AM
Нет предела совершенству и желаниям его достичь!
Советник работает отлично. Выставляет и тянет уровни общего закрытия сделок как положено. Но на относительно небольших ценовых диапазонах это было не так заметно, при небольшой волатильности не проблема было вмешиваться в его работу руками.
Но вот когда волатильность и динамика ценовых изменений растет - столкнулся со следующей проблемой.
Когда цена проходит значительное расстояние в зоне безубытка со временем отставание стопов от текущей цены становится слишком черезмерно удаленным от нее и приходится вмешиваться руками, уменьшая коэффициент отставания чтобы уже наоборот подтянуть уровни стопов поближе к текущей цене перед ее потенциальным замедлением и началом противоположного движения.
Плюс это постоянное возрастание мне нужно было на трендовых ТС а на флетовых (канальных) ситуация несколько изменилась и я наоборот стал недобирать прибыль на чрезмерных откатах когда цена гуляет туда-сюда внутри канальных ценовых диапазонах и нет возможности вмешться в работу трала по причине отсутствия.
К примеру вот недавний пример где мне пришлось руками уменьшать это коэффициент
4524845249
Итоговое закрытие обеих противоположных серий:
45250
Отсюда вопрос - возможно ли модернизировать и автоматизировать следующий процесс в работе трала - постепенное уменьшение до определенного значения SL_Koef (?)
К примеру по следующему пути, добавив несколько дополнительных параметров в настройках.
PriseStart = 20 (переменная)
Prise Step = 5 (переменная)
X Prise Step = 2 (переменная) - количество PriseStep которое должна пройти цена после Prise Start после чего SL_koef должен уменьшиться на 0.1
SL_Koef Start = 0.6 (переменная)
SL_Koef Stop = 0.2 (переменная) - конечное неуменьшаемое значение коэффициента отставания от текущей цены в зоне безубытка.

Своими словами - сова как работает так и работает - выставился первый уровень стопов по исходному SL_Koef Start (=0.6)
Цена проходит 5 пп (Prise Step) - выставляется следующий уровень стопов по прежнему SL_Koef Start = 0.6
А вот далее цена проходит еще 5 пп итого 10 пп (Prise Step(=5)*X(=2) SL_Koef становится =0.6-0.1=0.5 и т.д... 0.5-0.1=0.4 0.4-0.1=0.3 0.3-0.1=0.2
пока SL_Koef не достигнет значения SL_Koef Stop (=0.2) после чего общий уровень стопов тянется за ценой при неизменном конечном SL_Koef(=0.2) от текущего максимума и не закроется на откате.
(?)

В тз все пока понятно. С удовольствием его реализую.

Версия 5.0
Добавленные настройки:

XStepsBefore - Количество Step до начала уменьшения коэффициента стоплосса.
SLKoefMinus - величина на которую будет уменьшаться коэффициент стоплосса.
SLMin - величина минимального коэффициента стоплосса.