Стратегии и роботы > Пересечение EMA и SMA с трейлинг стопом (TRS)
Пересечение EMA и SMA с трейлинг стопом (TRS)
Да, сберчик без шорта подпортил позицию )))
В последнем вебинаре был момент как прописывать программный стоп и по-моему трейлинг стоп, если не ошибаюсь.
Сам пока не смотрел - занят сильно, но надо вшить эту тему, желательно в ES.
Если есть желающие - помогите написать а я закину в тест на денежку.
В последнем вебинаре был момент как прописывать программный стоп и по-моему трейлинг стоп, если не ошибаюсь.
Сам пока не смотрел - занят сильно, но надо вшить эту тему, желательно в ES.
Если есть желающие - помогите написать а я закину в тест на денежку.
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Ну программный стоп написать просто от цены входа например. Если закрытие бара ниже точки входа на 1000 пунктов или выше на 300 пунктов, закрыть шорт. При условии, что сделка открыта:
А вот организовать трейлинг стоп у меня не получается.
Код: Выделить всё
/// ПРАВИЛО 2
if ( ( (Input1.Close < (AverPrice()-1000)) || // закр сделки по профиту
(Input1.Close > (AverPrice()+300)) ) && AverPrice() > 0 ) // закр сделки по стопу
{
CloseShort();
}
А вот организовать трейлинг стоп у меня не получается.
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Ипонамама писал(а):программный стоп и по-моему трейлинг стоп
Ипонамама писал(а):помогите написать
Это не проблема. Просто код будет уже открыт, в конструктор уже такой код не вернешь и все манипуляции с кодом только в исходнике.
Написал. Есть ньюансы:
- стоплосс задается в шагах цены
- после срабатывания стоплосса позиция в том же направлении не переоткрывается и ожидается сигнал в другую сторону
Провел оптимизацию и тестирование для SBER 1H (см. ниже) на 2000 баров, для других ТФ нужно смотреть
Вообщем вот код
Код: Выделить всё
/**Стратегия основана на определении моментов пересечения быстрой экспоненциальной скользящей средней и медленной экспоненциальной скользящей средней (система "ES"). Особенности:
- сигнал на покупку выдается, если быстрая EMA пересекает медленную SMA снизу вверх;
- сигнал на продажу выдается, если быстрая EMA пересекает медленную SMA сверху вниз;
- при тестировании цена сделки фиксируется как цена закрытия бара, на котором появился сигнал.
- в роботе заявка выставляется после закрытия бара, на котором появился сигнал.
- стоплосс задается в шагах цены
- после срабатывания стоплосса позиция в том же направлении не переоткрывается и ожидается сигнал в другую сторону
Developed by evge;
Algorithm = ТРЕНД;**/
function Initialize()
{
StrategyName = "evge_ES_TRS";
AddParameter("Pfast", 3, "", 1);
AddParameter("Pslow", 75, "", 0);
AddParameter("TRS", 0.5, "", 0); //трейлинг стоп в шагах цены
AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddGlobalVariable("StopLoss", Types.Double, 0.0); //StopLoss цена
AddGlobalVariable("P", Types.Int, 0); //позиция 0 - нет, 1 - long, 2 - short
AddGlobalVariable("NP", Types.Int, 0); //запрет открытия позиции 0 - нет запрета, 1 - long, 2 - short
}
function OnUpdate()
{
// Определяем стоп
if (CurrentPosition() > 0 && P != 1) { P = 1; StopLoss = 0; }
if (CurrentPosition() < 0 && P != 2) { P = 2; StopLoss = 0; }
if (CurrentPosition() == 0) P = 0;
if (P == 1 && ((Input1.Close[0] - TRS) > StopLoss || StopLoss == 0)) StopLoss = Input1.Close[0] - TRS;
if (P == 2 && ((Input1.Close[0] + TRS) < StopLoss || StopLoss == 0)) StopLoss = Input1.Close[0] + TRS;
//
/// ПРАВИЛО 1
if ( NP != 1 && (EMA(Input1.Close, Pfast) > SMA(Input1.Close, Pslow)) )
{
NP = 1;
EnterLong();
}
else
/// ПРАВИЛО 2
if ( NP != 2 && (EMA(Input1.Close, Pfast) < SMA(Input1.Close, Pslow)) )
{
NP = 2;
EnterShort();
}
else
// закрываем Long по StopLoss
if ( (P == 1) && (Input1.Close[0] < StopLoss)) {
CloseLong();
}
else
// закрываем Short по StopLoss
if ( (P == 2) && (Input1.Close[0] > StopLoss)) {
CloseShort();
}
}
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
исправил немного код, незначительно на результат влияет. Проверку поставил на незаданный стоплосс.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Нашёл баги, внес изменения. Надеюсь теперь всё ок.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Да и надо учитывать что стоп этот как и правила открытия позиции срабатывает на закрытии бара, т.е. он так же промежуточные значения не видит пока бар не отрисовался.
Пример
Покупка была на 100р, цена пошла вниз, стоп стоял на 99, но бар был до 95. Цена срабатывания стопа будет 95. Проверяется закрытие бара < стопа.
Пример
Покупка была на 100р, цена пошла вниз, стоп стоял на 99, но бар был до 95. Цена срабатывания стопа будет 95. Проверяется закрытие бара < стопа.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
изменилась тепловая карта оптимизации
TRS = 0.5
TRS = 3
TRS = 0.5
TRS = 3
никогда такого не было и вот опять
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Переадаптировал под роснефть м30 - показатели приемлемые но невысокие. Скорее всего оттого, что после срабатывания тс-а он не иет в реверс а ждет сигнала, но я не уверен. До конца месяца постоит в советнике - если не будет сливать бабло - поставлю в деньги. Его прямой конкурент на ES стоит на деньгах и работает уже три месяца, посмотрим кто будет сильней. Отчет скину.
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
Если имеются другие идеи по работе стратегии могу реализовать
никогда такого не было и вот опять
Re: Пересечение EMA и SMA с трейлинг стопом (TRS)
У меня вопрос. В описании указано, что "Стратегия основана на определении моментов пересечения быстрой экспоненциальной скользящей средней и медленной экспоненциальной скользящей средней". Но судя по коду например:
открывается Лонг, если ЕМА выше SMA, а не пересекает ее. Нет?
Код: Выделить всё
/// ПРАВИЛО 1
if ( NP != 1 && (EMA(Input1.Close, Pfast) > SMA(Input1.Close, Pslow)) )
{
NP = 1;
EnterLong();
}
открывается Лонг, если ЕМА выше SMA, а не пересекает ее. Нет?
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя