بریک آؤٹ اور انٹیلجنٹ بولنگر بینڈس پرائس چینل کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-05 13:14:11
ٹیگز:

img

جائزہ

یہ حکمت عملی ایک بریک آؤٹ حکمت عملی ہے جو چارٹ پر سپورٹ اور مزاحمت کے علاقوں کا پتہ لگانے کے لئے متعدد ٹائم فریم (1 منٹ ، 5 منٹ ، 15 منٹ ، 1 گھنٹہ اور 4 گھنٹے) کو یکجا کرتی ہے۔

حکمت عملی منطق

یہ حکمت عملی معاونت اور مزاحمت کے علاقوں کا تعین کرنے کے لئے بولنگر بینڈ اور قیمت چینلز کا استعمال کرتی ہے۔ پہلے ، یہ ہر ٹائم فریم کے لئے بند ہونے والی قیمتوں کی سادہ چلتی اوسط (ایس ایم اے) اور معیاری انحراف (ایس ٹی ڈی ای وی) کا حساب لگاتا ہے تاکہ اوپری اور نچلی بینڈ کا تعین کیا جاسکے۔ اس کے بعد یہ بریکر بلاکس کا پتہ لگاتا ہے جو تجارتی حجم کے ساتھ ساتھ معاونت یا مزاحمت کی سطح سے قیمت کے وقفوں کی بنیاد پر طے ہوتے ہیں۔ جب قیمت اعلی حجم کے ساتھ معاونت یا مزاحمت کی سطح سے باہر نکلتی ہے تو بریکر بلاک بنتا ہے۔

ایک بار جب بریکر بلاک کا پتہ چل جاتا ہے تو ، اگر قیمت نچلے بینڈ سے اوپر ٹوٹ جاتی ہے تو خرید کا سگنل تیار کیا جاتا ہے ، اور اگر یہ اوپری بینڈ سے نیچے ٹوٹ جاتا ہے تو فروخت کا سگنل تیار کیا جاتا ہے۔ حکمت عملی ہر ٹائم فریم کے لئے قیمت کے چینلز بھی تیار کرتی ہے ، جو سپورٹ اور مزاحمت کی سطح کی نمائندگی کرتی ہے۔

اس کے علاوہ ، حکمت عملی ہر ٹائم فریم کے لئے منافع کی حد کی سطح طے کرتی ہے۔ اس کا مطلب یہ ہے کہ پوزیشنوں کو تفویض کردہ قیمت کی سطح کو منافع پر بند کرنا چاہئے۔ نقصانات کو محدود کرنے کے لئے اسٹاپ نقصان کی سطح بھی طے کی گئی ہے۔

فوائد کا تجزیہ

  • زیادہ جامع مارکیٹ کے رجحانات کا فیصلہ کرنے کے لئے کثیر ٹائم فریم تجزیہ کا استعمال کرتا ہے
  • بریکر بلاکس، بولنگر بینڈ چینلز اور حجم کو یکجا کرنے سے سگنل زیادہ قابل اعتماد ہوتے ہیں
  • منافع اور سٹاپ نقصان کے اہداف کا تعین کرنے سے خطرے کے کنٹرول میں مدد ملتی ہے

خطرے کا تجزیہ

  • غلط بولنگر بینڈ پیرامیٹر کی ترتیب غلط سگنل کا سبب بن سکتی ہے
  • بریکآؤٹس مختصر مدت مارکیٹ شور ہو سکتا ہے، whipsaws کی قیادت
  • کثیر ٹائم فریم فیصلے حکمت عملی کی پیچیدگی کو بڑھاتا ہے

خطرے کو مزید کم کرنے کے لئے بولنگر پیرامیٹرز کو بہتر بنانے، ہولڈنگ کی مدت بڑھانے یا روکنے کی ترتیب کی طرف سے کم کیا جا سکتا ہے.

اصلاح کی ہدایات

