ڈائنامک ملٹی پیریڈ ایکسپونیشنل موونگ ایوریج کراس اوور اسٹریٹجی اور ڈرا ڈاؤن آپٹیمائزیشن سسٹم

EMA MA SMA RSI
تخلیق کی تاریخ: 2024-12-27 15:29:38 آخر میں ترمیم کریں: 2024-12-27 15:29:38
کاپی: 1 کلکس کی تعداد: 415
1
پر توجہ دیں
1617
پیروکار

ڈائنامک ملٹی پیریڈ ایکسپونیشنل موونگ ایوریج کراس اوور اسٹریٹجی اور ڈرا ڈاؤن آپٹیمائزیشن سسٹم

جائزہ

حکمت عملی ایک مقداری تجارتی نظام ہے جس کی بنیاد متعدد ایکسپونینشل موونگ ایوریج (EMA) کراس اوور اور ریٹیسمنٹ آپٹیمائزیشن پر ہے۔ یہ پانچ موونگ ایوریجز کا استعمال کرتا ہے، EMA5، EMA8، EMA13، EMA21 اور EMA50، اور مختلف ادوار کی موونگ ایوریجز اور قیمتوں اور موونگ ایوریج کے درمیان پوزیشنی تعلق کو دیکھ کر پوزیشنز کے بیچ اوپننگ اور ڈائنامک کلوزنگ کا احساس کرتا ہے۔ حکمت عملی رقم کے انتظام کے نظام کو اپناتی ہے، پوزیشنوں کو مختلف تناسب جیسے 20%، 40%، وغیرہ میں تقسیم کرتی ہے، اور مارکیٹ کے مختلف اشاروں کے مطابق بتدریج پوزیشنوں کو بڑھاتی یا کم کرتی ہے۔

حکمت عملی کا اصول

حکمت عملی کی بنیادی منطق میں داخلے کی تین اہم شرائط اور دو خارجی شرائط شامل ہیں:

  1. پوزیشن کھولنے کے سگنلز میں شامل ہیں: جب EMA5 EMA8 کو کراس کرتا ہے تو 20% کی پوزیشن کا اضافہ کرنا؛ EMA8 EMA21 کو کراس کرنے پر 40% کی پوزیشن کا اضافہ کرنا
  2. ریٹریسمنٹ آپٹیمائزیشن سسٹم: جب قیمت EMA50 سے ٹکرا جائے تو 20% کی پوزیشن کھولیں۔
  3. اختتامی سگنل: جب EMA5 EMA13 سے نیچے کراس کرتا ہے، جب EMA8 EMA21 سے نیچے کراس کرتا ہے، تمام پوزیشنز کو بند کر دیں۔
  4. رسک کنٹرول: جب قیمت، EMA5 اور EMA8 ایک ہی وقت میں EMA50 سے نیچے ہوں، تو فوری طور پر تمام پوزیشنوں کو صاف کریں

اسٹریٹجک فوائد

  1. متعدد تصدیقی طریقہ کار: متعدد متحرک اوسط کراس اوور کے ذریعے زیادہ قابل اعتماد تجارتی سگنل فراہم کریں۔
  2. متحرک پوزیشن مینجمنٹ: خطرات کو مؤثر طریقے سے کنٹرول کرنے کے لیے مختلف سگنل کی طاقت کے مطابق مختلف پوزیشن کے تناسب کا استعمال کریں۔
  3. ریٹریسمنٹ آپٹیمائزیشن ڈیزائن: اندراج کی درستگی کو بہتر بنانے کے لیے ریٹیسمنٹ خریدنے کے لیے EMA50 کو سپورٹ لیول کے طور پر استعمال کریں
  4. لچکدار لیکویڈیشن میکانزم: منافع کو برقرار رکھتے ہوئے ریٹیسمنٹ کو کنٹرول کرنے کے لیے مرحلہ وار پرسماپن حکمت عملی اپنائیں
  5. پرفیکٹ رسک کنٹرول: تیز گراوٹ کی وجہ سے ہونے والے نقصانات کو روکنے کے لیے سٹاپ نقصان کی واضح شرائط طے کریں۔

اسٹریٹجک رسک

  1. موونگ ایوریج ہسٹریسس: موونگ ایوریج میں ہی ہسٹریسس ہوتا ہے، جو سگنل میں تاخیر کا سبب بن سکتا ہے۔
  2. اتار چڑھاؤ والے بازار کا خطرہ: متواتر جھوٹے بریک آؤٹ ایک طرف اور اتار چڑھاؤ والے بازار میں ہو سکتے ہیں
  3. اوور ٹریڈنگ کا خطرہ: کھلنے کے متعدد حالات ضرورت سے زیادہ تجارت کا باعث بن سکتے ہیں۔
  4. عملدرآمد کے اخراجات: بار بار تجارت کے نتیجے میں ٹرانزیکشن فیس زیادہ ہو سکتی ہے۔
  5. نظامی خطرہ: اتار چڑھاؤ والے بازار میں پوزیشنیں بند کرنے میں بہت دیر ہو سکتی ہے۔

حکمت عملی کی اصلاح کی سمت

  1. ٹرینڈ فلٹرز کا تعارف: آپ لین دین کو انجام دینے کے لیے ADX جیسے رجحان کے اشارے شامل کر سکتے ہیں جب کوئی مضبوط رجحان ہو۔
  2. پوزیشن مینجمنٹ کو بہتر بنائیں: اتار چڑھاؤ کی بنیاد پر پوزیشن کے سائز کو متحرک طور پر ایڈجسٹ کریں۔
  3. قیمت کے پیٹرن کی شناخت شامل کریں: اندراج کی درستگی کو بہتر بنانے کے لیے K-line پیٹرن کو یکجا کریں۔
  4. اسٹاپ پرافٹ میکانزم کو بہتر بنائیں: آپ منافع کو بہتر طریقے سے بند کرنے کے لیے ایک متحرک اسٹاپ پرافٹ لائن سیٹ کر سکتے ہیں۔
  5. مارکیٹ کے جذبات کے اشارے شامل کریں: مارکیٹ کی حیثیت کو فلٹر کرنے کے لیے RSI اور دیگر اشارے متعارف کروائیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Strategy with Price & EMA5 & EMA8 < EMA50 Condition", overlay=true, margin_long=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// ==============================
// INPUTS
// ==============================
lengthEMA5 = input.int(5, "EMA5 Length")
lengthEMA8 = input.int(8, "EMA8 Length")
lengthEMA13 = input.int(13, "EMA13 Length")
lengthEMA21 = input.int(21, "EMA21 Length")
lengthEMA50 = input.int(50, "EMA50 Length")

// Tam pozisyon boyutu (örnek: 100 birim)
full_position = 100.0 
qty20 = full_position * 0.2
qty40 = full_position * 0.4

// ==============================
// EMA HESAPLAMALARI
// ==============================
ema5 = ta.ema(close, lengthEMA5)
ema8 = ta.ema(close, lengthEMA8)
ema13 = ta.ema(close, lengthEMA13)
ema21 = ta.ema(close, lengthEMA21)
ema50 = ta.ema(close, lengthEMA50)

// ==============================
// KESİŞİMLERİ TESPİT FONKSİYONLARI
// ==============================
crossUp(src1, src2) => ta.crossover(src1, src2)
crossDown(src1, src2) => ta.crossunder(src1, src2)

// ==============================
// STRATEJİ KOŞULLARI
// ==============================

// Adım 1: EMA5, EMA8’i yukarı keserse %20’lik alım
step1_condition = crossUp(ema5, ema8)

// Adım 2: EMA5, EMA8’i yukarı kestikten sonra EMA5, EMA13’ü de yukarı keserse %20 daha alım
step2_condition = crossUp(ema5, ema13)

// Adım 3: EMA8, EMA21’i yukarı keserse %40 alım
step3_condition = crossUp(ema8, ema21)

// Çıkış koşulları:
// EMA5, EMA13’ü aşağı keserse pozisyonun %50’sini kapat.
// EMA8, EMA21’i aşağı keserse tüm pozisyonu kapat.
half_close_condition = crossDown(ema5, ema13)
full_close_condition = crossDown(ema8, ema21)

// Düşüşlerde EMA50'ye dokunma -> %20 alım
pullback_condition = low <= ema50 or close <= ema50

// Fiyat tekrar EMA50'nin üzerine çıkarsa -> %20 alım
above_ema50_condition = crossUp(close, ema50)

// Yeni ek koşul:  
// Fiyat, EMA5 ve EMA8’in herbiri EMA50’nin altındaysa tüm pozisyon kapat.
// Bu durum tam bir düşüş senaryosunu işaret eder.
all_below_condition = (close < ema50) and (ema5 < ema50) and (ema8 < ema50)

// Mevcut pozisyon büyüklüğü
pos_size = strategy.position_size

// ==============================
// POZİSYON GİRİŞLERİ
// ==============================
if (step1_condition and pos_size == 0)
    strategy.entry("Step1", strategy.long, qty=qty20)

if (step2_condition and strategy.opentrades < 2)
    strategy.entry("Step2", strategy.long, qty=qty20)

if (step3_condition and strategy.opentrades < 3)
    strategy.entry("Step3", strategy.long, qty=qty40)

// Pullback: Fiyat EMA50'ye temas ederse ve pozisyon yoksa %20 alım
if (pullback_condition and strategy.opentrades == 0)
    strategy.entry("Pullback", strategy.long, qty=qty20)

// Fiyat EMA50’nin üzerine çıkarsa ve pozisyon %100'e ulaşmamışsa %20 alım
if (above_ema50_condition and strategy.opentrades < 4)
    strategy.entry("Above50", strategy.long, qty=qty20)

// ==============================
// POZİSYON YÖNETİMİ (ÇIKIŞLAR)
// ==============================
if (all_below_condition and strategy.opentrades > 0)
    // Tüm pozisyonu kapat çünkü sert düşüş senaryosuna girildi
    strategy.close("Step3")
    strategy.close("Step2")
    strategy.close("Step1")
    strategy.close("Pullback")
    strategy.close("Above50")
else
    // Yarı kapatma (EMA5, EMA13 aşağı kesişimi)
    if (half_close_condition)
        totalTrades = strategy.opentrades
        // Öncelikle en son açılan en büyük pozisyonu kapatarak kademeli küçültme
        if (totalTrades >= 3)
            strategy.close("Step3")     // Bu 40% kapatır
        else if (totalTrades == 2)
            strategy.close("Step2")     // Bu 20% kapatır
        else if (totalTrades == 1)
            strategy.close("Step1")     // Bu da 20% kapatır (tamamen çıkar, ama basitlik için böyle)

    // Tam kapatma (EMA8, EMA21 aşağı kesişimi)
    if (full_close_condition)
        // Açık olan tüm pozisyonları kapat
        strategy.close("Step3")
        strategy.close("Step2")
        strategy.close("Step1")
        strategy.close("Pullback")
        strategy.close("Above50")

// ==============================
// GÖRSELLEŞTİRME
// ==============================
plot(ema5, "EMA5", color=color.new(color.yellow, 0))
plot(ema8, "EMA8", color=color.new(color.blue, 0))
plot(ema13, "EMA13", color=color.new(color.green, 0))
plot(ema21, "EMA21", color=color.new(color.red, 0))
plot(ema50, "EMA50", color=color.new(color.purple, 0))