MQL4 - automated forex trading   /  

Code Base

Code Base  Советники  AK47_A1 Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот индикатор для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
AK47_A1
Автор: andrewsoft (03.01.2008 11:52)
Рейтинг: 9
Скачано: 9834
Скачать:
 AK47_A1.mq4 (28.3 Kb) View

Добрый день,

сделал свой первый советник (не пипсовка, t/p 100), запустил на EURUSD M1 за 2007 год (01.01.2007 - 25.11.2007),

и очень удивился - профит порядка 1 млн. USD при начальном депозите 3000!

За 2005-2006, и декабрь 2007 года сливает, увы.

Попытки применить стоп-лоссы, закрытия по флетам, ограничение по времени и др. ухудшают ситуацию.

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

Есть у кого идеи по повышению надежности советника без отсечения потенциально "хороших" ордеров?

Не сочтите за труд, поделитесь.

С уважением.

P.S.

Настройки максимально агрессивны, уровень риска можно снижать установками:

а) MaxLots - уменьшать вплоть до 1.

б) LotsRiskReductor - увеличивать, до 5-10

в) SpanGator - увеличивать до 3-5.

Хотя, уменьшение риска в одноордерной системе  не ведет к улучшению системы в целом.

Открытый ордер блокирует открытие других ордеров, как прибыльных, так и убыточных.

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

количества ордеров.

 

 

 

40 комментариев: 1 2 3 4   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий
asystem2000 писал(а):
stace писал(а):
Можно вашу версию посмотреть?
А то нету в этой версии чего то Демаркер период и WPR - period
Конечно могу выложить исправленный вариант. Но правильно было бы сначала спросить разрешение у автора.
В принципе изменения не существенны. Введены два новых внешних параметра, которые можно настраивать при старте советника.
И в коде, в том месте, где программа запрашивает:
demarkerv[ib] = iDeMarker(NULL, 0, DeMarkPer, ib) DeMarkPer - это и есть внешняя переменная. В оригинале стояла цифра 14
wprv[ib] = -iWPR(NULL, 0, WPR_Per, ib+1) / 100; WPR_Per- это есть внешняя переменная для настройки WPR. В оригинале стояла цифра 13
Объявить эти внешние переменные можно примерно так в начале программы
extern int DeMarkPer = 14;
extern int WPR_Per = 14;

да ради бога, выкладывайте с параметрами, что тут такого

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

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

Пока нарыл из ответов 2 способа:

1) анализ вышележащих трендов

2) ограничить кол-во ордеров в одну сторону, паузы между ордерами

если еще что то в таком духе появится - пишите, буду благодарен :)


08.01.2008 15:37 andrewsoft
jerrimix писал(а):
Идея тут одна может быть, ты смотришь только один тайм фрейм М1, попробуй смотреть сташий таймфрейм и вставать в рынок только по направлению тренда на старшике.


а старший какого уровня? если берешь M5-M15-H1 - то он быстро меняется,

а если выше, то его трудно определить

дневной тренд можно гарантированно выявить через дней 3-5, когда поезд уже ушел.

В том то вся и загвоздка .

08.01.2008 15:17 andrewsoft
asystem2000 писал(а):

Ну наверное уже вдоволь нахвалили автора, подняли рейтинг советника на сайте.

А теперь разрешите немного критики и пару конструктивных замечаний.

Начнем с конструктивных замечаний:

1. Изучение сделок позволяет выявить ряд четких ошибочных сделок:

1. Сделка открывается без проверки какое положение занимает текущая цена относительно челюсти аллигатора (синий мувинг).

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

2. Отсуствует временной промежуток (выдержка) между закрытием сделки и новым открытием в одну и ту же сторону.

Для примера: Если открыта длинная позиция, то при тейк профите около 100, как Вы понимаете, на EUR вы будете очень близки к суточному пику. Поэтому чаще всего сделка закрывается где- то на последнем подъеме. Далее, если этот подъем еще продолжается, советник открывает новую длинную позицию. А дальше лось... Подъем не поднимается выше первого Трейлинга и разворачивается на коррекцию. А так как Стоп лосс у данного советника большой, то и лось очень чувствительный.

Выводы и рекомендации:

1. Ввести проверку текущей цены относительно челюсти аллигатора и открывать сделки только в ту сторону по которую находится текущая цена.

Раз уж советник использует елементы Дедушки Вильямса, то можно быть последовательным и использовать другие елементы Вильямся, а именно АО и АС, как дополнительный фильтр, и открывать позиции в согласии с цветными рекомендациями дедушки Вильямса.

