Ichimoku Estratégia de Curto e Longo Prazo com Gestão de Dinheiro

Autora:ChaoZhang, Data: 23-28-12-2023 12:12:51
Tags:

img

Resumo

Esta estratégia é uma melhoria baseada no sistema de negociação Ichimoku. A ideia principal é combinar o indicador Ichimoku e as regras de gestão de dinheiro para identificar oportunidades de negociação curtas e longas.

Princípios de estratégia

A estratégia usa o clássico sistema Ichimoku como referência básica.

Tenkan-Sen: Linha de conversão, refletindo tendências de médio prazo.

Kijun-Sen: Linha de base. Refletindo tendências de longo prazo.

Senkou Span: Línea de liderança. Refletindo tendências futuras.

Chikou Span: Linha de atraso, refletindo tendências passadas.

Com base nisto, a estratégia apresentou as seguintes melhorias:

  1. Os parâmetros de tempo seguem a teoria do quadrado ímpar para combinar melhor com os padrões do mercado.

  2. Regras de gestão de dinheiro são adicionadas, incluindo stop loss, take profit, dimensionamento de posição, etc., para controlar os riscos comerciais.

  3. Período de ensaio posterior ajustável para ensaios mais abrangentes.

Especificamente, as condições de entrada longa incluem tenkan cross kijun para cima, chikou acima do preço, preço acima de kumo, futuro kumo de alta, etc. A entrada curta requer tenkan cross kijun para baixo, chikou abaixo do preço, etc.

As regras de gestão de dinheiro exigem 30% de lucro e 5% de stop loss para longs; stop loss se for superior a 3 ATR de tenkan para shorts.

Análise das vantagens

As principais vantagens de combinar Ichimoku e gestão de dinheiro são:

  1. Ichimoku reflete tendências de curto, médio e longo prazo, entrada/saída razoáveis.

  2. A teoria do quadrado ímpar otimiza os parâmetros para corresponder às estatísticas do mercado.

  3. O gerenciamento de dinheiro controla efetivamente o stop loss de uma única negociação enquanto os lucros excedem.

  4. O período de ensaio posterior ajustável permite um ensaio mais abrangente.

Em resumo, esta estratégia considera de forma abrangente a tendência, a selecção dos parâmetros, o controlo dos riscos, etc., e é eficaz na identificação de oportunidades de curto prazo e no controlo dos riscos comerciais, com uma forte praticidade.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Ichimoku é propenso a falhas que causam entradas desnecessárias.

  2. O lucro fixo e o stop loss podem ser vulneráveis a armadilhas.

  3. Os dados de backtesting incompletos podem sobreestimar o desempenho, sendo necessários testes mais longos em mais mercados.

  4. A estratégia se adapta mais aos mercados de tendência. Pode ter um desempenho inferior em mercados variados. As condições de entrada podem ser otimizadas para a identificação de tendências.

Orientações para a melhoria

Os principais domínios de melhoria incluem:

  1. Adicionar filtros de indicadores para melhorar a qualidade da entrada, como MACD, KDJ etc.

  2. A taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação.

  3. Testes de múltiplos ativos em dados mais longos para verificação da estabilidade.

  4. Diferenciar tendências e mercados variados.

Conclusão

Esta estratégia considera de forma abrangente a tendência, gestão de dinheiro, etc., usa o Ichimoku para identificar oportunidades longas e aplica regras de controle de risco para limitar a perda de uma única negociação. Melhorias significativas em relação ao sistema original Ichimoku.


/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Author Obarut
//@version=5
strategy("İchimoku Strategy With MM Short-Long",overlay=true,process_orders_on_close=true)

