Основная идея этой стратегии состоит в том, чтобы использовать перекрывающиеся ценовые дифференциалы для оценки рыночных тенденций. Она длится, когда дифференциал переходит от отрицательного к положительному, и становится короткой, когда дифференциал переходит от положительного к отрицательному.
Стратегия сначала рассчитывает перекрывающуюся дифференциальную цену (Close-Close[1]), которая является сегодняшней ценой закрытия минус вчерашняя ценой закрытия, а затем рассчитывает сумму дифференциалов за последние 30 дней.
В частности, стратегия сохраняет три показателя:
Он генерирует длинный сигнал, когда ff меняется от отрицательного к положительному, то есть от менее 0 до больше 0, а dd1 также меняется от отрицательного к положительному.
Он генерирует короткий сигнал, когда ff меняется от положительного к отрицательному, т.е. от более чем 0 до менее 0, а dd1 также меняется от положительного к отрицательному.
После длинного или короткого выхода, линии получения прибыли и остановки потерь будут установлены.
Стратегия имеет следующие преимущества:
Существуют также некоторые риски для стратегии:
Соответствующие решения:
Стратегия может быть оптимизирована в следующих аспектах:
Стратегия оценивает переломные моменты рынка путем расчета переменных цен. Это типичная обратная стратегия торговли. Логика ясна и легко реализована с некоторой практической ценностью. Но есть также риски, которые необходимо дополнительно оптимизировать для адаптации к изменениям рынка. В целом стратегия обеспечивает базовую основу для количественной торговли, которую можно построить и расширить.
/*backtest start: 2023-12-07 00:00:00 end: 2023-12-14 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Fst",currency="USD",initial_capital=100000) //Length0 = input(30, title="fastperiod", minval=1) Length = input(30, title="SUMM") Length1 = input(15, title="Signalperiod", minval=1) Length2= input(30, title="Info", minval=1) profit=input(95, title="profit", minval=1) loss=input(95, title="loss", minval=1) //f=iff(close>open,close-open,iff(close>open[1],close[1]-open[1],0)) f=0.0 dd1=0.0 dd2=0.0 ff=0.0 ff0=0.0 f:=close-close[1] ff:=sum(f,Length) //ff0:=sum(f,Length0) dd1:=wma(ff,Length1) dd2:=wma(ff,Length2) bull=ff<0 and dd1<0 and ff[1]<dd1 and ff>dd1 and abs(ff)>20 bear=ff>0 and dd1>0 and ff[1]>dd1 and ff<dd1 and abs(ff)>20 if(bull) strategy.entry("long", strategy.long) strategy.exit("exit", "long", profit = close*profit/1000, loss=close*loss/1000) strategy.close("long", when = bear) plotchar(bull,size=size.small,location=location.bottom) plot(ff,color=black,linewidth=2) plot(ff0,color=green,linewidth=2) plot(wma(ff,Length1),color=red,linewidth=2) plot(wma(ff,Length2),color=blue,linewidth=2) plot(wma(ff,Length1)-wma(ff,Length2),color=green,style=columns) plot(0,linewidth=1,color=black) plot(500,linewidth=1,color=red) plot(-500,linewidth=1,color=red)