2. Ввести временную выдержку между закрытием сделки и открытием новой в том же направлении. Для минуток этот промежуток может составлять от 20 до 40 баров.

Общие критические замечания:

1. Скажем так, что при таких Профитах, Стопах и Трейлингах, многие советники на минутке будут показывать хорошие результаты. Так как при таких величинах можно поймать хорошие 4-х часовые тренды. Но смотреть без валидола на такие картинки и просадки не возможно. Торговать так может только механическая система. В подтверждение этому, посмотрите на 4-х часовике какие тренды развивались в 2007 году и все станет ясно.

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

По моему мнению, автор будет (или уже сделал) более детально алгоритмизировать массив значений Демарка и WPR, так как более глубокий анализ этих значений позволить значительно улучшить точку входа.

спасибо за критику, похвалы мне особо не нужны, все ради наживы делается :)

пробовал аллигатор использовать строго по дедушке, фракталы там ниже или выше :) очень мало сделок открывает однако, нет риска - нет шампанского.

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

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

Пока вижу только идею ограничить количество ордеров в одну сторону. Хотя и это пробовал, тоже не дает 100 % гарантии. Ведь может быть так, что ордер, открытый глуповато,

спасает от ордера, открытого по идиотски :)

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


08.01.2008 15:07 andrewsoft
asystem2000 писал(а):

Уважаемый andrewsoft!

Хотелось бы отметить Ваш высоко-классный подход к программированию. Не часто встретишь такой структурированный и красивый код. Наверное Вы профи программист и при реализации этого проекта без UML не обошлось.

Однако к Вам вопрос по коду:

Функция PrepareIndicators()

Отривок:

// DeMArker and WPR

lookback = 0;

ArrayResize(demarkerv, lookback+1);
ArrayResize(wprv, lookback+1);

for(ib=0; ib<=lookback; ib++)

и далее по тексту.

Мне что-то не совсем понятно использование lookback. Вы вначале его обнуляете. Затем настраиваете Массивы demarkerv и wprv на один элемент.

Далее в коде я встречал места где Вы обращаетесь к этим массивам для выборки min,max. Но что можно выбрать из одного элемента ?...

Возможно я что-то не понимаю. Проясните ситуации.

Тестирую сейчас Ваш советник на разных валютных парах. О результатах сообщу.

Всего наилучшего

-------------------

Обошлось без UML. не так страшен черт :)

lookback возник потому что я пробовал массивы значений демаркера и wpr разной длины, остановился на массиве из одного элемента.

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

Чего я сам не понимаю, почему советник так чувствителен к этим значениям на минутном тренде. График этих индикаторов выглядит как случайная кривая.

Думаю нет смысла оптимизировать по демаркеру и wpr, их чуть тронь и все валится. Демаркер к примеру работает строго при 0.5. Поставьте хоть 0.49, советник сливает.


08.01.2008 15:00 andrewsoft
Lukyanov писал(а):
Ставлю настройки на М1 EURNZD:
Lots=0
LotsRiskReductor=1
MaxOrders=3
MaxLots=1
TakeProfit=105
StopLoss=50
TrailingStop=70
SpanGator=1
SlipPage=3
DeMarkPer=54
WPR_Per=14

Правильно делает, что не торгует. Однако Вы правильно заметили, что дело тут в SlipPage.

Автор советника приравнял SlipPage к спреду валютной пары. Если не ошибаюсь у вашей пары спред 7 или 10 ( не знаю, проверьте). Поэтому ставьте в SlipPage спред Вашей пары.

Вы увеличили до 20. Ну уж это слишком.

Кроме того, перед началом сделайте оптимизацию параметров для Вашей пары, а уж потом тестируйте.

Чтобы не сильно загружать оптимизацию, используйте изменение следующих параметров:

1. Take Profit - от 30 до 150 шаг 10

2. Stop Loss - от 20 до 50 шаг 10

3. Trail Stop - от 30 до 100 шаг 10

4. Span Gato - от 0.5 до 6 шаг 0.5

5. Demarker - от 10 до 75 шаг 5

6. WPR - от 10 до 75 шаг 5

Приготовьтесь, что оптимизация займет около часа, а то и больше (зависит от компа)

07.01.2008 22:59 asystem2000
Ставлю настройки на М1 EURNZD:
Lots=0
LotsRiskReductor=1
MaxOrders=3
MaxLots=1
TakeProfit=105
StopLoss=50
TrailingStop=70
SpanGator=1
SlipPage=3
DeMarkPer=54
WPR_Per=14

