Esta estratégia combina EMA, RSI, MACD, PSAR, Bollinger Bands e outros indicadores técnicos para julgamento da tendência geral a partir de vários ângulos, encontrando oportunidades de entrada ideais.
Usar 3 EMAs (5-, 9-, 21-período) para determinar a tendência de preços.
O RSI avalia os níveis de sobrecompra/supervenda.
O MACD verifica a diferença da média móvel.
O PSAR indica a direção da tendência atual para contexto adicional.
As bandas de Bollinger mostram níveis de suporte/resistência.
Tomar posições longas/cortas quando os indicadores emitirem sinais alinhados com base na seleção do utilizador.
Indicadores múltiplos evitam sinais enganosos provenientes de um único indicador.
Parâmetros personalizáveis permitem aos utilizadores selecionar combinações óptimas.
Detecção precisa de mudanças de tendência a partir da EMA, MACD, etc.
O RSI identifica de forma eficiente oportunidades de sobrevenda/supercompra.
SAR e Bollinger Bands revelam pontos de virada.
Menos ocorrências de sinais multi-indicadores podem perder boas oportunidades.
Nenhuma filtragem quando um único indicador dá sinal falso.
Os utilizadores podem escolher conjuntos de parâmetros subótimos que conduzam a sobre/subnegociação.
Não há limites de gestão de riscos como o STOP LOSS.
Dados insuficientes de backtest para validar totalmente a estratégia.
Possíveis soluções:
Aumentar os limiares dos indicadores para fornecer mais sinais.
Adicionar outros indicadores para filtrar sinais falsos.
Fornecer mais opções de indicadores para que os utilizadores possam testar combinações.
Incorporar stop loss e outras formas de gestão de riscos.
Testes de retorno em mais mercados para otimizar os parâmetros.
Teste mais combinações de indicadores para encontrar as melhores correspondências.
Adicionar módulos de aprendizagem de máquina para melhorias mais baseadas em dados.
Incorporar filtragem de tendências para determinar a direção do comércio.
Otimizar a gestão do dinheiro para mais ambientes de mercado.
Desenvolver otimização automática de parâmetros para melhorias inteligentes.
Esta estratégia aplica múltiplos indicadores técnicos para uma análise abrangente da tendência, evitando uma dependência excessiva de indicadores únicos. Pode ser reforçada através de ajuste de parâmetros, adição de módulos de validação, integração de IA, etc., para fornecer sinais de maior qualidade, mantendo a robustez.
/*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