اس حکمت عملی کو کئی پہلوؤں میں بہتر بنایا جا سکتا ہے:

  1. حقیقی حمایت اور مزاحمت کی بہتر عکاسی کے لئے بولنگر پیرامیٹرز کو بہتر بنائیں

  2. توڑ کی سمت اور رفتار کا فیصلہ کرنے کے لئے مشین سیکھنے کے الگورتھم شامل کریں

  3. بہترین اندراج اور باہر نکلنے کے وقت کا تعین کرنے کے لئے اتار چڑھاؤ اشاریہ جات شامل کریں

  4. رجحانات اور توانائی کا تعین کرنے کے لئے MACD، KD جیسے مزید اشارے کو یکجا کریں

خلاصہ

یہ حکمت عملی کثیر ٹائم فریم تکنیکی تجزیہ کو مربوط کرتی ہے ، بریک آؤٹ ٹریڈنگ اور منافع اسٹاپ نقصان کے انتظام کے ذریعے خطرات کا انتظام کرتی ہے۔ یہ ایک لچکدار اور قابل اعتماد بریک آؤٹ سسٹم ہے۔ لیکن اصل مارکیٹوں کے مطابق پیرامیٹر ٹوننگ اور رسک کنٹرول کو مسلسل جانچ اور اصلاح کی ضرورت ہے۔


/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DZ Strategy ICT", overlay=true)

// Paramètres de l'indicateur
length1 = input.int(14, minval=1, title='Longueur 1 min')
deviations1 = input.float(2.0, title='Déviations 1 min')
multiplier1 = input.float(1.0, minval=0.1, maxval=10, title='Multiplicateur 1 min')
fibonacciLevel1 = input.float(0.618, title='Niveau de Fibonacci 1 min')
displacement1 = input.int(3, minval=1, title='Décalage de Displacement 1 min')
volumeThreshold1 = input.float(1.0, minval=0, title='Seuil de Volume 1 min')
fibLevelInput1 = input.float(0.0, "Niveau de Limite de Profit 1 min", minval=0.0)

length5 = input.int(14, minval=1, title='Longueur 5 min')
deviations5 = input.float(2.0, title='Déviations 5 min')
multiplier5 = input.float(1.0, minval=0.1, maxval=10, title='Multiplicateur 5 min')
fibonacciLevel5 = input.float(0.618, title='Niveau de Fibonacci 5 min')
displacement5 = input.int(3, minval=1, title='Décalage de Displacement 5 min')
volumeThreshold5 = input.float(1.0, minval=0, title='Seuil de Volume 5 min')
fibLevelInput5 = input.float(0.0, "Niveau de Limite de Profit 5 min", minval=0.0)

length15 = input.int(14, minval=1, title='Longueur 15 min')
deviations15 = input.float(2.0, title='Déviations 15 min')
multiplier15 = input.float(1.0, minval=0.1, maxval=10, title='Multiplicateur 15 min')
fibonacciLevel15 = input.float(0.618, title='Niveau de Fibonacci 15 min')
displacement15 = input.int(3, minval=1, title='Décalage de Displacement 15 min')
volumeThreshold15 = input.float(1.0, minval=0, title='Seuil de Volume 15 min')
fibLevelInput15 = input.float(0.0, "Niveau de Limite de Profit 15 min", minval=0.0)

length60 = input.int(14, minval=1, title='Longueur 1 h')
deviations60 = input.float(2.0, title='Déviations 1 h')
multiplier60 = input.float(1.0, minval=0.1, maxval=10, title='Multiplicateur 1 h')
fibonacciLevel60 = input.float(0.618, title='Niveau de Fibonacci 1 h')
displacement60 = input.int(3, minval=1, title='Décalage de Displacement 1 h')
volumeThreshold60 = input.float(1.0, minval=0, title='Seuil de Volume 1 h')
fibLevelInput60 = input.float(0.0, "Niveau de Limite de Profit 1 h", minval=0.0)

length240 = input.int(14, minval=1, title='Longueur 4 h')
deviations240 = input.float(2.0, title='Déviations 4 h')
multiplier240 = input.float(1.0, minval=0.1, maxval=10, title='Multiplicateur 4 h')
fibonacciLevel240 = input.float(0.618, title='Niveau de Fibonacci 4 h')
displacement240 = input.int(3, minval=1, title='Décalage de Displacement 4 h')
volumeThreshold240 = input.float(1.0, minval=0, title='Seuil de Volume 4 h')
fibLevelInput240 = input.float(0.0, "Niveau de Limite de Profit 4 h", minval=0.0)

