[open source] [Советник] по ТС [Н4] Lazy Trader

От Fanmeld, 22 апреля, 2013 в Лаборатория ProfitFX

Автор#1

Предлагаю в данной ветке проводить разработку, обсуждение
и тестирование советника по ТС "Lazy Trader".

Система находится здесь:
http://tradelikeapro.ru/sistema-lazy-trader/

Последняя версия советника от форумчанина xbms (не забываем ставить ему плюсы) находится во вложениях.


Итак, взяли за основу советник "Начало", подкрутили гайки, добавили фичи, и вот результат:

Спойлер


extern double FixedLot = 0; // Фиксированный лот, если 0, то рассчёт по ММ
extern double LotsFor1000 = 0.1; // ММ, объём(лот) на 1000 депозита (валюта не имеет значения)
extern double TakeProfitK = 1; // TakeProfit - коеффициент, расстояние между отложками,умноженному на TakeProfitK
extern double StopLossK = 1; // StopLoss - коеффициент, расстояние между отложками,умноженному на StopLossK
extern bool UseMartingale = false; // Использовать Мартингейл
extern double Multiplier = 2; // Множитель объёмов, если используется мартингейл
//+------------------------------------------------------------------+
extern int DayStart = 1; // День начала работы (пн)
extern int DayEnd = 5; // День завершения работы (пт)
extern int StartHour = 4; // Начало работы (час)
//extern int EndHour = 4; // Завершение работы (час)
extern int MaxPips = 30; // Максимальная длина свечи в пунктах, при которой разрешено ставить отложки
extern bool CloseByTime = true; // закрывать по времени, если false, то по трейлингу
extern int CloseHour = 23; // Закрывать открытые ордера
extern int Indent = 15; // Отступ от цены для установки отложенных ордеров
extern bool DeleteOpposite = false; // Удалять вторую откложку, если открылся 1-й ордер
extern bool SetLimits = false; // Ставить лимитные ордера, вместо стоповых
//+------------------------------------------------------------------+
extern string LimitLoss = " ========= Безубыток ========";
extern int LossLimit = 0; // Безубыток
extern int LossPoints = 2; // доп. рункты для безубытка
//+------------------------------------------------------------------+
extern string Trail = " ========= Trailing =========";
extern bool UseTrailing = true;
extern bool ProfitTrailing = false; // Тралить только профит
extern int TrailingStop = 15; // Фиксированный размер трала
extern int TrailingStep = 2; // Шаг трала
extern bool UseSound = true; // Использовать звуковой сигнал
extern string NameFileSound = "expert.wav"; // Наименование звукового файла
//+------------------------------------------------------------------+
extern int Magic = 123; // Магический номер ордеров
extern string comment = "LazyTrader v1.0"; // Комментарий ордеров
extern int Slippage = 5; // Проскальзывание ордера
//+------------------------------------------------------------------+

Мартингейл тут "мягкий", можно даже сказать нежный :)
Советник не будет до посинения увеличивать лот, а просто начнёт торговать повышенным, пока баланс не придёт к норме...

Также вместо стоповых ордеров можно ставить лимитные:

extern bool     SetLimits       = true;  // Ставить лимитные ордера, вместо стоповых

результат где-то даже лучше...

Параметры подбирайте сами, выставлено абсолютно наобум...


Альтернативный вариант от автора VanHook:
/laboratoriya-profitfx/24/open-source-sovetnik-po-ts-n4-lazy-trader/4083/?do=findComment&comment=68201

Исправленный альтернативный вариант от автора SNZHikari:
/laboratoriya-profitfx/24/open-source-sovetnik-po-ts-n4-lazy-trader/4083/?do=findComment&comment=69232
Настройки:
Спойлер


Сова работает с 3х значными котировками по ене
Для правильной работы мартина, должна быть в единственном экземпляре.
Все значения в новых пунктах.
Исправлены Критические ошибки из-за кторорых сова работала неправильно.
Добавлена минимално необходимая обработка ошибок для работы на реале.

