یہ حکمت عملی متحرک متعدد ای ایم اے کو انٹری سگنلز کے طور پر استعمال کرتی ہے جس میں رسک مینجمنٹ کے لئے ٹریلنگ اسٹاپ نقصان اور منافع کے ہدف کے طریقہ کار کے ساتھ مل کر استعمال ہوتا ہے۔ یہ ملٹی ڈی سی اے اندراجات کے ذریعہ رجحانات کی نشاندہی کرنے اور لاگت پر قابو پانے کے لئے ای ایم اے کی ہموار نوعیت کا فائدہ اٹھاتا ہے۔ اس کے علاوہ ، موافقت پذیر اسٹاپ نقصان اور منافع لینے کی خصوصیات کا انضمام آٹومیشن کے عمل کو بہتر بناتا ہے۔
جب قیمت منتخب کردہ ای ایم اے کی مدت کی حد میں عبور یا حرکت کرتی ہے تو طویل اندراج کو متحرک کرتا ہے۔ عام ای ایم اے میں 5 ، 10 ، 20 ، 50 ، 100 ، 200 ادوار شامل ہیں۔ اس حکمت عملی میں اندراج کے معیار کے طور پر 1٪ ای ایم اے کی حد کا استعمال کیا جاتا ہے۔
اس میں متعدد رسک کنٹرول میکانزم شامل ہیں:
باہر نکلنے کے لئے منافع کی ہدف قیمت کی سطح مقرر کریں
اس حکمت عملی میں ای ایم اے ٹرینڈ کا پتہ لگانے ، ملٹی ڈی سی اے لاگت کی اوسط ، ٹریلنگ اسٹاپ نقصان ، ہدف منافع لینے اور بہت کچھ شامل ہے۔ پیرامیٹرز کو ٹوننگ کرنے اور رسک کنٹرول کو بڑھانے میں کافی صلاحیت باقی ہے۔ مجموعی طور پر ، یہ انتہائی موافقت پذیر اور ورسٹائل حکمت عملی سرمایہ کاروں کو مستحکم الفا جنریشن کی صلاحیتیں پیش کرتی ہے۔
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA DCA Strategy with Trailing Stop and Profit Target", overlay=true ) // Define the investment amount for when the condition is met investment_per_condition = 6 // Define the EMAs ema5 = ema(close, 5) ema10 = ema(close, 10) ema20 = ema(close, 20) ema50 = ema(close, 50) ema100 = ema(close, 100) ema200 = ema(close, 200) // Define ATR sell threshold atr_sell_threshold = input(title="ATR Sell Threshold", type=input.integer, defval=10, minval=1) // Helper function to find if the price is within 1% of the EMA isWithin1Percent(price, ema) => ema_min = ema * 0.99 ema_max = ema * 1.01 price >= ema_min and price <= ema_max // Control the number of buys var int buy_count = 0 buy_limit = input(title="Buy Limit", type=input.integer, defval=3000) // Calculate trailing stop and profit target levels trail_percent = input(title="Trailing Stop Percentage", type=input.integer, defval=1, minval=0, maxval=10) profit_target_percent = input(title="Profit Target Percentage", type=input.integer, defval=3, minval=1, maxval=10) // Determine if the conditions are met and execute the strategy checkConditionAndBuy(emaValue, emaName) => var int local_buy_count = 0 // Create a local mutable variable if isWithin1Percent(close, emaValue) and local_buy_count < buy_limit strategy.entry("Buy at " + emaName, strategy.long, qty=investment_per_condition / close, alert_message ="Buy condition met for " + emaName) local_buy_count := local_buy_count + 1 // alert("Buy Condition", "Buy condition met for ", freq_once_per_bar_close) local_buy_count // Return the updated local_buy_count // Add ATR sell condition atr_condition = atr(20) > atr_sell_threshold if atr_condition strategy.close_all() buy_count := 0 // Reset the global buy_count when selling // Strategy execution buy_count := checkConditionAndBuy(ema5, "EMA5") buy_count := checkConditionAndBuy(ema10, "EMA10") buy_count := checkConditionAndBuy(ema20, "EMA20") buy_count := checkConditionAndBuy(ema50, "EMA50") buy_count := checkConditionAndBuy(ema100, "EMA100") buy_count := checkConditionAndBuy(ema200, "EMA200") // Calculate trailing stop level trail_offset = close * trail_percent / 100 trail_level = close - trail_offset // Set profit target level profit_target_level = close * (1 + profit_target_percent / 100) // Exit strategy: Trailing Stop and Profit Target strategy.exit("TrailingStop", from_entry="Buy at EMA", trail_offset=trail_offset, trail_price=trail_level) strategy.exit("ProfitTarget", from_entry="Buy at EMA", when=close >= profit_target_level) // Plot EMAs plot(ema5, title="EMA 5", color=color.red) plot(ema10, title="EMA 10", color=color.orange) plot(ema20, title="EMA 20", color=color.yellow) plot(ema50, title="EMA 50", color=color.green) plot(ema100, title="EMA 100", color=color.blue) plot(ema200, title="EMA 200", color=color.purple)