
La stratégie est basée sur un système de négociation équilibré. L’idée principale est de combiner l’indicateur équilibré de la théorie de la ligne égale et les règles de gestion des fonds pour identifier les opportunités de négociation de courte et de longue durée.
La stratégie utilise le système classique d’équilibrage au premier coup d’œil comme référence de base. Les principaux composants comprennent:
Ligne de basculement: ligne intermédiaire. Reflète la tendance intermédiaire.
Ligne de référence: Ligne à long terme. Elle reflète la tendance à long terme.
Ligne avant: Ligne de prévision du futur. Elle reflète les tendances futures.
Ligne arriérée: Ligne passée. Elle reflète la tendance passée.
Sur cette base, la stratégie a été améliorée:
La sélection des paramètres de temps suit la théorie des nombres impairs carrés, ce qui la rend plus conforme aux lois du marché.
L’augmentation des règles de gestion des fonds, y compris le stop loss, le stop stop, la taille de la position, etc., pour contrôler le risque de transaction.
La portée des retours peut être ajustée pour rendre les tests de stratégie plus complets.
Plus précisément, les conditions d’entrée à plusieurs têtes comprennent la traversée de la ligne de référence sur la ligne de virage, le retard supérieur au prix, le prix supérieur au graphique de nuage, le graphique de nuage pour prédire le marché haussier futur, etc. Les conditions d’entrée à vide exigent la traversée de la ligne de référence sous la ligne de virage, le retard inférieur au prix, etc.
Les règles de gestion de fonds exigent un stop multiple de 30% et un stop de 5%; le stop à tête vide est supérieur à 3 fois l’ATR de la ligne de virage.
Les avantages de cette stratégie combinée à la gestion des fonds et à l’indicateur de la ligne de parité se reflètent principalement dans:
Le système d’équilibrage à première vue reflète lui-même les tendances à court, moyen et long terme, dont l’entrée/sortie est raisonnable.
Les paramètres d’optimisation de la théorie des nombres impairs sont conformes aux règles statistiques du marché.
Les règles de gestion des fonds contrôlent efficacement les pertes ponctuelles et garantissent que les gains sont supérieurs aux pertes.
La portée de la détection est réglable, le test est plus complet.
Dans l’ensemble, la stratégie prend en compte les tendances, le choix des paramètres, le contrôle des risques et d’autres facteurs, ce qui permet d’identifier efficacement les opportunités et de contrôler les risques de transaction.
Les principaux risques de cette stratégie sont les suivants:
Le système d’équilibrage visuel peut être facilement manipulé par de fausses percées, ce qui entraîne une entrée inutile. Il peut être combiné avec d’autres indicateurs de filtrage.
La règle d’arrêt de perte fixe est facile à casser et peut être introduite dans l’arrêt de perte dynamique.
Les données de suivi ne sont pas complètes et peuvent surestimer l’efficacité de la stratégie.
Cette stratégie est plus adaptée aux marchés tendanciels, où la liquidation peut être moins performante. Les conditions d’entrée peuvent être optimisées pour identifier les tendances.
Cette stratégie peut être optimisée principalement dans les domaines suivants:
Ajout de filtres pour améliorer la qualité d’admission. Indicateurs de jugement auxiliaires tels que MACD, KDJ et autres.
Les stops dynamiques sont les stops qui traversent la moyenne N fois l’ATR et les stops qui dépassent les supports.
Vérification des retours multivariés. Vérification de la stabilité de la stratégie sur plus de marchés et sur des données plus longues.
Distinguer les tendances et la composition des marchés. Optimiser les mécanismes d’entrée pour les adapter aux différentes situations.
La stratégie prend en compte des facteurs tels que les tendances, la gestion des fonds, l’utilisation d’indicateurs d’équilibre de première ligne pour identifier les opportunités de négociation de plusieurs lignes courtes, et le contrôle des pertes individuelles en utilisant des règles de contrôle des risques. La stratégie est considérablement améliorée par rapport au système d’équilibre de première ligne original.
/*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")