이 전략은 EMA, RSI, MACD, 에너지 유조, 브린 벨트 등 여러 가지 기술 지표를 통합하여 가격 움직임을 다각적으로 판단하여 최적의 진입 지점을 찾습니다. 동시에 사용자 조정 및 개인화 전략을 구현하기 위해 여러 가지 파라미터 설정을 제공합니다.
3 EMA ((5주기, 9주기, 21주기) 를 사용하여 가격 흐름을 판단한다. EMA 평균선 턱은 트렌드 변화를 나타낸다.
RSI 지표는 과매매 상황을 판단합니다. RSI는 낮은 지점보다 낮은 신호를 전달하고 높은 지점보다 높은 신호를 전달합니다.
MACD 지표는 평균선 차이를 살펴보고, DIFF는 DEA를 상향으로 돌파하여 낙관적 신호로, 하향으로 돌파하여 낙관적 신호로 니다.
에너지 기류 지표 SAR는 현재 트렌드 방향을 나타내고 판단을 돕는다.
브린은 위와 아래의 궤도를 통해 지지와 압력의 위치를 표시하며, 가격이 돌파되는 궤도는 추세 변화를 나타냅니다.
사용자 선택에 따라, 지표가 동방향 신호를 발산할 때, 그에 상응하는 매매운동을 한다.
여러 지표들을 종합해서 판단하면, 단일 지표의 오류를 피할 수 있다.
조합 파라미터를 조정하여 사용자가 필요에 따라 최적의 지표 조합을 선택할 수 있습니다.
EMA, MACD 등 지표는 트렌드 변화를 정확하게 판단한다.
RSI 지표는 오버 바이 오버 셀 기회를 효과적으로 식별합니다.
SAR와 브린은 트렌드 전환 지점을 적시에 나타냅니다.
다중 지표 조합은 판단할 시간이 적고, 좋은 기회를 놓칠 수도 있다.
단 하나의 지표가 잘못된 신호를 내면 필터링할 수 없습니다.
사용자가 잘못된 배열을 선택하여 거래의 빈도나 적음을 초래할 수 있다.
STOP LOSS와 같은 위험 관리 장치가 없습니다.
이 전략의 효과에 대해 충분히 검증할 수 있는 충분한 자료가 없습니다.
대응방법:
변수를 조정하여 THRESHHOLD 지표를 확장하여 더 많은 거래 시간을 제공합니다.
다른 지표를 추가하여 조합 검증을 통해 잘못된 신호를 방지하십시오.
더 많은 지표 선택이 제공되어 사용자가 최적의 조합을 테스트할 수 있습니다.
위험 감축을 위한 조치들, 예를 들어, 손해 방지 전략들.
더 많은 시장에서 역사적으로 재검토하여 최적의 변수를 결정합니다.
더 많은 조합을 테스트하여 최적의 짝을 찾습니다.
더 많은 데이터를 활용하여 더 나은 전략을 세우는 기계 학습 모듈을 추가합니다.
트렌드 필터를 추가하여 트렌드 방향에 따라 거래 여부를 결정합니다.
자본관리 전략을 최적화하여 시장 환경에 더 잘 적응할 수 있도록 한다.
자동 변수 최적화 프로그램을 개발하여 전략 지능화를 구현한다.
이 전략은 여러 가지 기술 지표를 조합하여 가격 동향을 종합적으로 판단하여 단일 지표 의존의 부족을 방지합니다. 지표 매개 변수를 조정하고, 검증 모듈을 추가하고, AI를 도입하는 등의 방법으로 더욱 최적화 할 수 있습니다. 전략의 건전성을 유지한다는 전제 하에 전략 아이디어에 맞는 더 많은 거래 기회를 얻을 수 있습니다.
/*backtest
start: 2022-09-17 00:00:00
end: 2023-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("f.society", title="f.society", overlay=true)
//@Author: rick#1414
// -----------------------------------------------------
// f.society : Pone 3EMA: 5, 9, 21, 50, 100, 200, SAR,
// velas azules en sobreventa y velas moradas sobre compra
// SAR 0.02, 0.02, 0.2 , Bandas de Bollinger
// estrategia de compra y venta con rsi, macd o psr
// color de fondo: ema, rsi (color azul sobreventa 35, 25 (mas intenso))
// -----------------------------------------------------
// Como agregar a Trading view:
// 1 Cerrar todos los otros indicadores antes de añadirlo
// 2. Ir a la página de inicio TradingView.com
// 3. En la parte inferior, haga clic en Editor Pine // ver imagen: // https://cdn.discordapp.com/attachments/407267549047422976/407393815112974336/unknown.png
// 4. borrar todo el texo y reemplazar con todo el contenido de este archivo
// 5. Pulse el botón "Añadir a trazar" (Add to graph)
// -----------------------------------------------------
// revisar opciones de on y off segun indicadores deseados
// https://cdn.discordapp.com/attachments/405885820114042883/412115277883506700/unknown.png
// se puede cambiar la estrategia desde este menu desplegable para señales buy/sell
// Options
estrategia = input(defval="rsi", title = "Strategy", options=["ema","rsi","macd","psr","off","BB","ema5"])
in_bkcolor = input(defval="rsi", title = "background color", options=["ema","rsi","macd","psr","off","exchange","BB","ema5"])
e5 = input(title="Show ema5?", type=bool, defval=false)
e9 = input(title="Show ema9?", type=bool, defval=true)
e21 = input(title="Show ema21?", type=bool, defval=true)
e50 = input(title="Show ema50?", type=bool, defval=false)
e100 = input(title="Show ema100?", type=bool, defval=false)
e200 = input(title="Show ema200", type=bool, defval=true)
in_rsi = input(title="Color oversold and overbought bars?", type=bool, defval=true)
in_sar = input(title="Show Parabolic Sar", type=bool, defval=true)
in_bb = input(title="Show Bollinger Bands?", type=bool, defval=true)
sd = input(false, title="Show Daily Pivots?")
linew = input(1, title="linewidth", minval=0)
sarw = input(1, title="sar points width", minval=0)
ovs = input(40, title="oversold rsi", minval=0)
ovb = input(65, title="overbought rsi", minval=0)
//pf = input(false,title="Show Filtered Pivots")
pf=false
// 3 ema
src = close // input(close, title="Source")
//len9 = input(9, minval=1, title="ema9 Length")
//len21 = input(21, minval=1, title="ema21 Length")
//len200 = input(200, minval=1, title="ema200 Length")
len5=5
len9=9
len21=21
len50=50
len100=100
len200=200
ema5 = ema(src, len5)
ema9 = ema(src, len9)
ema21 = ema(src, len21)
ema50= ema(src, len50)
ema100 = ema(src, len100)
ema200 = ema(src, len200)
plot(e5? ema5 : na, title="EMA5", linewidth=linew, color=purple)
plot(e9? ema9 : na, title="EMA9", linewidth=linew, color=blue)
plot(e21? ema21 : na, title="EMA21", linewidth=linew, color=red)
plot(e50? ema50 : na, title="EMA50", linewidth=linew, color=green)
plot(e100? ema100 : na, title="EMA100", linewidth=linew, color=lime)
plot(e200? ema200 : na, title="EMA200", linewidth=linew, color=yellow)
// RSI Color
//lenR = input(14, minval=1, title="RSI Length")
lenR=14
//up = rma(max(change(src), 0), lenR)
//down = rma(-min(change(src), 0), lenR)
//vrsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
vrsi=rsi(close,lenR)
//plot(vrsi,title="vrsi")
oversold = vrsi < ovs
overbought = vrsi > ovb
barcolor(in_rsi? oversold? #0000FF : overbought? #ff00ff:na : na)
// SAR
plot(in_sar? sar(0.02, 0.02, 0.2): na, style=cross, linewidth=sarw, color=blue, title="sar")
// BB
//length = input(20, title="Bollinger length", minval=1)
length=20
//mult = input(2.0, title="Bollinger stdDev", minval=0.001, maxval=50)
mult=2.0
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(in_bb? basis :na, color=red, linewidth=linew, title="BB basis")
p1 = plot(in_bb? upper :na, color=blue, linewidth=linew, title="BB upper")
p2 = plot(in_bb? lower :na, color=blue, linewidth=linew, title="BB lower")
fill(p1, p2)
//background
bgcolor(in_bkcolor=="exchange"? #0000FF40 : in_bkcolor=="rsi"? vrsi < (ovs-15) ? #0000FF50 : vrsi < ovs ? #0000FF30 :( vrsi < ovb ? #ff00ff10 : #ff00ff20): in_bkcolor=="ema"?(ema9>ema21?#ff00ff10 : #0000FF20):in_bkcolor=="BB"?(lower>close?#ff00ff10 : close>upper?#0000FF20:#ff00ff10): in_bkcolor=="ema5"?(ema5>ema21?#ff00ff10 : #0000FF20):na)
// Strategy
if estrategia == "ema"
strategy.entry("buy", true, 1, when= crossover(ema9,ema21) ),
strategy.entry("sell", false, 1, when = crossover(ema21,ema9))
else
if estrategia =="rsi"
strategy.entry("buy", true, 1, when= vrsi <ovs),
strategy.entry("sell", false, 1, when = vrsi > ovb or crossover(close,upper))
else
if estrategia =="macd"
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9),
//bgcolor(macdLine > signalLine ? #98c8ff : #ff8b94),
strategy.entry("buy", true, 1, when= macdLine>=signalLine ),
strategy.entry("sell", false, 1, when = macdLine<signalLine)
else
if estrategia=="psr"
leftBars = 4 //input(4)
rightBars = 2 //input(2)
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("buy", strategy.long, comment="buy", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("sell", strategy.short, comment="sell", stop=lprice - syminfo.mintick)
else
if estrategia=="BB"
strategy.entry("buy", true, 1, when= crossover(lower,close) ),
strategy.entry("sell", false, 1, when = crossover(close,upper))
else
if estrategia=="ema5"
strategy.entry("buy", true, 1, when= crossover(ema5,ema21) ),
strategy.entry("sell", false, 1, when = crossover(ema21,ema5))
// pivots
// Classic Pivot
pivot = (high + low + close ) / 3.0
// Filter Cr
bull= pivot > (pivot + pivot[1]) / 2 + .0025
bear= pivot < (pivot + pivot[1]) / 2 - .0025
// Classic Pivots
r1 = pf and bear ? pivot + (pivot - low) : pf and bull ? pivot + (high - low) : pivot + (pivot - low)
s1 = pf and bull ? pivot - (high - pivot) : pf and bear ? pivot - (high - low) : pivot - (high - pivot)
r2 = pf ? na : pivot + (high - low)
s2 = pf ? na : pivot - (high - low)
//Pivot Average Calculation
smaP = sma(pivot, 3)
//Daily Pivots
dtime_pivot = security(syminfo.tickerid, 'D', pivot[1])
dtime_pivotAvg = security(syminfo.tickerid, 'D', smaP[1])
dtime_r1 = security(syminfo.tickerid, 'D', r1[1])
dtime_s1 = security(syminfo.tickerid, 'D', s1[1])
dtime_r2 = security(syminfo.tickerid, 'D', r2[1])
dtime_s2 = security(syminfo.tickerid, 'D', s2[1])
offs_daily = 0
plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",style=line, color=fuchsia,linewidth=linew)
plot(sd and dtime_r1 ? dtime_r1 : na, title="Daily R1",style=line, color=#DC143C,linewidth=linew)
plot(sd and dtime_s1 ? dtime_s1 : na, title="Daily S1",style=line, color=lime,linewidth=linew)
plot(sd and dtime_r2 ? dtime_r2 : na, title="Daily R2",style=line, color=maroon,linewidth=linew)
plot(sd and dtime_s2 ? dtime_s2 : na, title="Daily S2",style=line, color=#228B22,linewidth=linew)
// References:
// get number of bars since last green bar
//plot(barssince(close >= open), linewidth=3, color=blue)
//bgcolor(close < open ? #ff8b94 : #98c8ff , transp=10)
//http://www.color-hex.com/
// #98c8ff light blue
// #ff8b94 red #b21c0e
// #7d1d90 purple
// #0029ff blue
// #fffa86 yellow