//Ichimoku Inputs
ts_period = input.int(8, minval=1, title="Tenkan-Sen Period")
ks_period = input.int(16, minval=1, title="Kijun-Sen Period")
ssb_period = input.int(24, minval=1, title="Senkou-Span B Period")
cs_offset = input.int(16, minval=1, title="Chikou-Span Offset")
ss_offset = input.int(8, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

// Back Testing Period Inputs

fromday = input.int(defval=1,title="Start Date",minval=1,maxval=31) 
frommonth = input.int(defval=1,title="Start Month",minval=1,maxval=12)
fromyear = input.int(defval=1980,title="Start Year",minval=1800, maxval=2100)
today = input.int(defval=1,title="En Date",minval=1,maxval=31)
tomonth = input.int(defval=1,title="End Month",minval=1,maxval=12)
toyear =input.int(defval=2100,title="End Year",minval=1800,maxval=2200)
start=timestamp(fromyear,frommonth,fromday,00,00)
finish=timestamp(toyear,tomonth,today,00,00)
timewindow= time>=start and time<=finish

//Ichimoku Componenets Calculation Function
middle(len) => math.avg(ta.lowest(len), ta.highest(len))

// Ichimoku Components

tenkan = middle(ts_period)
kijun = middle(ks_period)
senkouA = math.avg(tenkan, kijun)
senkouB = middle(ssb_period)
//Senkou Span Lines slopes
slopetenkan=(tenkan-tenkan[2])/tenkan
slopekijun= (kijun-kijun[2])/kijun
//Avarage True Range 
atr = ta.atr(14)
//Senkou Span Lines
ss_above = math.max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_below = math.min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Price Distance From Tenkan
distance = close - tenkan

// Price Distance from Kijun
distancek = close - kijun

// Entry/Exit Signals

tk_cross_kijun_bull = tenkan >= kijun//Tenkan Sen is greater than or equal to  Kijun Sen
tk_cross_kijun_bear = tenkan <= kijun//Tenkan Sen is smaller than or equal to Kijun Sen
cs_cross_bull = close > high[cs_offset-1]//Chikou is above the price
cs_cross_bear = close < close[cs_offset-1]//Chikou is below the price
price_above_kumo = close > ss_above//Price is above the Kumo cloud
pbsenkA = close < ss_above // Price is below the Senkou Span which is higher
pasenkB = close > ss_below// Price is above the Senkou span which is lower
price_below_kumo = close < ss_below // Price is below Kumo cloud
future_kumo_bull = senkouA > senkouB and (ta.roc(senkouA,3)>0) and (ta.roc(senkouB,3)>=0) // Future Kumo cloud is bullish
pbtenkan=close<tenkan
tkbelowkij=tenkan<kijun
future_kumo_bear = senkouA < senkouB//Future Kumo cloud is bearish
// Price Distance From Tenken
disbull = distance < 2*atr
//Price Distance From Kijun
disbullk = distancek < 3*atr
//Price Above Tenkan Condition
patk = close > tenkan
// Kijun Above Senkou Span Condition
kjasenkA = kijun > ss_above
// Price Below Kijun Condition
pbkijun = close < kijun
//Consolidation Tenkan and Kijun are inside Kumo cloud
kijuninsidekumo= kijun<ss_above and kijun>ss_below
tenkaninsidekumo= tenkan<ss_above and tenkan>ss_below
consolidation=kijuninsidekumo and tenkaninsidekumo

//Bullish Entry Condition

bullish= tk_cross_kijun_bull and cs_cross_bull and price_above_kumo and future_kumo_bull and disbull and patk 
     and not consolidation
//Bullish exit
bearish=tk_cross_kijun_bear and pbsenkA and cs_cross_bear  and future_kumo_bear
      or price_below_kumo     
// Bearish Entry Condition

bearish2=tk_cross_kijun_bear and pbtenkan and tkbelowkij and tkbelowkij and cs_cross_bear and future_kumo_bear

if(bullish and timewindow and long_entry )
    strategy.entry("Long Entry", strategy.long)


if(bearish2 and timewindow and short_entry)
    strategy.entry("Short Entry",strategy.short)
// Bearish Condition



lastentryprice = strategy.opentrades.entry_price(strategy.opentrades - 1)

// Take Profit or Stop Loss in Bearish

exit1= (close-tenkan)>3*atr and slopetenkan<=0
exit2= (close-lastentryprice)>5*atr and close<(tenkan-0.04*atr)

if(bearish and timewindow and not short_entry or exit1 or exit2  or (close>1.30*lastentryprice  ) or (close< 0.95*lastentryprice))
    strategy.close("Long Entry")
if(bullish and timewindow and not long_entry)
    strategy.close("Short Entry")
if(time>finish)
    strategy.close_all("time up")

plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#2e640e, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=color.rgb(17, 122, 21), title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=color.rgb(88, 8, 8), title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? color.rgb(198, 234, 198) : color.rgb(208, 153, 153), title="Cloud color")

Mais.