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

KDJ RSV SL TP ATR
تخلیق کی تاریخ: 2025-01-06 16:23:38 آخر میں ترمیم کریں: 2025-01-06 16:23:38
کاپی: 0 کلکس کی تعداد: 132
1
پر توجہ دیں
1234
پیروکار

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

جائزہ

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

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

حکمت عملی کی بنیادی منطق درج ذیل کلیدی عناصر پر مبنی ہے:

  1. KDJ اشارے کا حساب حسب ضرورت BCWSMA (ویٹڈ موونگ ایوریج) الگورتھم کا استعمال کرتے ہوئے کیا جاتا ہے، جو اشارے کی ہمواری اور استحکام کو بہتر بناتا ہے۔
  2. RSV کا حساب لگا کر، قیمت کو 0-100 کی رینج میں ایک قدر میں تبدیل کیا جاتا ہے تاکہ اعلی اور کم پوائنٹس کے درمیان قیمت کی پوزیشن کو بہتر طریقے سے ظاہر کیا جا سکے۔
  3. متعدد تصدیقات کے ذریعے تجارتی سگنلز کی درستگی کو بہتر بنانے کے لیے ایک منفرد J-line اور J5-line (ماخوذ اشارے) کراس توثیق کا طریقہ کار ڈیزائن کیا گیا ہے۔
  4. تسلسل پر مبنی ایک رجحان کی تصدیق کا طریقہ کار قائم کیا گیا ہے، جس کے تحت J لائن کو تین دن تک D لائن کے اوپر رہنے کی ضرورت ہے تاکہ رجحان کی درستگی کی تصدیق کی جا سکے۔
  5. ایک جامع رسک کنٹرول سسٹم جو فیصد اسٹاپ نقصان اور ٹریلنگ اسٹاپ نقصان کو مربوط کرتا ہے۔

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

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

اسٹریٹجک رسک

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-06 00:00:00
end: 2025-01-05 00:00:00
period: 4h
basePeriod: 4h
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/
// © hexu90

//@version=6

// Date Range
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("15 Dec 2024"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true

//KDJ strategy
// indicator("My Customized KDJ", shorttitle="KDJ")
strategy("My KDJ Strategy", overlay = false)

// Input parameters
ilong = input(90, title="Period")
k_isig = input(3, title="K Signal")
d_isig = input(30, title="D Signal")

// Custom BCWSMA calculation outside the function
bcwsma(source, length, weight) =>
    var float prev = na  // Persistent variable to store the previous value
    if na(prev)
        prev := source  // Initialize on the first run
    prev := (weight * source + (length - weight) * prev) / length
    prev

// Calculate KDJ
c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, k_isig, 1)
pD = bcwsma(pK, d_isig, 1)
pJ = 3 * pK - 2 * pD

pJ1 = 0
pJ2 = 80
pJ5 = (pJ-pK)-(pK-pD)

// Plot the K, D, J lines with colors
plot(pK, color=color.rgb(251, 121, 8), title="K Line")  // Orange
plot(pD, color=color.rgb(30, 0, 255), title="D Line")  // Blue
plot(pJ, color=color.new(color.rgb(251, 0, 255), 10), title="J Line")  // Pink with transparency
plot(pJ5, color=#6f03f3e6, title="J Line")  // Pink with transparency

// Background color and reference lines
// bgcolor(pJ > pD ? color.new(color.green, 75) : color.new(color.red, 75))
// hline(80, "Upper Band", color=color.gray)
// hline(20, "Lower Band", color=color.gray)

// Variables to track the conditions
var bool condition1_met = false
var int condition2_met = 0

// Condition 1: pJ drops below pJ5
if ta.crossunder(pJ, pJ5)
    condition1_met := true
    condition2_met := 0  // Reset condition 2 if pJ drops below pJ5 again

if ta.crossover(pJ, pD)
    condition2_met += 1

to_long = ta.crossover(pJ, pD)


var int consecutiveDays = 0
// Update the count of consecutive days
if pJ > pD
    consecutiveDays += 1
else
    consecutiveDays := 0

// Check if pJ has been above pD for more than 3 days
consPJacrossPD = false
if consecutiveDays > 3
    consPJacrossPD := true

// Entry condition: After condition 2, pJ crosses above pD a second time
// if condition1_met and condition2_met > 1
//     strategy.entry("golden", strategy.long, qty=1000)
//     condition1_met := false  // Reset the conditions for a new cycle
//     condition2_met = 0
// 
if ta.crossover(pJ, pD) 
    // and pD < 40 and consPJacrossPD
    // consecutiveDays == 1
    //  consecutiveDays == 3 and
    strategy.entry("golden", strategy.long, qty=1)

// to_short = 
// or ta.crossunder(pJ, 100)

// Exit condition
if ta.crossover(pD, pJ)
    strategy.close("golden", qty = 1)

// Stop loss and trailing profit
trail_stop_pct = input.float(0.5, title="Trailing Stop activation (%)", group="Exit Lonng", inline="LTS", tooltip="Trailing Treshold %")
trail_offset_pct = input.float(0.5, title="Trailing Offset (%)", group="Exit Lonng", inline="LTS", tooltip="Trailing Offset %")
trail_stop_tick = trail_stop_pct * close/100
trail_offset_tick = trail_offset_pct * close/100

sl_pct = input.float(5, title="Stop Loss", group="SL and TP", inline="LSLTP")
// tp_pct = input.float(9, title="Take Profit", group="SL and TP", inline="LSLTP")

long_sl_price = strategy.position_avg_price * (1 - sl_pct/100)
// long_tp_price = strategy.position_avg_price * (1 + tp_pct/100)

strategy.exit('golden Exit', 'golden', stop = long_sl_price)
// trail_points = trail_stop_tick, trail_offset=trail_offset_tick