Перейти к содержимому


AMarkets

Sidebar

<a href="https://www.instaforex.org/ru/">??????????? ??????</a>





  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 Jago

Jago

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • 1 спасибо

Отправлено 05 Декабрь 2012 - 07:57

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

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

Изображение

Советник работает на пробой ТЛ.
Алгоритм пробоя вверх:
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)

Изображение

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

#2 gama

gama

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
  • 1 спасибо

Отправлено 05 Декабрь 2012 - 08:12

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

#3 Jago

Jago

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • 1 спасибо

Отправлено 05 Декабрь 2012 - 08:17

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

Изображение

Нумерация баров как обычно - назад от текущего.  При образовании нулевого бара, анализируем первый бар. И если он выше ТЛ, а второй бар коснулся (или ниже) ТЛ, то открываем отложенный BuyStop по цене High  первого бара + Otstup_pr_prob, стоп-лосс ордера ставим на Low первого бара минус Otstup_SL_prob. Тейк-профит устанавливаем равным TP_prob (из входных переменных).

#4 NikoTini

NikoTini

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
  • 1 спасибо

Отправлено 05 Декабрь 2012 - 10:00

Здравствуйте Jago
Тестирую на реале. Часто сделки закрываются по профитному  s/l и цена цена идет дальше. В буквальном смысле "закрывает спредом". Думаю доходность может вырасти если стоп будет выставляться не  на экстремуме свечи,а с отступом на величину спреда или его среднего значения. Что думаете?

#5 Jago

Jago

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • 1 спасибо

Отправлено 05 Декабрь 2012 - 13:21

Как я понял, ордера рано срабатывают по Трейлинг-стопу, для устранения этого, можно сделать небольшой отступ от волн.
Введите новую внешниюю переменную в начале программы:
extern int Otstup_TS = 2;
и изменните код внутри программы:
//*************************************************************
// трейлинг-стоп по волнам
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 -  Otstup_TS *Point);
}

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  +  Otstup_TS *Point );
}
//------------------------------------------------------------------

Спасибо от 1 Пользователь:

#6 NikoTini

NikoTini

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
  • 1 спасибо

Отправлено 06 Декабрь 2012 - 08:50

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

Через несколько часов условия для входа поменялись, видя это, мной в одном из терминалов ордер sell stop 1.3063 был удален в ручную.
Эксперт через некоторое время на место удаленного ордера выставляет ордер sell stop 1,3067
на сей момент имеем в двух разных терминалах два разных ордера, сразу оговорюсь, настройки экспертов одинаковы, ДЦ один.
Подскажите,ведь по идее при изменении сигнала на вход советник должен удалить ордер уже не соответствующий условиям и выставить новый?
И это он должен сделать самостоятельно?

Сообщение отредактировал NikoTini: 06 Декабрь 2012 - 08:51


#7 Jago

Jago

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • 1 спасибо

Отправлено 06 Декабрь 2012 - 15:39

Попробуем разобраться. И так, в начале на обоих терминалах были одинаковые условия и оба советника установили одинаковые ордера. Затем на первом терминале вы ордер удалили, а на втором оставили. Как я понял на первом терминале снова появились условия для установки ордера и он его поставил. Почему он не удалил ордер на втором терминале? Потому что не появились условия для его удаления. Обычно  условие на удаление текущего ордера - это условие для установки противоположного ордера.

#8 NikoTini

NikoTini

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
  • 1 спасибо

Отправлено 07 Декабрь 2012 - 09:17

Теперь понятно,критерий- это условия для противоположного ордера. Т.е. должен появится противоположный сигнал.
А если появляются новые условия (не исключено,что лучшие) для установки ордера в том же направлении?
Советник его проигнорирует?

#9 Jago

Jago

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • 1 спасибо

Отправлено 07 Декабрь 2012 - 09:21

В этой версии советника - проигнорирует. В других версиях, возможно нет....

#10 NikoTini

NikoTini

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
  • 1 спасибо

Отправлено 07 Декабрь 2012 - 11:01

Хотелось бы вернуться к разговору о критерии выставления противоположного ордера.
Вы пояснили,что при появлении противоположного сигнала,скажем на buy, ордер на sell будет удален советником.
Сегодня возникла ситуация когда советник выставил ордер на buy stop и также остался ордер sell stop. т.е. удален не был.
Это баг или так и должно быть?





Темы с аналогичным тегами автоматическая торговля, оптимизация советника, МА, ЕМА, флет, евро, доллар, разворот, тик, бар