// Calcul des supports et résistances pour chaque plage de temps
basis1 = ta.sma(close, length1)
range_1 = multiplier1 * ta.stdev(close, length1)
upper1 = basis1 + deviations1 * range_1
lower1 = basis1 - deviations1 * range_1

basis5 = ta.sma(close, length5)
range_5 = multiplier5 * ta.stdev(close, length5)
upper5 = basis5 + deviations5 * range_5
lower5 = basis5 - deviations5 * range_5

basis15 = ta.sma(close, length15)
range_15 = multiplier15 * ta.stdev(close, length15)
upper15 = basis15 + deviations15 * range_15
lower15 = basis15 - deviations15 * range_15

basis60 = ta.sma(close, length60)
range_60 = multiplier60 * ta.stdev(close, length60)
upper60 = basis60 + deviations60 * range_60
lower60 = basis60 - deviations60 * range_60

basis240 = ta.sma(close, length240)
range_240 = multiplier240 * ta.stdev(close, length240)
upper240 = basis240 + deviations240 * range_240
lower240 = basis240 - deviations240 * range_240

// Calcul du volume moyen sur chaque période donnée
averageVolume1 = ta.sma(volume, length1)
averageVolume5 = ta.sma(volume, length5)
averageVolume15 = ta.sma(volume, length15)
averageVolume60 = ta.sma(volume, length60)
averageVolume240 = ta.sma(volume, length240)

// Détection du Breaker Block en fonction du déplacement et du volume pour chaque plage de temps
breakerBlock1 = ta.crossover(close[displacement1], lower1) and volume > volumeThreshold1 * averageVolume1
breakerBlock1 := breakerBlock1 or (ta.crossunder(close[displacement1], upper1) and volume > volumeThreshold1 * averageVolume1)

breakerBlock5 = ta.crossover(close[displacement5], lower5) and volume > volumeThreshold5 * averageVolume5
breakerBlock5 := breakerBlock5 or (ta.crossunder(close[displacement5], upper5) and volume > volumeThreshold5 * averageVolume5)

breakerBlock15 = ta.crossover(close[displacement15], lower15) and volume > volumeThreshold15 * averageVolume15
breakerBlock15 := breakerBlock15 or (ta.crossunder(close[displacement15], upper15) and volume > volumeThreshold15 * averageVolume15)

breakerBlock60 = ta.crossover(close[displacement60], lower60) and volume > volumeThreshold60 * averageVolume60
breakerBlock60 := breakerBlock60 or (ta.crossunder(close[displacement60], upper60) and volume > volumeThreshold60 * averageVolume60)

breakerBlock240 = ta.crossover(close[displacement240], lower240) and volume > volumeThreshold240 * averageVolume240
breakerBlock240 := breakerBlock240 or (ta.crossunder(close[displacement240], upper240) and volume > volumeThreshold240 * averageVolume240)

// Affichage du Breaker Block sur le graphique
bgcolor(breakerBlock1 ? color.new(color.yellow, 70) : na)
bgcolor(breakerBlock5 ? color.new(color.yellow, 70) : na)
bgcolor(breakerBlock15 ? color.new(color.yellow, 70) : na)
bgcolor(breakerBlock60 ? color.new(color.yellow, 70) : na)
bgcolor(breakerBlock240 ? color.new(color.yellow, 70) : na)

// Définition de la zone limite de l'ordre de profit pour chaque plage de temps
fibLevel1 = basis1 * fibonacciLevel1
fibLevel5 = basis5 * fibonacciLevel5
fibLevel15 = basis15 * fibonacciLevel15
fibLevel60 = basis60 * fibonacciLevel60
fibLevel240 = basis240 * fibonacciLevel240

// Signal d'achat modifié en fonction du Breaker Block et du déplacement pour chaque plage de temps
buySignal1 = ta.crossover(close[displacement1], lower1) and volume > volumeThreshold1 * averageVolume1
buySignal5 = ta.crossover(close[displacement5], lower5) and volume > volumeThreshold5 * averageVolume5
buySignal15 = ta.crossover(close[displacement15], lower15) and volume > volumeThreshold15 * averageVolume15
buySignal60 = ta.crossover(close[displacement60], lower60) and volume > volumeThreshold60 * averageVolume60
buySignal240 = ta.crossover(close[displacement240], lower240) and volume > volumeThreshold240 * averageVolume240

// Signal de vente modifié en fonction du Breaker Block et du déplacement pour chaque plage de temps
sellSignal1 = ta.crossunder(close[displacement1], upper1) and volume > volumeThreshold1 * averageVolume1
sellSignal5 = ta.crossunder(close[displacement5], upper5) and volume > volumeThreshold5 * averageVolume5
sellSignal15 = ta.crossunder(close[displacement15], upper15) and volume > volumeThreshold15 * averageVolume15
sellSignal60 = ta.crossunder(close[displacement60], upper60) and volume > volumeThreshold60 * averageVolume60
sellSignal240 = ta.crossunder(close[displacement240], upper240) and volume > volumeThreshold240 * averageVolume240


// Tracé des niveaux de limite de profit pour chaque plage de temps
hline(fibLevelInput1, color=color.green, linestyle=hline.style_dashed, title="Niveau de Limite de Profit 1 min")
hline(fibLevelInput5, color=color.green, linestyle=hline.style_dashed, title="Niveau de Limite de Profit 5 min")
hline(fibLevelInput15, color=color.green, linestyle=hline.style_dashed, title="Niveau de Limite de Profit 15 min")
hline(fibLevelInput60, color=color.green, linestyle=hline.style_dashed, title="Niveau de Limite de Profit 1 h")
hline(fibLevelInput240, color=color.green, linestyle=hline.style_dashed, title="Niveau de Limite de Profit 4 h")

// Définition des ordres de vente et d'achat pour chaque plage de temps
if buySignal1
    strategy.entry("Achat 1 min", strategy.long)
    
if sellSignal1
    strategy.entry("Vente 1 min", strategy.short)

if buySignal5
    strategy.entry("Achat 5 min", strategy.long)
    
if sellSignal5
    strategy.entry("Vente 5 min", strategy.short)

if buySignal15
    strategy.entry("Achat 15 min", strategy.long)
    
if sellSignal15
    strategy.entry("Vente 15 min", strategy.short)

if buySignal60
    strategy.entry("Achat 1 h", strategy.long)
    
if sellSignal60
    strategy.entry("Vente 1 h", strategy.short)

if buySignal240
    strategy.entry("Achat 4 h", strategy.long)
    
if sellSignal240
    strategy.entry("Vente 4 h", strategy.short)

// Configuration des ordres de sortie (Take Profit) pour chaque plage de temps
profitRatio = 2
stopLossRatio = 1

stopLossLevel1 = strategy.position_avg_price * (1 - stopLossRatio / (stopLossRatio + profitRatio))
stopLossLevel5 = strategy.position_avg_price * (1 - stopLossRatio / (stopLossRatio + profitRatio))
stopLossLevel15 = strategy.position_avg_price * (1 - stopLossRatio / (stopLossRatio + profitRatio))
stopLossLevel60 = strategy.position_avg_price * (1 - stopLossRatio / (stopLossRatio + profitRatio))
stopLossLevel240 = strategy.position_avg_price * (1 - stopLossRatio / (stopLossRatio + profitRatio))

strategy.exit("Stop Loss 1 min", "Achat 1 min", stop=stopLossLevel1)
strategy.exit("Stop Loss 1 min", "Vente 1 min", stop=stopLossLevel1)

strategy.exit("Stop Loss 5 min", "Achat 5 min", stop=stopLossLevel5)
strategy.exit("Stop Loss 5 min", "Vente 5 min", stop=stopLossLevel5)

strategy.exit("Stop Loss 15 min", "Achat 15 min", stop=stopLossLevel15)
strategy.exit("Stop Loss 15 min", "Vente 15 min", stop=stopLossLevel15)

strategy.exit("Stop Loss 1 h", "Achat 1 h", stop=stopLossLevel60)
strategy.exit("Stop Loss 1 h", "Vente 1 h", stop=stopLossLevel60)

مزید