ملٹی انڈیکیٹر کراس سگنل فیوژن ٹریڈنگ سسٹم

SMA MACD RSI BB EMA 动量指标 布林带 移动平均线 风险管理 止损策略
تخلیق کی تاریخ: 2025-06-25 10:36:48 آخر میں ترمیم کریں: 2025-06-25 10:36:48
کاپی: 3 کلکس کی تعداد: 334
2
پر توجہ دیں
319
پیروکار

ملٹی انڈیکیٹر کراس سگنل فیوژن ٹریڈنگ سسٹم ملٹی انڈیکیٹر کراس سگنل فیوژن ٹریڈنگ سسٹم

جائزہ

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

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

اس حکمت عملی کا بنیادی اصول کثیر اشارے کراس سگنل کے امتزاج کے ذریعہ تجارت کی سمت کی تصدیق کرنا ہے ، جس میں بنیادی طور پر درج ذیل کلیدی اجزاء شامل ہیں:

  1. ملٹی اشارے سگنل کی پیداوار

    • منتقل اوسط کراس سگنل: مختصر مدت ((20) اور طویل مدتی ((50) سادہ منتقل اوسط کے کراس کے ذریعے رجحان کی سمت کا فیصلہ کریں
    • آر ایس آئی اوور خرید اوور فروخت سگنل: آر ایس آئی اشارے کا استعمال کرتے ہوئے مارکیٹ میں اوور خرید ((> 70) اور اوور فروخت ((< 30) کی حیثیت کی نشاندہی کریں
    • MACD کراس سگنل: MACD لائن اور سگنل لائن کے کراسنگ کے ذریعے حرکیات کی سمت کی تصدیق کرنا
    • بُلن بینڈ ٹچ سگنل: قیمتوں کے بُلن بینڈ ٹچ یا ٹچ ہونے کا اندازہ لگانا اور ممکنہ الٹ پوائنٹس کی شناخت کرنا
  2. سگنل گنتی کا طریقہ کار

    • حکمت عملی کے اعداد و شمار کی تعداد میں زیادہ سگنل اور نظر انداز سگنل
    • صرف تب ہی تجارت کو متحرک کیا جائے گا جب کسی سمت میں سگنل کی تعداد پہلے سے طے شدہ حد (ڈیفالٹ 2) تک پہنچ جائے اور ریورس سگنل کی تعداد سے تجاوز کر جائے
  3. خطرے کے انتظام کے نظام

    • خطرہ فی صد کی بنیاد پر پوزیشن کا حساب کتاب: پوزیشن کا سائز ہر تجارت کے لئے خطرہ تناسب (ڈیفالٹ 2٪) اور سٹاپ نقصان فاصلے کی بنیاد پر متحرک طور پر شمار کیا جاتا ہے
    • زیادہ سے زیادہ پوزیشن کی حد: زیادہ سے زیادہ پوزیشن کی حد مقرر کریں (ڈیفالٹ 10٪) ، ضرورت سے زیادہ فائدہ اٹھانے سے بچنے کے لئے
    • اسٹاپ نقصان کی حکمت عملی: ہر تجارت پر فیصد کی بنیاد پر اسٹاپ نقصان کی حد طے کی جاتی ہے (ڈیفالٹ 2٪)
  4. ریورس سگنل صفائی کا طریقہ کار

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

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

کوڈ کا گہرائی سے تجزیہ کرتے ہوئے ، اس حکمت عملی میں درج ذیل نمایاں فوائد ہیں:

  1. کثیر جہتی سگنل کی تصدیق: ایک ہی وقت میں ایک ہی سمت میں سگنل دینے کے لئے متعدد تکنیکی اشارے کی ضرورت سے ، جعلی توڑ پھوڑ اور غلط سگنل کے خطرے کو مؤثر طریقے سے کم کیا گیا ہے ، جس سے تجارت کی درستگی اور وشوسنییتا میں اضافہ ہوا ہے۔

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

  3. لچکدار پیرامیٹرز ترتیبحکمت عملی میں متعدد ایڈجسٹمنٹ پیرامیٹرز شامل ہیں ، بشمول اشارے کے دورانیے ، رسک تناسب ، کم سے کم سگنل کی تعداد ، وغیرہ۔ صارف مختلف مارکیٹ کے حالات اور ذاتی خطرے کی ترجیحات کے مطابق انفرادی ایڈجسٹمنٹ کرسکتا ہے۔

  4. بصری سگنل دکھائیں: ایک ٹیبل کی شکل میں ہر اشارے سگنل کی حیثیت اور مجموعی سگنل کی طاقت کو بصری طور پر ظاہر کرنا ، تاجر کو موجودہ مارکیٹ کی صورتحال اور ممکنہ تجارتی مواقع کا فوری اندازہ لگانے میں مدد کرنا۔

  5. بلٹ میں کارکردگی کی نگرانیحکمت عملی: حکمت عملی کی کارکردگی کو مستقل طور پر جانچنے اور بہتر بنانے کے لئے ٹریڈرز کو کلیدی کارکردگی کے اشارے ، جیسے کل تجارت ، جیت کی شرح اور زیادہ سے زیادہ واپسی کا اصل وقت میں سراغ لگانا۔

اسٹریٹجک رسک

اس جامع حکمت عملی کے باوجود ، مندرجہ ذیل ممکنہ خطرات اور حدود موجود ہیں:

  1. اوور اوپٹیمائزڈ خطرات: حکمت عملی میں متعدد تکنیکی اشارے استعمال کیے جاتے ہیں جن میں سے ہر ایک میں متعدد ایڈجسٹ پیرامیٹرز ہوتے ہیں ، جس سے تاریخی اعداد و شمار کو زیادہ سے زیادہ فٹ ہونے کا سبب بنتا ہے اور مستقبل میں خراب کارکردگی کا مظاہرہ ہوتا ہے۔ اس کا حل مختلف ٹائم فریم اور مارکیٹ کے حالات میں کافی حد تک بیک اپ اور فارورڈ ٹیسٹنگ ہے۔

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

  3. مارکیٹ کی عدم استحکام: یہ حکمت عملی واضح رجحانات والی مارکیٹوں میں اچھی کارکردگی کا مظاہرہ کرتی ہے ، لیکن اس کے نتیجے میں اکثر غلط سگنل اور غیر ضروری تجارت ہوسکتی ہے جب مارکیٹ کی سطح یا شدید اتار چڑھاؤ کا سامنا کرنا پڑتا ہے۔ فلٹرنگ کی شرائط کو بڑھانے یا حکمت عملی کی حساسیت کو عارضی طور پر کم کرنے کی سفارش کی گئی ہے۔

  4. پیچیدگی اور روباکو کے درمیان توازن: کثیر اشارے کی حکمت عملی کی پیچیدگی اس کی لچک اور موافقت کو متاثر کرسکتی ہے۔ مختلف مارکیٹ کے ماحول میں ، کچھ اشارے دوسروں کے مقابلے میں زیادہ موثر ہوسکتے ہیں ، جس میں متحرک ویٹرننگ میکانزم کی ضرورت ہوتی ہے۔

  5. فکسڈ سٹاپ نقصان کا خطرہ: فکسڈ فی صد اسٹاپ کا استعمال آسان اور بدیہی ہے ، لیکن مارکیٹ میں اتار چڑھاؤ کی تبدیلیوں کے ساتھ اچھی طرح سے موافقت نہیں کرسکتا ہے۔ اسٹاپ حکمت عملی کی موافقت کو بڑھانے کے لئے اے ٹی آر یا اتار چڑھاؤ کی بنیاد پر متحرک اسٹاپ کا استعمال کرنے پر غور کریں۔

اصلاح کی سمت

حکمت عملی کے گہرے تجزیے کے مطابق ، کچھ ممکنہ اصلاحات یہ ہیں:

  1. متحرک سگنل وزنی نظام: ہر سگنل کو متحرک وزن تفویض کیا جاسکتا ہے ، نہ کہ محض حساب کتاب ، مختلف مارکیٹ کے حالات اور ہر اشارے کی تاریخی درستگی کے مطابق۔ مثال کے طور پر ، رجحان کی منڈیوں میں منتقل اوسط اور MACD کے وزن میں اضافہ ہوسکتا ہے ، جبکہ ہلچل کی منڈیوں میں RSI اور برلن بینڈ کے وزن میں اضافہ ، حکمت عملی کی خود کو اپنانے کی صلاحیت کو بڑھا سکتا ہے۔

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

  3. نقصان کی روک تھام کی حکمت عملی کو بہتر بنائیں: مقررہ فیصد اسٹاپ کو اے ٹی آر یا تاریخی اتار چڑھاؤ کی بنیاد پر متحرک اسٹاپ کے ساتھ تبدیل کرنا ، جو مارکیٹ کے حقیقی اتار چڑھاؤ کے حالات کے مطابق بہتر ہے۔ اس کے علاوہ ، ایک متحرک اسٹاپ میکانزم متعارف کرانے پر غور کیا جاسکتا ہے ، جو پہلے سے حاصل ہونے والے منافع کی حفاظت کرتا ہے۔

  4. اضافی وقت فلٹرنگ: ٹریڈنگ ٹائم فلٹرنگ کے طریقہ کار کو متعارف کروائیں تاکہ مارکیٹ کے کھلنے ، بند ہونے یا اہم معاشی اعداد و شمار کے اجراء جیسے اعلی اتار چڑھاؤ کے دوران تجارت پر عملدرآمد سے گریز کیا جاسکے ، جس سے سلائڈ پوائنٹس اور عملدرآمد کا خطرہ کم ہوجائے۔

  5. مشین لرننگ ٹیکنالوجی کا انضمام: مشین لرننگ الگورتھم کے ذریعہ ہر اشارے کے پیرامیٹرز اور سگنل وزن کو بہتر بنانا ، حکمت عملی کی خود کی موافقت اور پیشن گوئی کی درستگی کو بہتر بنانا۔ الگورتھم جیسے رینڈم جنگل یا سپورٹ ویکٹر مشینیں مختلف سگنل مجموعوں کی کامیابی کے امکانات کی پیش گوئی کرنے کے لئے استعمال کی جاسکتی ہیں۔

خلاصہ کریں۔

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

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2025-06-01 00:00:00
end: 2025-06-24 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Multi-Indicator Trading Bot", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// ===== INPUT PARAMETERS =====
// Risk Management
risk_per_trade = input.float(2.0, title="Risk Per Trade (%)", minval=0.1, maxval=10.0, step=0.1)
max_position_size = input.float(10.0, title="Max Position Size (%)", minval=1.0, maxval=50.0, step=1.0)
use_stop_loss = input.bool(true, title="Use Stop Loss")
stop_loss_pct = input.float(2.0, title="Stop Loss (%)", minval=0.5, maxval=10.0, step=0.1)

// Technical Indicator Parameters
sma_short = input.int(20, title="SMA Short Period", minval=5, maxval=50)
sma_long = input.int(50, title="SMA Long Period", minval=20, maxval=200)
rsi_period = input.int(14, title="RSI Period", minval=5, maxval=50)
rsi_oversold = input.int(30, title="RSI Oversold Level", minval=10, maxval=40)
rsi_overbought = input.int(70, title="RSI Overbought Level", minval=60, maxval=90)
macd_fast = input.int(12, title="MACD Fast Length", minval=5, maxval=20)
macd_slow = input.int(26, title="MACD Slow Length", minval=15, maxval=50)
macd_signal = input.int(9, title="MACD Signal Length", minval=5, maxval=20)
bb_length = input.int(20, title="Bollinger Bands Length", minval=10, maxval=50)
bb_mult = input.float(2.0, title="Bollinger Bands Multiplier", minval=1.0, maxval=3.0, step=0.1)

// Signal Threshold
min_signals = input.int(2, title="Minimum Signals Required", minval=1, maxval=4)

// ===== TECHNICAL INDICATORS =====
// Simple Moving Averages
sma_short_val = ta.sma(close, sma_short)
sma_long_val = ta.sma(close, sma_long)

// RSI
rsi_val = ta.rsi(close, rsi_period)

// MACD
[macd_line, signal_line, macd_hist] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Bollinger Bands
bb_basis = ta.sma(close, bb_length)
bb_dev = bb_mult * ta.stdev(close, bb_length)
bb_upper = bb_basis + bb_dev
bb_lower = bb_basis - bb_dev

// ===== SIGNAL GENERATION =====
// Moving Average Crossover Signals
ma_cross_up = ta.crossover(sma_short_val, sma_long_val)
ma_cross_down = ta.crossunder(sma_short_val, sma_long_val)

// RSI Signals
rsi_oversold_signal = rsi_val < rsi_oversold
rsi_overbought_signal = rsi_val > rsi_overbought

// MACD Signals
macd_bull_cross = ta.crossover(macd_line, signal_line)
macd_bear_cross = ta.crossunder(macd_line, signal_line)

// Bollinger Bands Signals
bb_lower_touch = close < bb_lower
bb_upper_touch = close > bb_upper

// ===== SIGNAL COUNTING =====
// Count bullish signals
bullish_signals = 0
bullish_signals := bullish_signals + (ma_cross_up ? 1 : 0)
bullish_signals := bullish_signals + (rsi_oversold_signal ? 1 : 0)
bullish_signals := bullish_signals + (macd_bull_cross ? 1 : 0)
bullish_signals := bullish_signals + (bb_lower_touch ? 1 : 0)

// Count bearish signals
bearish_signals = 0
bearish_signals := bearish_signals + (ma_cross_down ? 1 : 0)
bearish_signals := bearish_signals + (rsi_overbought_signal ? 1 : 0)
bearish_signals := bearish_signals + (macd_bear_cross ? 1 : 0)
bearish_signals := bearish_signals + (bb_upper_touch ? 1 : 0)

// ===== TRADING LOGIC =====
// Entry conditions
long_condition = bullish_signals >= min_signals and bullish_signals > bearish_signals
short_condition = bearish_signals >= min_signals and bearish_signals > bullish_signals

// Position size calculation based on risk
calculate_position_size() =>
    if use_stop_loss
        risk_amount = strategy.equity * (risk_per_trade / 100)
        stop_price = close * (1 - stop_loss_pct / 100)
        price_diff = close - stop_price
        position_value = risk_amount / (price_diff / close)
        max_value = strategy.equity * (max_position_size / 100)
        math.min(position_value, max_value)
    else
        strategy.equity * (max_position_size / 100)

// Calculate dynamic position size
position_size = calculate_position_size()
position_qty = position_size / close

// Entry orders
if long_condition and strategy.position_size == 0
    strategy.entry("Long", strategy.long, qty=position_qty)
    if use_stop_loss
        stop_price = close * (1 - stop_loss_pct / 100)
        strategy.exit("Stop Loss", "Long", stop=stop_price)

if short_condition and strategy.position_size == 0
    strategy.entry("Short", strategy.short, qty=position_qty)
    if use_stop_loss
        stop_price = close * (1 + stop_loss_pct / 100)
        strategy.exit("Stop Loss", "Short", stop=stop_price)

// Exit conditions (opposite signals)
if short_condition and strategy.position_size > 0
    strategy.close("Long", comment="Exit Long")

if long_condition and strategy.position_size < 0
    strategy.close("Short", comment="Exit Short")

// ===== PLOTTING =====
// Plot moving averages
plot(sma_short_val, color=color.blue, linewidth=2, title="SMA Short")
plot(sma_long_val, color=color.red, linewidth=2, title="SMA Long")

// Plot Bollinger Bands
p1 = plot(bb_upper, color=color.gray, linewidth=1, title="BB Upper")
p2 = plot(bb_lower, color=color.gray, linewidth=1, title="BB Lower")
fill(p1, p2, color=color.new(color.gray, 90), title="BB Background")

// Plot entry signals
plotshape(long_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Short Signal")

// ===== INDICATOR SUBPLOT =====
// RSI
hline(rsi_overbought, "RSI Overbought", color=color.red, linestyle=hline.style_dashed)
hline(rsi_oversold, "RSI Oversold", color=color.green, linestyle=hline.style_dashed)
hline(50, "RSI Midline", color=color.gray, linestyle=hline.style_dotted)

// MACD (commented out to avoid overcrowding - uncomment if needed)
// plot(macd_line, color=color.blue, title="MACD Line")
// plot(signal_line, color=color.red, title="MACD Signal")
// plot(macd_hist, color=color.gray, style=plot.style_histogram, title="MACD Histogram")

// ===== SIGNAL STRENGTH INDICATOR =====
// Create a table to show signal strength
var table info_table = table.new(position.top_right, 3, 6, bgcolor=color.white, border_width=1)

if barstate.islast
    table.cell(info_table, 0, 0, "Signal Type", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 0, "Bullish", text_color=color.black, bgcolor=color.green)
    table.cell(info_table, 2, 0, "Bearish", text_color=color.black, bgcolor=color.red)
    
    table.cell(info_table, 0, 1, "MA Cross", text_color=color.black)
    table.cell(info_table, 1, 1, ma_cross_up ? "✓" : "", text_color=color.green)
    table.cell(info_table, 2, 1, ma_cross_down ? "✓" : "", text_color=color.red)
    
    table.cell(info_table, 0, 2, "RSI", text_color=color.black)
    table.cell(info_table, 1, 2, rsi_oversold_signal ? "✓" : "", text_color=color.green)
    table.cell(info_table, 2, 2, rsi_overbought_signal ? "✓" : "", text_color=color.red)
    
    table.cell(info_table, 0, 3, "MACD", text_color=color.black)
    table.cell(info_table, 1, 3, macd_bull_cross ? "✓" : "", text_color=color.green)
    table.cell(info_table, 2, 3, macd_bear_cross ? "✓" : "", text_color=color.red)
    
    table.cell(info_table, 0, 4, "Bollinger", text_color=color.black)
    table.cell(info_table, 1, 4, bb_lower_touch ? "✓" : "", text_color=color.green)
    table.cell(info_table, 2, 4, bb_upper_touch ? "✓" : "", text_color=color.red)
    
    table.cell(info_table, 0, 5, "Total Signals", text_color=color.black, bgcolor=color.yellow)
    table.cell(info_table, 1, 5, str.tostring(bullish_signals), text_color=color.green, bgcolor=color.yellow)
    table.cell(info_table, 2, 5, str.tostring(bearish_signals), text_color=color.red, bgcolor=color.yellow)

// ===== ALERTS =====
// Alert conditions
alertcondition(long_condition, title="Long Signal", message="Multi-Indicator Long Signal: {{ticker}} at {{close}}")
alertcondition(short_condition, title="Short Signal", message="Multi-Indicator Short Signal: {{ticker}} at {{close}}")
alertcondition(long_condition or short_condition, title="Any Signal", message="Multi-Indicator Signal: {{ticker}} at {{close}}")

// ===== PERFORMANCE METRICS =====
// Calculate additional metrics for display
var float max_drawdown = 0.0
var float peak_equity = strategy.initial_capital

if strategy.equity > peak_equity
    peak_equity := strategy.equity

current_drawdown = (peak_equity - strategy.equity) / peak_equity * 100
if current_drawdown > max_drawdown
    max_drawdown := current_drawdown