Советник Wave Trend (работает на EUR/USD на М5)

Статус
Закрыто для дальнейших ответов.

Buldakov

Местный житель
Предлагаю вашему вниманию Советник Wave_Trend
Работает по паре EUR/USD на М5
Ниже приводится сам советник и индикатор.

Данный советник был написан на основе книги Д.Маккормик "Энциклопедия торговых стратегий". Отдельно были протестированы сигналы на открытие и закрытие позиций. Затем они были объединены вместе. Критерием написания кода являлось получение максимального отношения прибыли к значению просадки.
 

Вложения

  • Wave_Trend_s1a.mq4
    27,5 КБ · Просмотры: 677
  • Wave_Trend_i1a.mq4
    13,6 КБ · Просмотры: 697
Последнее редактирование модератором:

Novikov

Гуру форума
Если я правильно понял, то s1a - советник, а i1a - индикатор?

Если не затруднит, объясни пожалуйста, какие параметры необходимо оптимизировать, в каком диапазоне и какой использовать шаг?

Hours_MA =26; //Период скользящей средней (час)
extern int kg =2; //Коэффициент гармоники скользящей средней (час)
extern int Alfa_MA =4; //Угол наклона скользящей средней
extern int Fast_MACD =6; //Период быстрой скользящей средней (час)
extern int Slip =3; //Проскальзывание (час)
extern int Signal_MACD =23; //Период сигнальной скользящей средней (час)
extern int Profit_const =1000; //Величина прибыли в долларах на 1 лот.
extern double Profit_var =0.4; //Величина прибыли в долях коридора.
 

Buldakov

Местный житель
s1a - это советник. i1a - это индикатор.

Hours_MA от 1 часа до 100 часов с шагом 1 час
kg от 1 до 6
Alfa_MA от минус 10 до плюс 50 с шагом 2
Fast_MACD от 1 часа до 10 часов с шагом 1 час
Slip от 1 часа до 10 часов с шагом 1 час
Signal_MACD от 1 часа до 100 часов с шагом 1 час
Profit_const от 0 до 1000 долларов с шагом 50 долларов
Profit_var от 0 до 1 с шагом 0.1

Эти предельные границы (в общем виде). тестировал на 5 минутках по ценам открытия.В советнике используется только цены открытия.
 
Последнее редактирование:

Novikov

Гуру форума
Slip от 1 часа до 10 часов с шагом 1 час

А вы в курсе, что обычно в советниках "Slip" означает проскальзывание цены в пунктах, а не как не часы!?
И если я не ошибаюсь, то данный параметр не оптимизируется, а просто выставляется на усмотрение трейдера, обычно в диапазоне 1-2 пункта, для 4х зн. котировок и 5-10 пунктов для 5и зн. котировок.
Об этом даже в комментариях говорится!
 

Buldakov

Местный житель
Проскальзывание в пунктах называется не "Slip" а "slippage" и оно действительно 5-10 пт. для 5 значных котировок.
Тогда вопрос к вам. Если есть 2 скользящие средние с периодом 20 часов и фазовым сдвигом между собой 2 часа. Как вы назовете переменную этого фазового сдвига? И почему например не измерять ее в часах, а не в градусах или радианах?
 

Novikov

Гуру форума
Прогнал оптимизацию за 3 последних месяца по EURUSD, GBPUSD, AUDUSD
У всех доход за этот период около 18-20% при просадке 2-3% - это так и должно быть?
Или можно как-то увеличить доход или агрессивность?
 

Buldakov

Местный житель
Гонял только на EUR/USD и на акциях газпрома. доходность менялась в диапазоне 100 - 1000 процентов за пол года.(при оптимальных параметрах).

Увеличить агрессивность - можно путем увеличения значения переменной n_Lots=1 в блоке 1.
 

Novikov

Гуру форума
Спасибо за советник, вроде бы не плохо себя показывает!
Думаю, позже поставлю на VPS на демо и выложу здесь мониторинг.
Хочу поставить на 5-8 пар - какие можешь посоветовать?
И какой начальный депозит необходим для одной пары?

Будь так любезен, объясни эти параметры:
extern int Profit_const =1000; //Величина прибыли в долларах на 1 лот.
extern double Profit_var =0.4; //Величина прибыли в долях коридора.
как, что, зачем и почему?
и как работает параметр n_Lots=1 ?
Заранее благодарю!
 

Buldakov

Местный житель
Повторюсь еще раз. Тестировал только на евро доллар.
Минимальный депозит взять больше уровня максимальной просадки хотя-бы раза в 2.
для лота размером 0.01 это примерно 100 - 200 долларов.

Profit_const и Profit_var задают размер прибыли.
Например при лоте=1.00 прибыль 1000 долларов
при лоте 0.01 прибыль 10 долларов.
А второй параметр показывает как прибыль считается в зависимости от ширины коридора BB.
Общая прибыль считается так:
t=Profit_const+Profit_var*((Hi_BB-Lo_BB)/Point);
t_profit1=n_Lots*Step*t*1.0;

По поводу n_Lots.
Так от него зависит размер лота.
Lots=1*n_Lots*Step;
 

Novikov

Гуру форума
Почему бы сразу параметр
int n_Lots=1; //Размер первоначального лота в целых единицах шага лота.
не прописать как
extern int n_Lots=1; //Размер первоначального лота в целых единицах шага лота.
и тогда во внешних переменных, появляется еще один параметр n_Lots.
На мой взгляд, удобнее для оптимизации!
я ставлю от 1 до 10 с шагом 1 и тогда можно поставить "максимальную просадку" такую, какая устраивает! я ставил 10% - за 3 последних месяца доход около 100% по одной паре EURUSD.
 

ponomarenkoroman

