Stratégie positionnelle Momentum NoroBands


Date de création: 2024-01-18 10:58:48 Dernière modification: 2024-01-18 10:58:48
Copier: 1 Nombre de clics: 561
1
Suivre
1617
Abonnés

Stratégie positionnelle Momentum NoroBands

Aperçu

La stratégie est une stratégie de rupture dynamique basée sur la théorie des bandes de Noro combinée à des techniques de quantification. Elle forme des signaux d’achat et de vente et permet des transactions de rupture de bandes en calculant plusieurs indicateurs tels que la moyenne, le RSI, les bandes et les couleurs du taureau et de l’ours.

Principe de stratégie

  1. Le haut et le bas de la bande sont calculés à partir de l’amplitude réelle moyenne. Une rupture de la bande supérieure est un signal positif et une rupture de la bande inférieure est un signal négatif.
  2. L’indicateur RSI est utilisé pour juger les zones de survente et de survente, avec un RSI inférieur à 30 pour les gains et supérieur à 70 pour les pertes.
  3. La direction de la dynamique des prix est déterminée par la rupture entre les prix les plus élevés et les prix les plus bas.
  4. Les marchés à capitaux multiples et les marchés à capitaux vacants sont déterminés par la couleur du taureau et de l’ours. Le vert représente le marché à capitaux multiples, le bullish; le rouge représente le bullish, le bearish.
  5. Le signal de transaction est le décalage de la ligne de parité.

Analyse des avantages

  1. Une combinaison d’indicateurs pour une meilleure précision.
  2. La combinaison de la théorie des bandes et des techniques de quantification rend la stratégie plus efficace.
  3. La rupture de la dynamique, combinée à des transactions inversées, augmente l’espace de profit.
  4. Il est évolutif et peut être adapté en fonction des paramètres du marché.

Analyse des risques

  1. Les paramètres doivent être constamment optimisés et testés.
  2. La réaction de l’opérateur de commutation multichannel ne peut pas être effectuée à temps et peut entraîner des pertes.
  3. Le nombre de transactions est plus élevé et les frais de transaction et les points de glissement sont plus importants.
  4. Les paramètres de bande passante doivent être ajustés en fonction des périodes.

Direction d’optimisation

  1. Vérification à plusieurs cycles de temps pour trouver la meilleure combinaison de paramètres.
  2. Augmenter les stratégies de stop-loss et réduire les pertes individuelles.
  3. La gestion des positions est renforcée et la rentabilité améliorée.
  4. Optimisation automatique des paramètres en combinaison avec l’apprentissage en profondeur

Résumer

Cette stratégie utilise de nombreux indicateurs techniques quantifiés typiques pour réaliser des profits efficaces grâce à la combinaison d’un indicateur de dynamique et d’un indicateur d’inversion. En même temps, la théorie de l’amplitude réelle moyenne est utilisée pour trouver un point d’entrée raisonnable.

Code source de la stratégie
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.5", shorttitle = "NoroBands str 1.5", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, defval = true, title = "Use ColorBar")
usecb = input(true, defval = true, title = "Use CryptoBottom")
usersi = input(true, defval = true, title = "Use RSI")
usemm = input(true, defval = true, title = "Use min/max")
usepyr = input(true, defval = true, title = "Use pyramiding")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
needpy = input(false, defval = false, title = "Show Avg.price line")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) and (close > strategy.position_avg_price or usepyr == false or strategy.position_size >= 0) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 and usersi == true and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
//dn3 = fastrsi > 95 and usersi = true ? 1 : 0

//Avg Price
colpy = needpy == false ? na : black
plot(strategy.position_avg_price, color = colpy)

up4 = close < strategy.position_avg_price and usepyr == true and strategy.position_size >= 0 ? 1 : 0 
dn4 = close > strategy.position_avg_price and usepyr == true and strategy.position_size <= 0 ? 1 : 0 

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true) or up4 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1 or dn4 == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)