FixLot=false; // Использовать фиксированный лот
Lot=0.5; // Фиксированый лот если FixLot=true
LotNa10000=0.5; // Рассчетный лот на 10000 едениц баланса если FixLot=false
//-------------------------------
FairMM=false; // Включает "Справедливый" ММ.
FairMartin=false; // "Справедливый" ММ рассчитывается после домножения Мартином
Fair=1200; // Лот вычесляется по системе лот*(Fair/стоплос)
//--------------------------------
Indent=200; // Отступ в от теней сигнальной свечи
FixIndent=0; // Не дожедаясь закрытия первой свечи выставляет отложки на данном расстоянии если 0 не используется.
MaxCandle=1500; // Свечи больше заданного размера не считаются сигнальными
MinCandle=100; // Свечи меньше заданного размера не считаются сигнальными
Use2candle=false; // Использовать в качестве сигнальной вторую свечу если первая больше/меньше заданных выше
IndentSL=0; // Сдвигает стоплосс на заданное число пунктов относительно рассчитанного
IndentTP=0; // Сдвигает тейкпрофит на заданное число пунктов относительно рассчитанного
MinSL=0; // Минимальный Стоплос. SL равен это значению если был меньше.
MaxSL=10000; // Максимальный Стоплос. SL равен этому значению если был больше.
TakeProfitK=3; // Отношение ТейкПрофит к СтопЛосс
LotMult=1.2; // Множетель Лота для Мартина если 0 не используется.
balans=0; // Включается Мартин пока Баланс не станет равен этому значению.
StartHour=4; // Час начала торгов сигнальной будет являтся предыдущая 4х часовая свеча.
StartDay=1; // День начала торгов (если -1 сделки открываются и закрываются каждый день)
CloseHour=22; // Час окончания торгов
CloseDay=5; // День окончания торгов
Magic=1221123; // Магик
Sleepage=10; // Проскальзывание
AITrailing = false; // Использовать Трайлинг стоп (работает не по пунктам, а по свечкам)
bTrlinloss = false; // Использовать трайлинг стоп до того как перешли в безубыток
iTmfrm=60; // период, по барам которого следует тралить (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
iBars_n = 3; // кол-во баров, по которым следует тралить
iIndent = 10; // отступ от тени бара, на котором размещается стоплосс
UseBU=true; // перевод в безубыток если трайлинг стоп не используется
UseBU2=false; // перевод в стопа на цену открытия+стоплос если цена достигла открытие+2*стоплос
BUPips = 20; // Сколько пунктов взять + к безубытку
UseCloseHalf=false; // закрытие половины позиции при переводе в BU
NoClose=false; // Не закрывать ордера в конце недели



Версия, которую разместил test13:
/laboratoriya-profitfx/24/open-source-sovetnik-po-ts-n4-lazy-trader/4083/?do=findComment&comment=69110
Параметры советника:
Спойлер


lot - лот
Steep - отступ от максимума и минимума искомой свечи (200 для 5 знаков, 20 для 4 знаков)
Profit_factor - во сколько раз TakeProfit больше StopLoss (по умолчанию 3)
TralLevel - Перевод БУ: при достижении х1 - БУ 0, при достижении х2 - БУ х1 и т.д.
MinSizeCandle - Минимальный размер свечи
MaxSizeCandle - Максимальный размер свечи
CloseStopOrderByTP - Удалять отложный ордер, если цена достигла уровня ТП (БУ) противоположной сделки.
Переводит в БУ по достижении х1 х2 х3...



то же самое + магик от Vasgenich:
/laboratoriya-profitfx/24/open-source-sovetnik-po-ts-n4-lazy-trader/4083/?do=findComment&comment=69129


Мониторинг в Роботесте

(используется мод 1_LT0043 от Foxonn)

LazyTrader_v1-1.mq41 833 скач.
1_LT0043.rar230 скач.
Тесты_советника_1_LT0043_по_паре_GBPJPY_H4_c_2000-2017.rar260 скач.

