
Esta estratégia combina os indicadores do EMA do quadro de tempo múltiplo com o julgamento de forma de linha K, permitindo a captura de sinais de linha longa e a saída de perda mais sensíveis.
A estratégia baseia-se nos seguintes indicadores:
EMA mediana: utiliza 13 ciclos, 21 ciclos 2 grupos de EMA, para determinar a ruptura de preços para formar um sinal de negociação.
Forma da linha K: determina a direção da entidade da linha K. Utilizado em conjunto com o indicador EMA, filtrando a falsa ruptura.
Resistência de suporte: construída com base no pico mais recente de 10 ciclos, julga-se que a ruptura aumenta a confiabilidade do sinal através dessa região.
Tempo de subida: 120 períodos de fechamento do preço de fechamento acima do preço de abertura de negociação, como julgamento auxiliar.
As regras de geração de sinais de transação são:
Multi-cabeça: EMA rápida para cima, quebra a EMA lenta, e para a linha K do sol, feche o estoque aberto.
Sinal de cabeça vazia: EMA rápida para baixo, quebra EMA lenta, e para a linha K de cadência, para eliminar a posição.
Parar para sair: Parar para sair da posição atual quando o sinal de contra-mão é emitido.
Os riscos acima podem ser mitigados evitando otimização excessiva, selecionando cuidadosamente os parâmetros e controlando rigorosamente o tamanho da posição.
Esta estratégia integra o indicador de EMA do multi-quadro temporal com o julgamento da entidade da linha K, permitindo um julgamento de tendências mais confiável. Ao mesmo tempo, combina a resistência de suporte com a situação de tempo para auxiliar e garantir a qualidade do sinal.
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)
open_long = 0
close_position = 0
last_long=close
last_short=close
//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false
//-----------------Support and Resistance
RST = input(title='Support / Resistance length:', defval=10)
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
//--------------------Trend colour ema------------------------------------------------//
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1
if (long_signal == 1)
strategy.entry("Long Open", strategy.long)
if (short_signal == -1)
strategy.close("Long Open")
if (long_signal[1] == 1 and short_signal[1] == 1)
open_long := 1
close_position := 0
if (short_signal[1] == -1 and long_signal[1] == -1)
open_long := 0
close_position := 1
plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)
///////////////////////////////////////////////////////////////////////////////////////////