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

ملٹی انڈیکیٹر آپٹمائزڈ KDJ ٹرینڈ کراس اوور حکمت عملی ڈائنامک اسٹوکاسٹک پیٹرن ٹریڈنگ سسٹم پر مبنی ہے

مصنف:چاؤ ژانگ، تاریخ: 2025-01-06 16:23:38
ٹیگز:KDJRSVSLٹی پیاے ٹی آر

img

جائزہ

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

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

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

  1. KDJ اشارے کا حساب لگانے کے لئے اپنی مرضی کے مطابق BCWSMA (وزن دار چلتی اوسط) الگورتھم کا استعمال کرتا ہے ، اشارے کی ہموار اور استحکام کو بہتر بناتا ہے
  2. RSV (خام اسٹوکاسٹک ویلیو) حساب کتاب کے ذریعے قیمتوں کو 0-100 رینج میں تبدیل کرتا ہے ، جو زیادہ سے زیادہ اور کم قیمتوں کے درمیان قیمت کی پوزیشن کو بہتر انداز میں ظاہر کرتا ہے
  3. منفرد جے لائن اور جے 5 لائن (مشتق اشارے) کراس ویلیڈیشن میکانزم ڈیزائن کرتا ہے ، متعدد تصدیقوں کے ذریعے تجارتی سگنل کی درستگی کو بہتر بناتا ہے
  4. تسلسل پر مبنی رجحان کی تصدیق کا طریقہ کار قائم کرتا ہے ، جس میں رجحان کی صداقت کی تصدیق کے لئے J لائن کو مسلسل 3 دن تک 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


متعلقہ

مزید