
Esta estratégia combina o indicador de linha média, o indicador de sobrevenda e venda e o indicador de volatilidade para comprar baixo em caso de rebote de sobrevenda e vender alto em caso de retorno de sobrevenda, permitindo o acompanhamento de tendências.
Quando o RSI e o Stoch estão simultaneamente na zona de oversold e o oscilador AO mostra um sinal de reversão, uma posição é estabelecida. Especificamente, quando o RSI e o Stoch estão ambos em baixa (abaixo de 30 e 20), o AO faz mais quando correção de negativo; quando o RSI e o Stoch estão ambos em alta (acima de 70 e 80), e o AO faz zero quando correção de negativo. A parada e a parada são definidas de acordo com os valores do indicador ATR, permitindo ajustar a posição de parada de perda de acordo com as flutuações do mercado.
A estratégia baseia-se em quatro indicadores:
Quando o AO aparece um sinal de reversão e o RSI e o Stoch estão simultaneamente na área de oversold, indicando que o preço pode ser reversível, o que pode intervir na criação de posições. O indicador ATR é usado para definir o preço de parada de perda, ajustando a amplitude de parada de perda de acordo com a volatilidade do mercado, para evitar ser coberto.
Para minimizar esses riscos, é possível otimizar as seguintes áreas:
A estratégia pode ser melhorada em alguns aspectos:
A configuração de parâmetros de otimização pode ser encontrada através de métodos como busca de otimização.
Adição de condições de filtragem. Confirmação de indicadores adicionais pode ser adicionada ao ingresso para evitar falsos sinais.
Otimização do mecanismo de parada de prejuízos. Pode-se usar a parada móvel, o loteamento de saída, etc., para controlar o risco.
Optimizar o stop-loss. Pode ser usado o stop-loss móvel, o stop-loss de segmentação de acordo com a tendência, etc., para bloquear mais lucros.
Aumentar o freio automático. Por exemplo, o freio é interrompido quando se aproxima de um intervalo inteiro importante, evitando a recaída.
Optimizar o gerenciamento de fundos. Por exemplo, ajustar o tamanho da posição de acordo com as mudanças de risco e controlar a perda máxima.
Optimizar o teste para uma variedade/ciclo específico. Os parâmetros e os métodos de parada de perda devem ser otimizados para diferentes variedades e ciclos.
Aumentar o tratamento de eventos de emergência, como evitar a negociação quando há notícias importantes ou parar rapidamente.
Esta estratégia utiliza um sistema de equilíbrio, um sistema de venda e venda excessivos e um sistema de volatilidade, com uma forte capacidade de acompanhamento de tendências. Mas também há alguns problemas de configuração de parâmetros fixos, imperfeitos mecanismos de parada de perdas e outros. Podemos fazer otimização de vários aspectos, como configuração de parâmetros de otimização, melhoria do mecanismo de parada de perdas, aumento das condições de flutuação, etc. Para tornar a estratégia mais estável e confiável.
/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Buy&Sell Strategy depends on AO+Stoch+RSI+ATR by SerdarYILMAZ", shorttitle="Buy&Sell Strategy")
// Created by Serdar YILMAZ
// This strategy is just for training, its purpose is just learning code in pine script.
// Don't make buy or sell decision with this strategy.
// Bu strateji sadece pine script'te kodlamanın nasıl yapildigini ogrenmek icindir.
// Bu stratejiye dayanarak, kesinlikle al-sat islemleri yapmayin.
//AO
fast=input(title="Fast Length",type=input.integer,defval=5)
slow=input(title="Slow length",type=input.integer,defval=34)
awesome=(sma(hl2,fast)-sma(hl2,slow))*1000
plot(awesome, style=plot.style_histogram, color=(awesome>awesome[1]?color.green:color.red))
//Stoch
K=input(title="K",type=input.integer,defval=14)
D=input(title="D",type=input.integer,defval=3)
smooth=input(title="smooth",type=input.integer,defval=3)
k=sma(stoch(close,high,low,K),D)
d=sma(k,smooth)
hline(80)
hline(20)
plot(k,color=color.blue)
//RSI
rsisource=input(title="rsi source",type=input.source,defval=close)
rsilength=input(title="rsi length",type=input.integer,defval=10)
rsi=rsi(rsisource,rsilength)
hline(70,color=color.orange)
hline(30,color=color.orange)
plot(rsi,color=color.orange)
//ATR
atrlen=input(title="ATR Length", type=input.integer,defval=14)
atrvalue=rma(tr,atrlen)
plot(atrvalue*1000,color=color.green)
LongCondition=k<20 and rsi<30 and awesome>awesome[1]
ShortCondition=k>80 and rsi>70 and awesome<awesome[1]
if (LongCondition)
stoploss=low-atrvalue
takeprofit=close+atrvalue
strategy.entry("Long Position", strategy.long)
strategy.exit("TP/SL",stop=stoploss,limit=takeprofit)
if (ShortCondition)
stoploss=high+atrvalue
takeprofit=close-atrvalue
strategy.entry("Short Position",strategy.short)
strategy.exit("TP/SL",stop=stoploss,limit=takeprofit)