Почетный гражданин
if(Year()<2012 && Month()<06) return(0);//Год и месяц начала тестирования //

автор жжет :) а оптить сову как ? по настоящему? :)

П.С. как пример ДЦ Альпари, евро/бакс, 2011г, 1000$, 1:100, 0.01 --- на выходе ничего нет по $
 

Вложения

  • Wave_Trend 2011 дефолт.jpg
    Wave_Trend 2011 дефолт.jpg
    55,6 КБ · Просмотры: 633
Последнее редактирование:

Buldakov

Местный житель
Никто не мешает вставить n_Lots во внешние переменные. Просто добавится лишняя переменная для оптимизации.

А по поводу года и месяца начала тестирования - поставьте вместо 2012 какой нибудь другой год - например 1980. или закоментируйте данную строку.
 

Novikov

Гуру форума
Поставил на 3 пары!
Первый торговый день не впечатлил!
Ордер по AUDUSD зашел в + более 2%, а в итоге получился маааааленький минус за день :confused:

Будем дальше посмотреть, что из этого выйдет!
 

Вложения

  • Wave_Trend.jpg
    Wave_Trend.jpg
    160,5 КБ · Просмотры: 496

Novikov

Гуру форума
Продолжю наблюдение

Просадка пока удовлетворительная - до 13% доходила.
Будем смотреть за развитием ситуации!
Пока по паре EURUSD это выглядит так:
 

Вложения

  • Wave_Trend.jpg
    Wave_Trend.jpg
    169,8 КБ · Просмотры: 596

Buldakov

Местный житель
Очень странное поведение. между первой и второй сделкой должны быть по теории еще открыты и закрыты хотя бы 2 сделки на покупку. А третьей сделки вроде не должно было быть.
Просьба скинуть при каких настройках запустили советника. (содержимое блока 1)
мои настройки были такие:

extern int Hours_MA =26;
extern int kg =2;
extern int Alfa_MA =4;
extern int Fast_MACD =6;
extern int Slip =3;
extern int Signal_MACD =23;
extern int Profit_const =1000;
extern double Profit_var =0.4;

1 2012.12.10 01:50 sell 1 0.01 1.28980 0.00000 0.00000 0.00 10000.00
2 2012.12.11 12:05 buy 2 0.01 1.29724 0.00000 0.00000 0.00 10000.00
3 2012.12.12 01:30 close 2 0.01 1.30049 0.00000 0.00000 3.20 10003.20
4 2012.12.12 14:20 buy 3 0.01 1.30373 0.00000 0.00000 0.00 10003.20
5 2012.12.13 03:10 close 3 0.01 1.30628 0.00000 0.00000 2.40 10005.60
6 2012.12.13 23:59 close at stop 1 0.01 1.30781 0.00000 0.00000 -18.01 9987.60

последнюю 6 позицию можно не считать.
 
Последнее редактирование:

Novikov

Гуру форума
Очень странное поведение. между первой и второй сделкой должны быть по теории еще открыты и закрыты хотя бы 2 сделки на покупку. А третьей сделки вроде не должно было быть.
Просьба скинуть при каких настройках запустили советника. (содержимое блока 1)
мои настройки были такие:

extern int Hours_MA =26;
extern int kg =2;
extern int Alfa_MA =4;
extern int Fast_MACD =6;
extern int Slip =3;
extern int Signal_MACD =23;
extern int Profit_const =1000;
extern double Profit_var =0.4;

1 2012.12.10 01:50 sell 1 0.01 1.28980 0.00000 0.00000 0.00 10000.00
2 2012.12.11 12:05 buy 2 0.01 1.29724 0.00000 0.00000 0.00 10000.00
3 2012.12.12 01:30 close 2 0.01 1.30049 0.00000 0.00000 3.20 10003.20
4 2012.12.12 14:20 buy 3 0.01 1.30373 0.00000 0.00000 0.00 10003.20
5 2012.12.13 03:10 close 3 0.01 1.30628 0.00000 0.00000 2.40 10005.60
6 2012.12.13 23:59 close at stop 1 0.01 1.30781 0.00000 0.00000 -18.01 9987.60

последнюю 6 позицию можно не считать.

Вот мои настройки:

extern int Hours_MA =25;
extern int kg =1;
extern int Alfa_MA =49;
extern int Fast_MACD =9;
extern int Slip =2;
extern int Signal_MACD =67;
extern int Profit_const =1000;
extern double Profit_var =0.8;
extern int n_Lots =6

Ордер Sell 0.24 закрылся в минусе.
А вот скрин, как закончилась неделя (-13%):
 

Вложения

  • Wave_Trend_2.jpg
    Wave_Trend_2.jpg
    163,5 КБ · Просмотры: 226

Buldakov

Местный житель
Прогнал с вашими настройками.
Не знаю по каким критериям их подбирали.
Я могу только рассказать, как подбирал свои.
extern int kg должна быть обязательно больше 1. Например 2,3,4,5,6 - это величина обратная номеру гармоники Hours_MA.
Оптимизирую на истории около 5 - 6 мес.Добиваюсь отношения прибыли к максимальной просадке в районе 3 - 10. Например Прибыль 500 дол. Просадка 60 дол. Данные коэффициенты действуют примерно 2 недели - 1 месяц. После этого прогоняю на истории за 6 мес. и нахожу новые коэффициенты. Признаком стабильной работы советника на истории - является наличие сделок увеличенного обьема в размере не более 20 процентов количества всех сделок.
 

Novikov

Гуру форума
kg оптимизировал от 1 до 6, как вы ранее писали.
попробую от 2 до 6 поставить.
при оптимизации беру последние 3 месяца
про коэффициент учту на будущее!
 
Статус
Закрыто для дальнейших ответов.
Верх