Не торгует:

16:29:26 2007.02.12 13:42 AK47_A1 EURNZD,M1: OrderSend error 138
16:29:26 2007.02.12 13:43 AK47_A1 EURNZD,M1: Alligator Jaw error = 138; desc = requote
16:29:26 2007.02.12 13:46 AK47_A1 EURNZD,M1: OrderSend error 138
16:29:26 2007.02.12 13:47 AK47_A1 EURNZD,M1: Alligator Jaw error = 138; desc = requote
16:29:26 2007.02.12 13:57 AK47_A1 EURNZD,M1: OrderSend error 138
16:29:26 2007.02.12 13:58 AK47_A1 EURNZD,M1: Alligator Jaw error = 138; desc = requote
16:29:26 2007.02.12 14:03 AK47_A1 EURNZD,M1: OrderSend error 138

Меняю SlipPage на 20:




07.01.2008 12:35 Lukyanov

Ну наверное уже вдоволь нахвалили автора, подняли рейтинг советника на сайте.

А теперь разрешите немного критики и пару конструктивных замечаний.

Начнем с конструктивных замечаний:

1. Изучение сделок позволяет выявить ряд четких ошибочных сделок:

1. Сделка открывается без проверки какое положение занимает текущая цена относительно челюсти аллигатора (синий мувинг).

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

2. Отсуствует временной промежуток (выдержка) между закрытием сделки и новым открытием в одну и ту же сторону.

Для примера: Если открыта длинная позиция, то при тейк профите около 100, как Вы понимаете, на EUR вы будете очень близки к суточному пику. Поэтому чаще всего сделка закрывается где- то на последнем подъеме. Далее, если этот подъем еще продолжается, советник открывает новую длинную позицию. А дальше лось... Подъем не поднимается выше первого Трейлинга и разворачивается на коррекцию. А так как Стоп лосс у данного советника большой, то и лось очень чувствительный.

Выводы и рекомендации:

1. Ввести проверку текущей цены относительно челюсти аллигатора и открывать сделки только в ту сторону по которую находится текущая цена.

Раз уж советник использует елементы Дедушки Вильямса, то можно быть последовательным и использовать другие елементы Вильямся, а именно АО и АС, как дополнительный фильтр, и открывать позиции в согласии с цветными рекомендациями дедушки Вильямса.

2. Ввести временную выдержку между закрытием сделки и открытием новой в том же направлении. Для минуток этот промежуток может составлять от 20 до 40 баров.

Общие критические замечания:

1. Скажем так, что при таких Профитах, Стопах и Трейлингах, многие советники на минутке будут показывать хорошие результаты. Так как при таких величинах можно поймать хорошие 4-х часовые тренды. Но смотреть без валидола на такие картинки и просадки не возможно. Торговать так может только механическая система. В подтверждение этому, посмотрите на 4-х часовике какие тренды развивались в 2007 году и все станет ясно.

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

По моему мнению, автор будет (или уже сделал) более детально алгоритмизировать массив значений Демарка и WPR, так как более глубокий анализ этих значений позволить значительно улучшить точку входа.

06.01.2008 18:23 asystem2000
stace писал(а):
Можно вашу версию посмотреть?
А то нету в этой версии чего то Демаркер период и WPR - period
Конечно могу выложить исправленный вариант. Но правильно было бы сначала спросить разрешение у автора.
В принципе изменения не существенны. Введены два новых внешних параметра, которые можно настраивать при старте советника.
И в коде, в том месте, где программа запрашивает:
demarkerv[ib] = iDeMarker(NULL, 0, DeMarkPer, ib) DeMarkPer - это и есть внешняя переменная. В оригинале стояла цифра 14
wprv[ib] = -iWPR(NULL, 0, WPR_Per, ib+1) / 100; WPR_Per- это есть внешняя переменная для настройки WPR. В оригинале стояла цифра 13
Объявить эти внешние переменные можно примерно так в начале программы
extern int DeMarkPer = 14;
extern int WPR_Per = 14;

06.01.2008 16:59 asystem2000

у меня почемуто он нормально работает только до 29 ноября этого года потом просто провал и фсё никаких сделок дальше

06.01.2008 16:49 tormovies

да, не плохой советник, не плохой...

я без оптимизации прогнал на всех тиках

с 1.01.2000 по 5.01.2008 Евро\Йена на М5

Впечатляет.

Я не программер, но доработка нужна

06.01.2008 14:44 exa839