Стратегии и роботы > Усреднение в Alfa_MA_SW

Обсуждение, описание стратегий и роботов, идеи для стратегий
GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Усреднение в Alfa_MA_SW

Непрочитанное сообщение GrantNew » 12 июл 2019, 12:10

Добрый день! Не смог восстановить свой старый аккаунт, почему то письмо на почту не приходит.

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


Код: Выделить всё

/**
Пересечение быстрой простой скользящей средней и медленной взвешенной скользящей средней.
Сигналы и особенности:
- сигнал на открытие позиции ЛОНГ выдается, если быстрая SMA с параметром Pfast больше WMA с параметром Pslow;
- сигнал на открытие позиции ШОРТ выдается, если быстрая SMA с параметром Pfast меньше WMA с параметром Pslow;
- при тестировании цена сделки фиксируется как цена закрытия бара, на котором появился сигнал;
- параметры, установленные  "по умолчанию"-  не оптимизированы;
- в роботе заявка выставляется после закрытия бара, на котором появился сигнал.
Developed by AlfaDirect;
Algorithm = ТРЕНД;
Hash code 8B727C899C24A8B46E40F0FBE692023A
**/
function Initialize()
{
   StrategyName = "Alfa_MA_SW";
   AddParameter("Pfast", 9, "быстрая sma", 1);
   AddParameter("Pslow", 29, "медленная wma", 1);
   AddInput("Input1", Inputs.Candle, 15, true, "ROSN=МБ ЦК");
   LongLimit = 1;
   ShortLimit = -1;
   AddChartIndicator("SMA", new Dictionary <string, string>{{"Period", "Pfast"}});
   AddChartIndicator("WMA", new Dictionary <string, string>{{"Period", "Pslow"}});
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (SMA(Input1.Close, Pfast) >= WMA(Input1.Close, Pslow)) && (Pfast < Pslow) )
   {
      EnterLong();
   }

   /// ПРАВИЛО 2
   if ( (SMA(Input1.Close, Pfast) < WMA(Input1.Close, Pslow)) && (Pfast < Pslow) )
   {
      EnterShort();
   }

}

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 12:14

Приветствую!

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

GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение GrantNew » 12 июл 2019, 12:23

Ну по первому правилу открывается позиция в лонг, например на 20 контрактов, она становится убыточной например на 2процента, далее докупаем еще на 20, аналогично в позиции Шорт. Возможен ли такой алгоритм, либо что то может быть лучше в данном случае

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 13:09

1. Как закрывать позицию, всё так же по сигналу в противоположную сторону?
2. Усреднять 1 раз или постоянно при дальнейшем уменьшении позиции на %?
3. Фиксированный лот (при 20 докупка 20, 40 докупка 20, 60 докупка 20 и т.д.) или именно усреднение, учитывая текущую позицию (при 20 докупка 20, при уже 40 докупка 40 и т.д.)?
никогда такого не было и вот опять

GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение GrantNew » 12 июл 2019, 13:16

1. Да, закрывать по сигналу в противоположную сторону.
2. Усреднять один раз
3. Фиксированный лот, например 20, докупка 20

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 13:17

Если делать по описанному алгоритму, то получится вот это:

Код: Выделить всё

/**
Пересечение быстрой простой скользящей средней и медленной взвешенной скользящей средней.
Сигналы и особенности:
- сигнал на открытие позиции ЛОНГ выдается, если быстрая SMA с параметром Pfast больше WMA с параметром Pslow;
- сигнал на открытие позиции ШОРТ выдается, если быстрая SMA с параметром Pfast меньше WMA с параметром Pslow;
- при тестировании цена сделки фиксируется как цена закрытия бара, на котором появился сигнал;
- параметры, установленные  "по умолчанию"-  не оптимизированы;
- в роботе заявка выставляется после закрытия бара, на котором появился сигнал.
Developed by AlfaDirect;
Algorithm = ТРЕНД;
**/

function Initialize()
{
   StrategyName = "Alfa_MA_SW";
   AddParameter("Pfast", 9, "быстрая sma", 1);
   AddParameter("Pslow", 29, "медленная wma", 1);
   AddParameter("LotStart", 20, "шт открытия позиции", 1);
   AddParameter("LotLoss", 20, "шт докупки при убытке L%", 1);
   AddParameter("L", 2, "L% потерь для старта докупки", 1);
   AddInput("Input1", Inputs.Candle, 15, true, "ROSN=МБ ЦК");
   LongLimit = 40;
   ShortLimit = -40;
   AddChartIndicator("SMA", new Dictionary <string, string>{{"Period", "Pfast"}});
   AddChartIndicator("WMA", new Dictionary <string, string>{{"Period", "Pslow"}});
}

function OnUpdate()
{
   var CP = CurrentPosition();
   /// ПРАВИЛО 1
   if ( CP <= 0 && (SMA(Input1.Close, Pfast) >= WMA(Input1.Close, Pslow)) && (Pfast < Pslow) )
   {
      EnterLong(LotStart);
   }

   /// ПРАВИЛО 2
   if ( CP >= 0 && (SMA(Input1.Close, Pfast) < WMA(Input1.Close, Pslow)) && (Pfast < Pslow) )
   {
      EnterShort(LotStart);
   }
   
   if (CurrentPLper() <= -L && Math.Abs(CP) == LotStart)
   {
      if (CP > 0) EnterLong(LotLoss); else EnterShort(LotLoss);      
   }

}


Но при убытке в 2% на 15 минутах будет крайне редко, если вообще будет.

Можно уменьшить L конечно и тогда будет почаще докупка, например задать L = 0.5.

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

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 13:33

Не забудьте задать общий лимит по роботу (тестированию) больше стартового лота не менее LotStart + LotLoss.
Для значений по умолчанию я выше код поправил (было 20), теперь там 40 и -40

Код: Выделить всё

   LongLimit = 40;
   ShortLimit = -40;


Они всё равно могут быть изменены при тестировании или старте робота, но нужно чтобы было задано не меньше чем LotStart + LotLoss.
Стартовая позиция + Докупка.
никогда такого не было и вот опять

GrantNew
Сообщения: 28
Зарегистрирован: 12 июл 2019, 12:03
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение GrantNew » 12 июл 2019, 13:48

Евгений, при тестировании получается сначала закрытие позиции и переоткрытие при докупке

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 14:50

вот пример L = 0.1%, чтобы успело сработать

на картинке должно стать более понятно:

Alfa_MA_SW-01.jpg
Alfa_MA_SW-01.jpg (23.32 КБ) 18514 просмотров
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Усреднение в Alfa_MA_SW

Непрочитанное сообщение evge » 12 июл 2019, 14:52

или вы про вот это?

Alfa_MA_SW-02.jpg
Alfa_MA_SW-02.jpg (59.13 КБ) 18514 просмотров
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей