Советник MA_TrendLine_01 - Форум о заработке, инвестициях и криптовалюте
Форум о заработке, инвестициях и криптовалюте
animated-gif-3

Вернуться   Форум о заработке, инвестициях и криптовалюте > Практический трейдинг > Все о автоматизации торгового процесса > Архив Практического трейдинга

Важная информация

 
 
Опции темы Опции просмотра
Старый 05.12.2012, 08:54   #1
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Советник оптимизирован на пару EURUSD тайм-фрейм М15.



Как известно, основной недостаток МА – это запаздывание. Если, например, сдвинуть МА назад, то текущие бары останутся без МА и принимать решение становится невозможным. Для устранения этого недостатка, на хвост МА вешаем Трендовую Линию (ТЛ) – как возможное продолжение МА и по ней торгуем.



http://codebase.mql4.com/c/codebase/2012/11/7.gif



Советник работает на пробой ТЛ.

Алгоритм пробоя вверх:

1. Если первый бар выше ТЛ, а второй коснулся или ниже ТЛ, то это пробой вверх. Выше High первого бара с отступом Otstup_pr_prob устанавливаем BuyStop, SL ордера устанавливаем ниже Low первого бара с отступом Otstup_SL_prob.

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

(аналогично - пробой вниз)

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

Если ордер стал прибыльным используем трейлинг-стоп по волнам.



Описание внешних переменных:

extern double Lot_Osn = 0; // 0 - для расчета лота исп. Risk



extern double Risk = 10; //проценты от баланса для расчета нач. лота

extern bool Risk_from_Balance = false; //true - считаем риск от баланса, false - от своб.средств

// можно в ручную задавать направление открытия ордеров:

extern bool Trend_UP = true; // будут открываться только Buy

extern bool Trend_DW = true; // будут открываться только Sell



extern int TP_prob = 100; // Тейк-профит

extern int Otstup_pr_prob = 7; // для формирования отложенного ордера отступ от High первого бара

extern int Otstup_SL_prob = 10; // отступ от 1 бара для SL



extern bool On_Begin_Torg = true; // использовать время для начало торговли

extern int Begin_Torg = 480; // время начала торговли (отступ от 00:00 в минутах)

extern bool On_End_Torg = false; // использовать время для окончания торговли

extern int End_Torg = 30; // время закрытие всех ордеров (отступ от конца дня в минутах)



extern bool comm = true; // выводить комментарии

extern bool sound = true; // озвучивать открытие ордеров

extern int TF_Torg = 15; // тайм-фрейм торговли

extern int MagicNumber = 335580;

extern int Slippage = 5;

//.................................................. ..

extern int Fractal_Bars = 3; // переменная для формирования фракталов, чем больше тем реже фракталы

extern int Na4_Bar_Fract = 1; // номер бара, с которого начинается поиск фрактала

extern bool Out_Grafic = true; // выводить зиг-заг на экран

extern int IndNumb = 10; // префикс для линий зиг-зага

extern int kol_voln = 20; // кол. волн выводимых на экран

//+------------------------------------------------------------------+

extern bool Open_Del_Otl = true; // удалять встречный отложенный при открытии рыночного ордера

extern bool On_Vstr_Otl = false; // открывать встречные отложенные ордера

extern bool Trail_Stop = true; // использовать трейлинг-стоп по волнам зиг-зага

extern int Volna_Trail_Stop = 1; // по какой волне двигать трейлинг-стоп

//+------------------------------------------------------------------+

extern bool Out_MA = true; // выводить MA

extern int Kol_Bar_MA = 100; // сколько баров МА показывать

extern bool Out_Trend_Line = true; // выводить Трендовую Линию

extern string Name_Trend_Line = "TL_1";// имя трендовой линии



extern int Proc_obraz_zwezd = 10; // процент между (Open-Close)/(High-Low) для принятия бара в качестве "звезды"

//+------------------------------------------------------------------+

extern double Min_Tangens_TL_prob = 0.27; // тангенс угла наклона ТЛ, если он меньше этого значения, то не торгуем

extern double Min_Tangens_TL_clos = 0.13;

//+------------------------------------------------------------------+

extern int BackSteps = 4; // номер бара второй коорд. для форм. ТЛ, первая коорд. - это первый бар МА

extern int MA_Period = 40; // параметры МА: период

extern int MA_Shift = -8; // сдвиг

extern int MA_Method = 0;

extern int MA_Applied_Price = 0;

//-------------------------------

//MA_Method: MODE_SMA 0 Простое скользящее среднее

// MODE_EMA 1 Экспоненциальное скользящее среднее

// MODE_SMMA 2 Сглаженное скользящее среднее

// MODE_LWMA 3 Линейно-взвешенное скользящее среднее

//-------------------------------

//MA_Applied_Price: PRICE_CLOSE 0 Цена закрытия

// PRICE_OPEN 1 Цена открытия

// PRICE_HIGH 2 Максимальная цена

// PRICE_LOW 3 Минимальная цена

// PRICE_MEDIAN 4 Средняя цена, (high+low)/2

// PRICE_TYPICAL 5 Типичная цена, (high+low+close)/3

// PRICE_WEIGHTED 6 Взвешенная цена закрытия, (high+low+close+close)/4

//==================================================================





Тест с 01.01.2012 по 11.11.2012 максимальная просадка около 15%:(начальный депозит 10000 конечный 45326)



http://codebase.mql4.com/c/codebase/2012/11/6_2.gif



Добален индикатор МА, который выводит Трендовую линию на экран. А также в нулевой ячейке первого буфера индикатора - тангенс угла наклона ТЛ.

Теперь принцип МА с ТЛ можно использовать в других советниках, используя этот индикатор.
Jago вне форума  
Старый 05.12.2012, 09:09   #2
gama
Интересующийся
 
Регистрация: 31.10.2012
Сообщений: 7
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Автору вопрос: с какой целью вы выложили этого эксперта сюда?

Вы сами тестировали его на деме или на реале? настройки по умолчанию расчитаны на пяти или четырех знак?

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

благодарю за внимание.
gama вне форума  
Старый 05.12.2012, 09:14   #3
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

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

Идея использовать МА как Тредовую Линию мне понравилась, поэтому и дал на обсуждение этот вариант.

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

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



http://codebase.mql4.com/c/codebase/2012/11/10_1.gif



Нумерация баров как обычно - назад от текущего. При образовании нулевого бара, анализируем первый бар. И если он выше ТЛ, а второй бар коснулся (или ниже) ТЛ, то открываем отложенный BuyStop по цене High первого бара + Otstup_pr_prob, стоп-лосс ордера ставим на Low первого бара минус Otstup_SL_prob. Тейк-профит устанавливаем равным TP_prob (из входных переменных).
Jago вне форума  
Старый 05.12.2012, 10:57   #4
NikoTini
Интересующийся
 
Регистрация: 05.12.2012
Сообщений: 5
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Здравствуйте Jago

Тестирую на реале. Часто сделки закрываются по профитному s/l и цена цена идет дальше. В буквальном смысле "закрывает спредом". Думаю доходность может вырасти если стоп будет выставляться не на экстремуме свечи,а с отступом на величину спреда или его среднего значения. Что думаете?
NikoTini вне форума  
Старый 05.12.2012, 14:18   #5
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Как я понял, ордера рано срабатывают по Трейлинг-стопу, для устранения этого, можно сделать небольшой отступ от волн.

Введите новую внешниюю переменную в начале программы:

[color=rgb(226, 8, 0)]extern int Otstup_TS = 2; [/color]

и изменните код внутри программы:

//************************************************** ***********

// трейлинг-стоп по волнам

if (Trail_Stop && mas_ord[OP_BUY] > 0)

{

pr_Trail_Stop=pr_TS_Buy(Volna_Trail_Stop);

if (pr_Trail_Stop>0) ust_TS_Buy(pr_Trail_Stop [color=rgb(226, 8, 0)]- Otstup_TS *Point[/color]);

}



if (Trail_Stop && mas_ord[OP_SELL] > 0)

{

pr_Trail_Stop=pr_TS_Sell(Volna_Trail_Stop);

if (pr_Trail_Stop>0) ust_TS_Sell(pr_Trail_Stop[color=rgb(226, 8, 0)] + Otstup_TS *Point [/color]);

}

//------------------------------------------------------------------
Jago вне форума  
Старый 06.12.2012, 09:47   #6
NikoTini
Интересующийся
 
Регистрация: 05.12.2012
Сообщений: 5
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Спасибо, все получилось.

Правда в тестере с отступом результаты чуть хуже,чем без.

Но это пока ни о чем не говорит,понаблюдаю отличие в реале.

И пожалуйста поясните вот такой момент. Советник запущен на двух терминалах. Вчера им были выставлены ордера sell stop 1.3063



Через несколько часов условия для входа поменялись, видя это, мной в одном из терминалов ордер sell stop 1.3063 был удален в ручную.

Эксперт через некоторое время на место удаленного ордера выставляет ордер sell stop 1,3067

на сей момент имеем в двух разных терминалах два разных ордера, сразу оговорюсь, настройки экспертов одинаковы, ДЦ один.

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

И это он должен сделать самостоятельно?
NikoTini вне форума  
Старый 06.12.2012, 16:36   #7
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Попробуем разобраться. И так, в начале на обоих терминалах были одинаковые условия и оба советника установили одинаковые ордера. Затем на первом терминале вы ордер удалили, а на втором оставили. Как я понял на первом терминале снова появились условия для установки ордера и он его поставил. Почему он не удалил ордер на втором терминале? Потому что не появились условия для его удаления. Обычно условие на удаление текущего ордера - это условие для установки противоположного ордера.
Jago вне форума  
Старый 07.12.2012, 10:14   #8
NikoTini
Интересующийся
 
Регистрация: 05.12.2012
Сообщений: 5
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Теперь понятно,критерий- это условия для противоположного ордера. Т.е. должен появится противоположный сигнал.

А если появляются новые условия (не исключено,что лучшие) для установки ордера в том же направлении?

Советник его проигнорирует?
NikoTini вне форума  
Старый 07.12.2012, 10:18   #9
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

В этой версии советника - проигнорирует. В других версиях, возможно нет....
Jago вне форума  
Старый 07.12.2012, 11:58   #10
NikoTini
Интересующийся
 
Регистрация: 05.12.2012
Сообщений: 5
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

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

Вы пояснили,что при появлении противоположного сигнала,скажем на buy, ордер на sell будет удален советником.

Сегодня возникла ситуация когда советник выставил ордер на buy stop и также остался ордер sell stop. т.е. удален не был.

Это баг или так и должно быть?
NikoTini вне форума  
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Загрузка...


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
vB.Sponsors

© 2009-2020 «ACRYPTOINVEST.COM»
сообщество трейдеров, инвесторов и игроков