وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈبل حرکت پذیر اوسط اور ایم اے سی ڈی مشترکہ رجحان کے بعد متحرک لے منافع سمارٹ ٹریڈنگ سسٹم

مصنف:چاؤ ژانگ، تاریخ: 2024-12-13 11:23:00
ٹیگز:ایم اےایم اے سی ڈیایس ایم اےای ایم اےٹی پیSLپی آئی پی

 Dual Moving Average and MACD Combined Trend Following Dynamic Take Profit Smart Trading System

جائزہ

یہ حکمت عملی ایک رجحان کی پیروی کرنے والا نظام ہے جو دوہری حرکت پذیر اوسط اور ایم اے سی ڈی اشارے کو یکجا کرتا ہے۔ یہ مخصوص انٹری ٹائمنگ کے لئے ایم اے سی ڈی اشارے کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کرنے کے لئے 50 پیریڈ اور 200 پیریڈ کی حرکت پذیر اوسط کا استعمال کرتا ہے۔ یہ حکمت عملی تجارت کے معیار کو بڑھانے کے لئے متحرک اسٹاپ نقصان اور منافع لینے کے طریقہ کار کے ساتھ مل کر متعدد فلٹرنگ شرائط کا استعمال کرتی ہے۔ یہ ایک مکمل تجارتی نظام ہے جو 15 منٹ کے ٹائم فریم پر کام کرتا ہے جس میں عین مطابق اندراج اور باہر نکلنے کے قوانین ہیں۔

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

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

حکمت عملی کے فوائد

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

حکمت عملی کے خطرات

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

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

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

خلاصہ

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


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WolfofAlgo

//@version=5
strategy("Trend Following Scalping Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Input Parameters
stopLossPips = input.float(5.0, "Stop Loss in Pips", minval=1.0)
takeProfitPips = input.float(10.0, "Take Profit in Pips", minval=1.0)
useFixedTakeProfit = input.bool(true, "Use Fixed Take Profit")

// Moving Average Parameters
fastMA = input.int(50, "Fast MA Period")
slowMA = input.int(200, "Slow MA Period")

// MACD Parameters
macdFastLength = input.int(12, "MACD Fast Length")
macdSlowLength = input.int(26, "MACD Slow Length")
macdSignalLength = input.int(9, "MACD Signal Length")

// Trade Filter Parameters (Adjusted to be less strict)
minBarsBetweenTrades = input.int(5, "Minimum Bars Between Trades", minval=1)
trendStrengthPeriod = input.int(10, "Trend Strength Period")
minTrendStrength = input.float(0.4, "Minimum Trend Strength", minval=0.1, maxval=1.0)
macdThreshold = input.float(0.00005, "MACD Threshold", minval=0.0)

// Variables for trade management
var int barsLastTrade = 0
barsLastTrade := nz(barsLastTrade[1]) + 1

// Calculate Moving Averages
ma50 = ta.sma(close, fastMA)
ma200 = ta.sma(close, slowMA)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)

// Calculate trend strength (simplified)
trendDirection = ta.ema(close, trendStrengthPeriod) > ta.ema(close, trendStrengthPeriod * 2)
isUptrend = close > ma50 and ma50 > ma200
isDowntrend = close < ma50 and ma50 < ma200

// Calculate pip value
pointsPerPip = syminfo.mintick * 10

// Entry Conditions with Less Strict Filters
macdCrossUp = ta.crossover(macdLine, signalLine) and math.abs(macdLine - signalLine) > macdThreshold
macdCrossDown = ta.crossunder(macdLine, signalLine) and math.abs(macdLine - signalLine) > macdThreshold

// Long and Short Conditions
longCondition = close > ma50 and macdCrossUp and barsLastTrade >= minBarsBetweenTrades and isUptrend
shortCondition = close < ma50 and macdCrossDown and barsLastTrade >= minBarsBetweenTrades and isDowntrend

// Exit Conditions (made more lenient)
exitLongCondition = macdCrossDown or close < ma50
exitShortCondition = macdCrossUp or close > ma50

// Reset bars counter on new trade
if (longCondition or shortCondition)
    barsLastTrade := 0

// Calculate stop loss and take profit levels
longStopPrice = strategy.position_avg_price - (stopLossPips * pointsPerPip)
longTakeProfitPrice = strategy.position_avg_price + (takeProfitPips * pointsPerPip)
shortStopPrice = strategy.position_avg_price + (stopLossPips * pointsPerPip)
shortTakeProfitPrice = strategy.position_avg_price - (takeProfitPips * pointsPerPip)

// Plot Moving Averages
plot(ma50, "50 MA", color=color.blue)
plot(ma200, "200 MA", color=color.red)

// Plot Entry Signals
plotshape(longCondition, "Long Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, location.abovebar, color.red, size=size.small)

// Strategy Entry Rules
if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short", strategy.short)

// Strategy Exit Rules
if (strategy.position_size > 0 and exitLongCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and exitShortCondition)
    strategy.close("Short")

// Stop Loss and Take Profit Management
if (strategy.position_size > 0)
    strategy.exit("Long TP/SL", "Long", stop=longStopPrice, limit=useFixedTakeProfit ? longTakeProfitPrice : na)

if (strategy.position_size < 0)
    strategy.exit("Short TP/SL", "Short", stop=shortStopPrice, limit=useFixedTakeProfit ? shortTakeProfitPrice : na)

// Performance Metrics
var float totalTrades = 0
var float winningTrades = 0
var float totalProfitPips = 0
var float totalLossPips = 0

if (strategy.closedtrades > 0)
    totalTrades := strategy.closedtrades
    winningTrades := strategy.wintrades
    totalProfitPips := strategy.grossprofit / pointsPerPip
    totalLossPips := math.abs(strategy.grossloss) / pointsPerPip

// Display Stats
var label statsLabel = na
label.delete(statsLabel[1])

// Create performance stats text
var string stats = ""
if (strategy.closedtrades > 0)
    winRate = (winningTrades / math.max(totalTrades, 1)) * 100
    avgWin = totalProfitPips / math.max(winningTrades, 1)
    avgLoss = totalLossPips / math.max(totalTrades - winningTrades, 1)
    plRatio = avgWin / math.max(avgLoss, 1)
    
    stats := "Win Rate: " + str.tostring(winRate, "#.##") + "%\n" +
             "Avg Win: " + str.tostring(avgWin, "#.##") + " pips\n" +
             "Avg Loss: " + str.tostring(avgLoss, "#.##") + " pips\n" +
             "P/L Ratio: " + str.tostring(plRatio, "#.##") + "\n" +
             "Total Trades: " + str.tostring(totalTrades, "#")

statsLabel := label.new(x=bar_index, y=high, text=stats, style=label.style_label_down, color=color.new(color.blue, 80))


متعلقہ

مزید