Stratégie de négociation de Bitlinc MARSI

Auteur:ChaoZhang est là., Date: le 29 février 2024 à 10h54h45
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de suivi de l'oscillation du RSI basée sur des ajustements annuels.

Principe de stratégie

  1. Définir les paramètres de la longueur de la MA, du RSI, de la bande supérieure/inférieure, du profit/stop-loss, de l'intervalle du cycle de négociation.
  2. Calculer la valeur de l'indice de résistance, indice de résistance = (Variation moyenne à la hausse) / ((Variation moyenne à la hausse + Variation moyenne à la baisse) *100)
  3. Graphique des lignes et bandes RSI
  4. L'indicateur RSI qui traverse la bande inférieure est un signal long, et celui qui traverse la bande supérieure est un signal court.
  5. Positions ouvertes avec ordres OCO
  6. Exécuter le stop loss et le take profit en fonction des paramètres

Analyse des avantages

  1. La fixation d'un cycle annuel de négociation permet d'éviter des environnements externes inappropriés.
  2. Le RSI reflète efficacement le surachat/survente. Une oscillation de gamme raisonnable filtre le bruit.
  3. Les ordres d'OCO + les paramètres stop loss/profit permettent un contrôle efficace des risques.

Analyse des risques

  1. L'exactitude du jugement du seuil RSI ne peut être garantie, des jugements erronés peuvent survenir.
  2. Des paramètres de cycle annuel incorrects peuvent manquer de meilleures opportunités ou entrer dans des environnements inappropriés.
  3. Un réglage de stop loss trop important peut entraîner de grosses pertes, tandis qu'un réglage de profit trop faible donne un faible profit.

Des méthodes telles que l'ajustement des paramètres du RSI, la plage de cycle de négociation, les ratios stop loss / profit peuvent être utilisées pour optimiser.

Directions d'optimisation

  1. Test des paramètres optimaux de l'indice de résistance pour différents marchés et cycles
  2. Analyser l'ensemble du cycle du marché, définir la meilleure phase de négociation annuelle
  3. Déterminer des ratios stop-loss/profit raisonnables par le biais de backtest
  4. Optimiser la sélection des produits de négociation et le dimensionnement des positions
  5. Combiner avec d'autres meilleures techniques pour une optimisation ultérieure

Résumé

Cette stratégie suit la tendance par les caractéristiques d'oscillation du cycle annuel du RSI, contrôlant efficacement les risques de trading.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Bitlinc MARSI Study AST",shorttitle="Bitlinc MARSI Study AST",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1000,currency="USD",pyramiding=0, calc_on_order_fills=false)

// === General Inputs ===
lengthofma = input(62, minval=1, title="Length of MA")
len = input(31, minval=1, title="Length")
upperband = input(89, minval=1, title='Upper Band for RSI')
lowerband = input(10, minval=1, title="Lower Band for RSI")
takeprofit =input(1.25, title="Take Profit Percent")
stoploss =input(.04, title ="Stop Loss Percent")
monthfrom =input(8, title = "Month Start")
monthuntil =input(12, title = "Month End")
dayfrom=input(1, title= "Day Start")
dayuntil=input(31, title= "Day End")

// === Innput Backtest Range ===
//FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
//FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
//ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === Create RSI ===
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi,linewidth = 2, color=purple)

// === Plot Bands ===
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=blue, transp=95)

// === Entry and Exit Methods ===
longCond =  crossover(rsi,lowerband)
shortCond =  crossunder(rsi,upperband)

// === Long Entry Logic ===
if (  longCond ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
    strategy.cancel(id="LONG")

// === Short Entry Logic ===    
if ( shortCond   ) 
    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND",  comment="SHORT")
else
    strategy.cancel(id="SHORT")

// === Take Profit and Stop Loss Logic ===
//strategy.exit("Take Profit LONG", "LONG", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
//strategy.exit("Take Profit SHORT", "SHORT", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
strategy.exit("LONG TAKE PROFIT", "LONG", profit = close * takeprofit / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", profit = close * takeprofit / syminfo.mintick)
strategy.exit("LONG STOP LOSS", "LONG", loss = close * stoploss / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", loss = close * stoploss / syminfo.mintick)



Plus de