La stratégie courte de VWAP-RSI est survendue sous BTC Crossunder

Auteur:ChaoZhang est là., Date: le 29 décembre 2023 14:12:54
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie courte de BTC à travers les délais basée sur l'indicateur RSI de VWAP. Il calcule le prix moyen pondéré par volume (VWAP) de chaque chandelier pour obtenir une courbe VWAP, puis applique l'indicateur RSI à la courbe.

La logique de la stratégie

  1. Calculer le VWAP de chaque chandelier pour obtenir une courbe VWAP
  2. Appliquer l'indicateur RSI à la courbe VWAP, avec une durée de 20 jours, un niveau de surachat à 85 et un niveau de survente à 30
  3. Lorsque le RSI passe de la zone de surachat (85) à la zone de survente (30), ouvrez une position courte
  4. Position fermée après détention de 28 bougies, ou si l'indice de volatilité franchit à nouveau la ligne de survente (30)

Analyse des avantages

  1. Utiliser le VWAP au lieu du simple prix de clôture pour refléter le prix de négociation réel
  2. Identifier l'état de surachat/survente avec l'indice de survente pour éviter d'acheter à prix élevé et de vendre à bas prix
  3. Commercer à travers les délais pour éviter d'être pris au piège
  4. Risque contrôlable avec 28 points de stop-loss

Risques et solutions

  1. Les prix augmentent rapidement en raison des événements du cygne noir, incapables d'arrêter les pertes.
    • Adopter des échanges transfrontaliers pour réduire les risques d'être pris au piège
  2. Réglage inapproprié des paramètres, facilement manquer des opportunités
    • Test et optimisation des paramètres de l'indice de résistance et des niveaux de surachat/survente
  3. RSI incapable de franchir la zone de survente
    • Combiner avec d'autres indicateurs pour déterminer la tendance, ajuster les paramètres de manière flexible

Directions d'optimisation

  1. Testez plus de combinaisons de paramètres pour trouver l'optimum
  2. Combiner avec le MACD, le KD, etc. pour juger de l'état de surachat/survente
  3. Paramètres d'essai réglés séparément pour différents actifs
  4. Optimiser le mécanisme de stop loss, définir une plage de stop loss basée sur la volatilité

Résumé

Cette stratégie identifie le statut de surachat/survente de BTC avec la combinaison de VWAP et RSI. En négociant sur des délais multiples, elle peut contrôler efficacement les risques.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - SHORT SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows the Short and close shoret positions --------------- //

timebull = stratbull and time > stratstart
timebear = stratbear and time > stratstart


strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="")
strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")

Plus de