
A estratégia foi desenvolvida com base em um sistema de negociação de equilíbrio de primeira linha. A ideia principal é a combinação de equilíbrio de primeira linha e regras de gerenciamento de fundos para a identificação de oportunidades de negociação de linha curta e multi-cabeça.
A estratégia usa o sistema de equilíbrio de primeira vista clássico como referência básica. Os principais componentes incluem:
Linha de rotação: Linha intermédia. Reflete a tendência intermédia.
Linha de referência: Linha de longo prazo. Reflete tendências de longo prazo.
Linha de frente: Linha de previsão futura. Refletindo tendências futuras.
Linhas de atraso: Linhas passadas. Refletem tendências passadas.
Com base nisso, a estratégia foi melhorada da seguinte forma:
A escolha dos parâmetros de tempo segue a teoria do quadrado de números ímpares, tornando-a mais compatível com as leis do mercado.
Aumentar as regras de gerenciamento de fundos, incluindo stop loss, stop loss, tamanho de posição, etc., para controlar o risco de negociação.
O alcance do feedback pode ser ajustado para que o teste de estratégia seja mais abrangente.
Especificamente, os requisitos de entrada em vários níveis incluem a passagem da linha de referência na linha de rotação, a linha de atraso acima do preço, o preço acima do gráfico de nuvem, o gráfico de nuvem que prevê o futuro do mercado de touros, etc. Os requisitos de entrada em branco exigem a passagem da linha de referência abaixo da linha de rotação, a linha de atraso abaixo do preço, etc.
As regras de gerenciamento de fundos exigem um stop loss de 30% e um stop loss de 5%; o stop loss de um stop loss é superior a 3 vezes o ATR da linha de rotação.
Os principais benefícios desta estratégia, combinada com indicadores de linha-comum e gestão de fundos, são:
O sistema de equilíbrio de primeira vista reflete a tendência de curto, médio e longo prazo, e a entrada/saída é razoável.
Parâmetros de otimização da teoria dos quadrados ímpares, de acordo com as leis estatísticas do mercado.
As regras de gestão de fundos controlam eficazmente os perdas únicas e garantem que os ganhos sejam maiores do que os perdas.
A detecção pode ser ajustada, o teste é mais abrangente.
Em suma, a estratégia compreende a tendência, a escolha de parâmetros, o controle de risco e outros fatores, permitindo identificar com eficácia as oportunidades e controlar o risco de negociação, e tem uma forte utilidade.
Os principais riscos dessa estratégia são os seguintes:
O sistema de equilíbrio de um olho pode ser facilmente enganado por falsas brechas, resultando em entrada desnecessária. Pode ser combinado com mais indicadores de filtragem.
A regra de parada de perda fixa é fácil de usar, podendo ser introduzida uma parada de perda dinâmica.
Os dados de retorno não são completos, podendo ser uma estimativa exagerada da eficácia da estratégia.
A estratégia é mais adequada para mercados de tendência, onde a liquidação do mercado pode ser fraca. As condições de entrada podem ser otimizadas para identificar tendências.
A estratégia pode ser melhorada em vários aspectos:
Adicionar filtros de indicadores para melhorar a qualidade de admissão. Indicadores auxiliares de julgamento, como MACD, KDJ e outros.
Stop loss dinâmico. Por exemplo, o ATR de N vezes a linha média é interrompido e o stop loss de suporte é interrompido.
Verificação de retrospectiva multivariada. Verificação da estabilidade da estratégia em mais mercados e dados mais longos.
Distinguir tendências e compilar mercados. Otimizar mecanismos de entrada para adaptá-los a diferentes situações.
A estratégia integra fatores como tendências, gerenciamento de fundos e outros, usa indicadores de equilíbrio de primeira mão para identificar oportunidades de negociação de múltiplas linhas curtas; ao mesmo tempo, usa regras de controle de risco para controlar perdas individuais. A estratégia é uma grande melhoria em relação ao sistema de equilíbrio de primeira mão original. Com uma otimização adicional, a estratégia tem o potencial de ser uma estratégia muito prática.
/*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")