Стратегия двойного стохастического осциллятора


Дата создания: 2023-09-17 18:26:16 Последнее изменение: 2023-09-17 18:26:16
Копировать: 0 Количество просмотров: 845
1
Подписаться
1617
Подписчики

Обзор

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

Стратегический принцип

  1. Значение быстрого случайного индикатора K указывает на направление краткосрочной тенденции, и K-линия, пересекающая ее с подвижной средней SM1, составляет входный сигнал.

  2. Значение K для медленного случайного индикатора отражает ситуацию с большой тенденцией. Когда быстрый индикатор показывает обратный сигнал, проверьте, насколько разумно медленный индикатор определяет большую сторону.

  3. При быстром прохождении SM1 на K рассматривается как сигнал просветления; при медленном прохождении SM1 на K больше 50 указывается на большую тенденцию вверх, удовлетворяющую условию многообразия.

  4. Если K быстро пробивается вниз по SM1, это считается сигналом о понижении; если K медленно меньше 50, это означает, что тенденция идет вниз, что соответствует условиям дифференцированного курса.

  5. Установка точки остановки убытков с фиксированной пропорцией остановки убытков.

Анализ преимуществ

  1. Двойные случайные показатели фильтрации шума повышают вероятность успеха. Быстрое и медленное взаимодействие снижает риск подключения.

  2. SM1 имеет небольшие параметры, K-показатель чувствителен и подходит для захвата коротких линий.

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

  4. Фиксированная точка остановки убытков, контролируемая прибыль от риска, не подверженная чрезмерным колебаниям.

Анализ рисков

  1. Отклонения между индикаторами могут привести к упущенным возможностям или ошибочным сигналам.

  2. Фиксированные стоп-стоп-потери недостаточно гибки и не могут корректироваться в соответствии с изменениями рынка.

  3. Параметры lbl требуют многократных оптимизационных тестов, которые могут быть неэффективными.

  4. Краткосрочные сделки требуют более высокой частоты и увеличивают стоимость сделки.

Направление оптимизации

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

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

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

  4. Применение фильтрации по времени, избегание ключевых событий, контроль иррациональных колебаний.

  5. Оптимизация стратегии управления капиталом, увеличение или уменьшение запасов, повышение эффективности использования капитала.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")