یہ متعدد تکنیکی اشارے پر مبنی ایک موافقت پذیر رجحان کی پیروی کرنے والی حکمت عملی ہے جو مارکیٹ کی مختلف خصوصیات کے مطابق پیرامیٹرز کو خود بخود ایڈجسٹ کرتی ہے۔ اس حکمت عملی میں مارکیٹ کے رجحانات کو حاصل کرنے کے لئے چیکن منی فلو (سی ایم ایف) ، ڈٹرنڈ پرائس آسکیلیٹر (ڈی پی او) ، اور کوپوک وکر کو یکجا کیا گیا ہے ، جس میں مختلف مارکیٹ کی خصوصیات کو اپنانے کے لئے اتار چڑھاؤ ایڈجسٹمنٹ عوامل شامل ہیں۔ اس میں ایک جامع پوزیشن مینجمنٹ اور رسک کنٹرول سسٹم شامل ہے جو مارکیٹ کی اتار چڑھاؤ کی بنیاد پر تجارت کے سائز کو متحرک طور پر ایڈجسٹ کرتا ہے۔
حکمت عملی کا بنیادی منطق متعدد اشارے کے تعاون کے ذریعے رجحان کی سمت اور تجارت کے وقت کی تصدیق کرنا ہے:
یہ حکمت عملی ایک جامع رجحان کے بعد کا نظام ہے جو متعدد اشارے اور رسک کنٹرول میکانزم کے ذریعہ منافع اور خطرے کو متوازن کرتا ہے۔ حکمت عملی میں اصلاح کے لئے کافی گنجائش کے ساتھ مضبوط توسیع ہے۔ براہ راست تجارت میں چھوٹے پیمانے پر شروع کرنے ، تجارتی سائز کو بتدریج بڑھانے کی سفارش کی جاتی ہے ، جبکہ حکمت عملی کی کارکردگی کی مسلسل نگرانی اور پیرامیٹرز کو بروقت ایڈجسٹ کرنا۔
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Input parameters i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"]) i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1) i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1) i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0) i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10) // Indicator Parameters i_cmf_length = input.int(20, "CMF Length", minval=1) i_dpo_length = input.int(21, "DPO Length", minval=1) i_coppock_short = input.int(11, "Coppock Short ROC", minval=1) i_coppock_long = input.int(14, "Coppock Long ROC", minval=1) i_coppock_wma = input.int(10, "Coppock WMA", minval=1) i_atr_length = input.int(14, "ATR Length", minval=1) // Market-specific Adjustments volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0 volatility_factor *= i_volatility_adjustment leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0 // Calculate Indicators mf_multiplier = ((close - low) - (high - close)) / (high - low) mf_volume = mf_multiplier * volume cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length) dpo_offset = math.floor(i_dpo_length / 2) + 1 dpo = close - ta.sma(close, i_dpo_length)[dpo_offset] roc1 = ta.roc(close, i_coppock_short) roc2 = ta.roc(close, i_coppock_long) coppock = ta.wma(roc1 + roc2, i_coppock_wma) atr = ta.atr(i_atr_length) // Define Entry Conditions long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0) short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0) // Calculate Position Size account_size = strategy.equity risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100)) position_size = (risk_amount / (atr * volatility_factor)) * leverage // Execute Trades if (long_condition and strategy.opentrades < i_max_open_trades) sl_price = close - (atr * 2 * volatility_factor) tp_price = close + (atr * 3 * volatility_factor) strategy.entry("Long", strategy.long, qty=position_size) strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price) if (short_condition and strategy.opentrades < i_max_open_trades) sl_price = close + (atr * 2 * volatility_factor) tp_price = close - (atr * 3 * volatility_factor) strategy.entry("Short", strategy.short, qty=position_size) strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price) // Plot Indicators plot(cmf, color=color.blue, title="CMF") plot(dpo, color=color.green, title="DPO") plot(coppock, color=color.red, title="Coppock") hline(0, "Zero Line", color=color.gray) // Alerts alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal") alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal") // // Performance reporting // if barstate.islastconfirmedhistory // label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + // "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" + // "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))