Тенденция в соответствии со стратегией, основанной на зонах ценового трения

Автор:Чао Чжан, Дата: 2023-09-20 16:46:17
Тэги:

Обзор

Эта стратегия измеряет время пребывания цены в различных зонах для выявления зон с низким уровнем трения, и торгует прорывами в этих зонах.

Логика стратегии

  1. Вычислить соотношение ценового пребывания вокруг текущего уровня за прошедшие N периодов как трение цен.

  2. Определите, входит ли цена в зоны низкого трения с минимальным временем задержания в последнее время.

  3. Используйте быстро взвешенный MA для определения направления недавнего тренда.

  4. Приобрести прибыль, когда цена снова войдет в зоны высокого трения, ожидая переворота тренда.

  5. Настраиваемые параметры, включая обратный отсчет трения, зону прорыва и т.д.

Преимущества

  1. Ценовое трение избегает различных рынков и находит зоны начала тренда.

  2. Быстрый MA сочетается с трением для определения направления.

  3. Интуитивно понятные изображения, показывающие уровни трения цен.

  4. Параметры по умолчанию оптимизированы для крипто высокочастотного трейдинга.

  5. Простая и понятная логика, легкая для понимания и настройки.

Риски

  1. Ценовое трение не может полностью предсказать будущие движения.

  2. Быстрый MA может привести к неточному сроку.

  3. Неэффективное сглаживание входных и выездных сделок.

  4. Оптимизация рискует переустановить.

  5. На волатильных рынках фиксированные параметры могут быть менее эффективными.

Улучшение

  1. Проверьте различные периоды для расчета трения цен.

  2. Оценить различные типы МД для определения недавней тенденции.

  3. Оптимизируйте параметры зоны прорыва для повышения стабильности.

  4. Добавьте стоп-лосс и прибыль для управления рисками.

  5. Рассмотрим динамические параметры для адаптации к изменяющимся рынкам.

  6. Проверка с использованием других символов и временных рамок.

Заключение

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


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//made for 30m chart with BTCUSD or other cryptocurrency
strategy("LUBE",overlay=false )
friction=0.0
barsback=input(500,"bars back to measure friction",step=100)
flevel=input(50,"0-100 friction level to stop trade",step=2)
tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2)
fl=flevel/100
tl=tlevel/100

for i = 1 to barsback
    friction := if high[i] >= close and low[i] <= close 
        friction+(1+barsback)/(i+barsback)
    else
        friction

range=input(100,"bars back to measure lowest friction",step=10)
lowf = lowest(friction,range)
highf = highest(friction,range)
midf = (lowf*(1-fl)+highf*fl)
lowf2 = (lowf*(1-tl)+highf*tl)
plot(friction)
m=plot(midf[5],color=color.red)
l=plot(lowf2[5],color=color.white)
h=plot(highf[5],color=color.white)
fill(l,h,color.white)

src = input(title="Source", type=input.source, defval=close)

//FIR Filter
_fir(src) =>
    (4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10

fir = _fir(src)

trend =  fir > fir[1]? 1:-1

//bgcolor(trend==1?color.lime:color.red,transp=50)

long=friction<lowf2[5] and trend == 1
short=friction<lowf2[5] and trend == -1
end=friction > midf[5]

keeplong=0
keeplong:=long?1:nz(keeplong[1])
keeplong:=short or end?0:keeplong

keepshort=0
keepshort:=short?1:nz(keepshort[1])
keepshort:=long or end?0:keepshort

bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50)

leverage=input(2,"leverage",step=.5)
enableshort=input(true,"enable shorts?")

barcount=0
barcount:=nz(barcount[1])+1

contracts=min(max(.000001,(strategy.equity/close)*leverage),50000)
strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts)

strategy.close("Long",when=short or end )

strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts)

strategy.close("Short",when=(long or end) and enableshort==true)

alertcondition(keeplong==1 and keeplong[1]==0,"LONG")
alertcondition(keepshort==1 and keepshort[1]==0,"SHORT")
alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")


Больше