Изменено 11 июля, 2017 пользователем Pavel888

#2

В чем главное назначение данного советника, торговля или же проверка прибыльности системы на истории?

#3

Так в теме стратегии кто то вроде уже выложил сову????

Автор#4


В чем главное назначение данного советника, торговля или же проверка прибыльности системы на истории?



Планируется сначала тестить сову, до ума доводить, а потом - в бой :)
так с ТС "начало" произошло, очень хороший пример получился.


Добавлено: 22-04-2013 10:39:28


Так в теме стратегии кто то вроде уже выложил сову????



сова пока в стадии написания, должна скоро быть.
#5

8 пункт, мани менеджмент, было бы неплохо сделать на выбор - фиксированный лот или процент от баланса депозита

#6

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

Автор#7


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



это просто написано много, а по сути версия 1.7. из ТС Начало.
надо добавить день начала и окончания работы сова, и коэффициент соотношения СЛ/ТП.

Добавлено: 22-04-2013 12:57:37

кстати, а вот этот TakeProfitK из Начала - не этот ли коэффициент и есть СЛ/ТП?

тогда только день начала и окончания работы надо добавить.

остальное напишу позже :)

Изменено 22 апреля, 2013 пользователем Fanmeld

#8

Еще надо ввести пункт умножения лота.
Т.е. если цена заиграла и выбила, к примеру, первый бай, то выставляем второй лот умноженный на кэф. который указываем в сове. Вот такой Мартин.
Для тех кто не любит такое ставим "0" и ордер, в данном случае на бай, не откроется.

#9

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

Автор#10


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



вот эта идея хорошая, я на ФФ видел - выбор, либо первая свеча сигнальная, либо вторая. Этим, кстати, решается вопрос о переводе времени на зимнее и летнее.
#11

Еще нужны параметры - минимальный и максимальный размер стопа

#12


Еще нужны параметры - минимальный и максимальный размер стопа



для чего?
и как с этим "жить"? :)
#13

Взял потестить сову из основной ветки, от уважаемых litra и SNZHikari,
ту, что с мартингейлом. Показала не плохие результаты,
но на визуальном тестировании видно, что постоянно выбивает безубыток из за
резких разворотов цены. На графике прибыли длинные ровные "полки".
Хотя, хоть что нибудь, но в эти моменты и можно было заработать.
Приделал к версии с мартингейлом трейлинг, уровень которого выставляется не по пунктово,
а автоматически по уровню свечей с отступом на N свечей от "настоящего" времени.
В результате, сова уже вполне имеет право на жизнь и тестирование как минимум на демо,
остаётся ввести обработку ошибок.
Тест EURJPY H4 с 01.2012 по 21.04.2013, с депо всего 100.

LazyTrader_martin_trailing.mq4456 скач.
TesterGraph.gif

Изменено 23 апреля, 2013 пользователем zilibob4ik

#14



Еще нужны параметры - минимальный и максимальный размер стопа



для чего?
и как с этим "жить"? :)


Если сигнальная свеча длинная, это позволит уменьшить потенциального лося. Если короткая - избежать раннего выбивания стопов.
Я вообще бы предложил сделать универсального пробивного советника - стратегий много, писать кучу сов смысла не вижу. Нужны настройки по входу и выходу , сл/тп и универсальный отключаемый трал.
Насчет мартина не уверен что он тут нужен , тут вся прелесть в надежности и простоте.
#15

Итак, взяли за основу советник "Начало", подкрутили гайки, добавили фичи, и вот результат:

extern double   FixedLot        = 0.1;   // Фиксированный лот, если 0, то рассчёт по ММ
extern double LotsFor1000 = 0.1; // ММ, объём(лот) на 1000 депозита (валюта не имеет значения)
extern double TakeProfitK = 1; // TakeProfit - коеффициент, расстояние между отложками,умноженному на TakeProfitK
extern double StopLossK = 1; // StopLoss - коеффициент, расстояние между отложками,умноженному на StopLossK
extern double UseMartingale = true; // Использовать Мартингейл
extern double Multiplier = 2; // Множитель объёмов, если используется мартингейл
//+------------------------------------------------------------------+
extern int StartHour = 8; // Начало работы (час)
extern int EndHour = 13; // Завершение работы (час)
extern int MaxPips = 30; // Максимальная длина свечи в пунктах, при которой разрешено ставить отложки
extern bool CloseByTime = false; // закрывать по времени, если false, то по трейлингу
extern int CloseHour = 15; // Закрывать открытые ордера
extern int Indent = 15; // Отступ от цены для установки отложенных ордеров
extern bool DeleteOpposite = false; // Удалять вторую откложку, если открылся 1-й ордер
extern bool SetLimits = true; // Ставить лимитные ордера, вместо стоповых
//+------------------------------------------------------------------+
extern string LimitLoss = " ========= Безубыток ========";
extern int LossLimit = 30; // Безубыток
extern int LossPoints = 2; // доп. рункты для безубытка
//+------------------------------------------------------------------+
extern string Trail = " ========= Trailing =========";
extern bool ProfitTrailing = false; // Тралить только профит
extern int TrailingStop = 15; // Фиксированный размер трала
extern int TrailingStep = 2; // Шаг трала
extern bool UseSound = true; // Использовать звуковой сигнал
extern string NameFileSound = "expert.wav"; // Наименование звукового файла
//+------------------------------------------------------------------+
extern int Magic = 123; // Магический номер ордеров
extern string comment = "LazyTrader v1.0"; // Комментарий ордеров
extern int Slippage = 5; // Проскальзывание ордера
//+------------------------------------------------------------------+


Мартингейл тут "мягкий", можно даже сказать нежный :)
Советник не будет до посинения увеличивать лот, а просто начнёт торговать повышенным, пока баланс не придёт к норме...

Также вместо стоповых ордеров можно ставить лимитные:
extern bool     SetLimits       = true;  // Ставить лимитные ордера, вместо стоповых

результат где-то даже лучше...

Параметры подбирайте сами, выставлено абсолютно наобум...

Тест фунта на Н1 за 2013

LazyTrader_v1-0.mq4441 скач.

#16

А настройки дня начала и конца?

#17


А настройки дня начала и конца?



а по русски вопрос задать?
чего "начала"? какого конца?
#18


Насчет мартина не уверен что он тут нужен , тут вся прелесть в надежности и простоте.


Ну так надёжность и простота не меняется, стратегия остаётся не изменна, немного меняется ММ,
но согласитесь, люди занимаются форексом в первую очередь не из за творческого энтузиазма,
а из за возможности получить прибыль.
Если в процессе получения прибыли есть вероятность получить и убытки,
то почему бы не воспользоваться методом, позволяющим компенсировать эти убытки?




Добавлено: 23-04-2013 05:55:07


А настройки дня начала и конца?


litra наверное имел ввиду - Начинаем торговать в понедельник рано утром, закрываем всё открытое в пятницу вечером.
Ну и в настройках соотв начало торгов, и закрытие всего.
(хотя, имхо, эти параметры как раз и неизменны по стратегии)

Изменено 23 апреля, 2013 пользователем zilibob4ik

#19
xbms, вот бы ещё "день открытия торгов" и "день закрытия торгов" прикрутить :)

ЗЫ - :-? меня терзают смутные сомненья... Вроде на пробой должно нам идти в понедельник спозаранку x_x

11111.JPG

Изменено 23 апреля, 2013 пользователем 00000

Автор#20

Первая версия советника и описание настроек помещены в шапку темы.

Добавление параметров "день открытия торгов" и "день закрытия торгов"
ожидается в ближайшие дни.

#21

Здравсвуйте уважаемые,можно ли добавит функцию в советник,чтобы при достжении ТП скажем в 1,5 включался трейлинг,или трейлинг удавка.Спасибо.

#22

Не пойму вот этот параметр, что он значит?
extern int CloseHour = 15; // Закрывать открытые ордера

Автор#23


Не пойму вот этот параметр, что он значит?
extern int CloseHour = 15; // Закрывать открытые ордера



время принудительного закрытия всех открытых ордеров.
#24



Не пойму вот этот параметр, что он значит?
extern int CloseHour = 15; // Закрывать открытые ордера



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

Ну так есть же вот эти параметры, время открытия и время закрытия, зачем ещё один, объясните пожалуйста

Добавлено: 23-04-2013 16:14:21




Не пойму вот этот параметр, что он значит?
extern int CloseHour = 15; // Закрывать открытые ордера



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

Ну так есть же вот эти параметры, время открытия и время закрытия, зачем ещё один, объясните пожалуйста

Забыл добавить
extern int StartHour = 8; // Начало работы (час)
extern int EndHour = 13; // Завершение работы (час)
#25

Продолжаем коллективную разработку
Что бы не путаться с Совой уважаемого xbms
Назвал нашу VeryLazyTrader
Реализован весь бред который был подложен на форуме.
Сова не имеет обработки ошибок, работает с 3х значными котировками по ене
Для правильной работы мартина, должна быть в единственном экземпляре.
Все значения в новых пунктах
Возможно в дальнейшем по мере доработки все ограничения будут убраны.
extern int Indent=200; Отступ в от теней сигнальной свечи
extern int IndentSL=0; Сдвигает стоплосс на заданное число пунктов относительно рекомендованного
extern bool UseFixIndent=false; Включить Фиксированное выставление ордеров
extern int FixIndent=500; Не дожедаясь закрытия первой свечи выставляет отложки на данном расстоянии
extern int NoTrade=1500; Свечи больше заданного размера не считаются сигнальными
extern bool Use2candle=true; Использовать в качестве сигнальной вторую свечу если первая больше NoTrade
extern bool FixLot=false; Использовать фиксированный лот
extern double Lot=0.25; Фиксированый лот если FixLot=true
extern double LotNa10000=0.25; Рассчетный лот на 10000 едениц баланса если FixLot=false
extern bool FairMM=false; Включает "Справедливый" ММ
extern bool FairMartin=false; "Справедливый" ММ рассчитывается после домножения Мартином
extern int Fair=1000; Лот вычесляется по системе лот*(Fair/стоплос)
extern int MinSL=0; Минимальный Стоплос
extern int MaxSL=10000; Максимальный Стоплос
extern double TakeProfitK=3; Отношение ТейкПрофит к СтопЛосс
extern bool UseMartin=true; Использовать Мартенгейл
extern double LotMult=1.3; Множетель Лота для Мартина
extern double balans=0; Включается Мартин пока Баланс не станет равен этому значению.
extern int StartHour=4; Час начала торгов сигнальной будет являться предыдущая 4х часовая свеча.
extern int StartDay=1; День начала торгов
extern int CloseHour=22; Час окончания торгов
extern int CloseDay=5; День окончания торгов
extern int Magic=1221123; Магик
extern int Sleepage=10; Проскальзывание
extern bool AITrailing = true; Использовать Трайлинг стоп (работает не по пунктам, а по свечкам)
extern bool bTrlinloss = false; Использовать трайлинг стоп до того как перешли в безубыток
extern int iTmfrm=60; период, по барам которого следует тралить (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern int iBars_n = 3; кол-во баров, по которым следует тралить
extern int iIndent = 10; отступ от тени бара, на котором размещается стоплосс
extern bool UseBU=true; перевод в безубыток если трайлинг стоп не используется
extern bool UseBU2=false; перевод в стопа на цену открытия+стоплос если цена достигла открытие+2*стоплос

Если что то не понятно спрашивайте.
Просьба если кто-то в процессе тестов выявит ошибки, полезность или безполезность параметров поделится своими результатами.

Добавлено: FixIndent работает неправильно сейчас буду исправлять
Добавлено2: Исправлено.

VeryLazyTrader_v0.1.mq4306 скач.

Изменено 23 апреля, 2013 пользователем SNZHikari

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025