이 전략은 쌍평균선, 상대적으로 약한 지표 ((RSI) 와 패러폴리선 지표 ((PSAR) 를 조합하여 가격 반전점에 대한 판단을 수행하고, 반전점이 발생했을 때 구매 및 판매 작업을 수행하며, 반전 거래 전략에 속한다.
이 전략은 주로 다음과 같은 기술 지표들을 통해 가격 반전점을 판단합니다.
쌍평평선: 빠른 이동 평균선 ((MA 빠른 선) 과 느린 이동 평균선 ((MA 느린 선) 을 계산한다. 빠른 선에서 느린 선을 통과할 때, 다단 시장으로 판단하고, 더 많이 한다. 빠른 선 아래의 느린 선을 통과할 때, 공백 시장으로 판단하고, 공백을 한다.
RSI 지표: RSI는 한 기간 동안의 평균 종결 상승과 평균 종결 하락을 계산하여 과매매 상황을 판단합니다. RSI가 70보다 크면 과매매 지역이며, 30보다 작으면 과매매 지역입니다.
PSAR 지표: 패러블 라인 SAR 지표는 트렌드를 판단하는 방향이다. SAR 지점 아래는 다목적 시장, 위는 공백 시장이다.
ADX 지표: ADX는 가격 변화의 방향적 강도를 계산하여 트렌드의 강도를 판단한다. ADX 값이 20보다 큰 것은 트렌드 상황을 나타내고, 20보다 작은 것은 평형을 나타낸다.
이 지표에 따라 구매 및 판매 신호의 논리는 다음과 같습니다.
구매 신호: 빠른 라인에서 느린 라인을 통과, RSI가 30보다 작아 (오버셀 지역), SAR 포인트가 가격 위에 있고, ADX가 20보다 크면 구매 신호를 낸다.
팔기 신호: 빠른 선 아래로 느린 선을 통과, RSI가 70보다 크다 (오버 바이 지역), SAR 포인트가 가격 아래로, ADX가 20보다 크다, 팔기 신호를 낸다.
구매 및 판매 신호가 발생했을 때 각각 10%의 포지션으로 다량 포지션과 빈 포지션을 구축하십시오. 반전 신호가 작동하지 않을 때 적시 포지션을 중단하십시오.
쌍평등선을 사용하여 큰 트렌드 방향을 판단하고, RSI와 SAR와 같은 지표를 추가하여 잘못된 신호를 제거하여 반전점을 비교적 정확하게 판단 할 수 있습니다.
단일 기술 지표로 인한 잘못된 신호를 피하기 위해 여러 지표의 조합을 사용하여 판단하십시오.
스톱로스 조건을 설정하여 위험을 효과적으로 제어할 수 있습니다.
전략적 작업은 간단하고 명확하며 실행하기 쉽습니다.
이 전략은 시장의 하락에 대한 대응방법이 있으며, 다양한 상황에 적용될 수 있다.
쌍평선으로 공백 신호를 생성할 때, 위조가 발생할 수 있으며, 다른 지표와 결합하여 판단할 필요가 있다. 적절히 평균선 주기를 연장하거나, 브린 벨트 지표에 추가하여 돌파의 진위를 판단할 수 있다.
RSI 지표는 파라미터를 잘못 설정하여 잘못된 신호를 생성할 수 있습니다. RSI 파라미터를 적절히 조정해야하며 RSI 신호를 확인하는 다른 지표도 추가해야합니다.
ADX 값이 20보다 낮으면, 무방향 시장의 반전 거래를 피하기 위해 거래를 중단하거나 ADX의 주기 변수를 적절히 줄여야 한다.
SetStringry 중지 지점은 너무 작아서 불필요한 중단이 발생할 수 있습니다. 시장의 변동 정도에 따라 합리적으로 중지 지점을 설정해야합니다.
거래 빈도가 너무 높을 수 있으며, 거래 빈도를 낮추기 위해 양평선 주기를 적절히 조정할 수 있다.
다양한 길이의 주기들의 평균선 조합을 테스트하여 최적의 변수를 찾는다.
RSI의 다양한 변수 설정을 테스트하고, 오버 바이 오버 셀 판단을 최적화한다.
다른 지표들, 예를 들어, 브린 띠, KDJ 등이 추가되어 구매/판매 신호의 판단 논리를 풍부하게 해줍니다.
다양한 품종과 시장 상황에 따라 동적 스톱 로즈 메커니즘을 설정한다.
이 전략은 이윤의 흐름을 더 잘 파악할 수 있게 해준다.
다양한 ADX 변수를 테스트하여 트렌드 강도를 가장 잘 판단하는 수치를 찾습니다.
자동 손실 모듈을 추가하여 전략이 자동으로 손실을 멈출 수 있도록 합니다.
이 전략은 쌍평평선으로 큰 방향을 판단하고, RSI, SAR 등의 지표와 결합하여 역전 신호 필터링을 수행합니다. 최적화 매개 변수가 설정된 후, 가격 역전점을 효과적으로 판단하여 역전 전 후의 추세를 포착 할 수 있습니다. 실적에서 위험을 제어하고, 합리적인 스톱로스 조건을 설정하고, 전략을 더 안정적이고 수익을 높이기 위해 매개 변수를 계속 최적화하십시오.
/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//Based on Senpai BO 3
strategy(title="Senpai_Strat_3", shorttitle="Senpai_Strat_3", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = close
//psar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
psar = sar(start, increment, maximum)
//ADX Init
adxlen = input(30, title="ADX Smoothing")
dilen = input(30, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
// BB Init
source = close
length = input(50, minval=1)
mult = input(0.5, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)
//RSI CODE
up1 = rma(max(change(src), 0), 14)
down1 = rma(-min(change(src), 0), 14)
rsi = down1 == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up1 / down1))
//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1])
//////////////////// Algo
//if (rsi>50 and n1>n2)
//strategy.exit("Close", "Short")
// strategy.entry("Long", strategy.long)
//if (rsi<50 and n2>n1)
//strategy.exit("Close", "Long")
// strategy.entry("Short", strategy.short)
//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200 and rsi >= 60?red : silver
//short1 = sig<18.5 and high>=upper and rsi>=70 and psar<close = 100%
//long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close = 100%
short1 = sig<18.5 and high>=upper and rsi>=70 and psar<close
long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close
//Entry
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
strategy.entry("short", strategy.short,qty = 10, when=short)
strategy.entry("long", strategy.long,qty=10, when=long)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)
/////////////////////
///PLOT
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//plot(short,"short",color=red,linewidth=1)
//
//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
//strategy.exit(id="Stop", profit = 20, loss = 100)