L'oscillation de la stratégie de changement de crypto-indice de long-courte RSI est une stratégie de trading quantitative conçue pour les crypto-monnaies. Elle combine l'indicateur technique RSI avec l'indicateur ICHIMOKU pour identifier les signaux longs et courts pendant les oscillations de prix et atteindre des prix d'achat bas et de vente élevés.
La stratégie repose principalement sur les indicateurs et règles suivants:
Indicateur ICHIMOKU
Indicateur RSI
Règles d'entrée
Entrée longue: Tenkan croise au-dessus de Kijun (croix dorée) et les bris de prix à travers Senkou A & B Lines, avec RSI au-dessus de 50 en même temps
Entrée courte: croix de Tenkan en dessous de Kijun (croix de la mort) et prix décompose les lignes Senkou A & B, avec RSI inférieur à 50 en même temps
Règles de sortie
Sortie avec signal opposé
La stratégie tient compte de la tendance à moyen et long terme, des flux de capitaux à court terme et des conditions de surachat/survente pour saisir les opportunités d'inversion pendant l'oscillation.
1. Un jugement fondé sur de multiples indicateurs assure une grande certitude
La stratégie prend en compte la tendance et le jugement support/résistance d'ICHIMOKU, les conditions de surachat/survente du RSI, ainsi que le flux de capitaux basé sur la direction du corps de la bougie.
2. Convient à l'oscillation, à la prise de profit fréquente
Le marché des crypto-monnaies a de grandes fluctuations. Cette stratégie peut pleinement saisir les opportunités d'inversion pendant les oscillations et atteindre des achats fréquents bas et des ventes élevées.
3. Prévenir la poursuite des montées et battre les retraites, risque contrôlable
La stratégie prend en considération les tendances à moyen et long terme et les situations à court terme afin d'éviter le risque de poursuivre les hausses et de battre les baisses.
1. Peut manquer certaines opportunités de tendance
La stratégie se concentre principalement sur l'inversion, ce qui peut entraîner des baisses fréquentes lors de phases de tendance prolongées.
2. symbole unique, incapable de diversifier le risque
La stratégie ne négocie qu'un seul symbole et ne peut pas être diversifiée contre un risque de marché systématique.
3. Stop loss déclenché lors de mouvements extrêmes
Pendant les conditions de marché extrêmes comme les écarts ou les pics, le stop loss peut être déclenché pour forcer la sortie.
1. Ajouter un stop loss pour une perte simple inférieure
Le stop loss mobile ou le stop loss en pourcentage peuvent être utilisés pour verrouiller les bénéfices et empêcher une retraite complète.
2. Corréler avec les indices pour diversifier le risque de marché
Cherchez des opportunités de négociation entre des symboles fortement corrélés pour diversifier le risque de marché systématique.
3. Filtres supplémentaires pour réduire les transactions non valides
Des filtres tels que la volatilité des prix ou les changements de volume peuvent être ajoutés pour éviter les signaux d'inversion non valables et améliorer le taux de rentabilité.
La stratégie de commutation de crypto-monnaie RSI oscillant à court terme combine les indicateurs ICHIMOKU et RSI pour identifier les points d'inversion des crypto-monnaies, adaptés à l'achat bas et à la vente à haut profit pendant les oscillations. Elle définit également des règles de stop-loss pour contrôler le risque.
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1 ) UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations") // // === /INPUTS === // === BASE FUNCTIONS === haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low //Inputs ts_bars = input(20, minval=1, title="Tenkan-Sen Bars") ks_bars = input(50, minval=1, title="Kijun-Sen Bars") ssb_bars = input(120, minval=1, title="Senkou-Span B Bars") cs_offset = input(30, minval=1, title="Chikou-Span Offset") ss_offset = input(30, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") //Volatility //vollength = input(defval=1, title="VolLength") //voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target") //Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100) //MovingAverage = sma(Difference, vollength) //highvolatility = MovingAverage > voltarget //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// middle(len) => avg(lowest(len), highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = avg(tenkan, kijun) senkouB = middle(ssb_bars) //RSI change = change(haClose) gain = change >= 0 ? change : 0.0 loss = change < 0 ? (-1) * change : 0.0 avgGain = rma(gain, 14) avgLoss = rma(loss, 14) rs = avgGain / avgLoss rsi = 100 - (100 / (1 + rs)) ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1]) ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1]) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = mom(haClose, cs_offset-1) > 0 cs_cross_bear = mom(haClose, cs_offset-1) < 0 price_above_kumo = haClose > ss_high price_below_kumo = haClose < ss_low rsi_bullish = rsi > 50 rsi_bearish = rs < 50 bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond) strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond) strategy.close("Long", when=bearish and not short_entry and time_cond) strategy.close("Short", when=bullish and not long_entry and time_cond)