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

حکمت عملی کے بعد KNN پر مبنی موافقت پذیر پیرامیٹرک رجحان

مصنف:چاؤ ژانگ، تاریخ: 2024-11-29 10:54:49
ٹیگز:ایم اےKNNایس ایم اے

img

جائزہ

یہ حکمت عملی K-Nearest Neighbors (KNN) مشین لرننگ الگورتھم پر مبنی ایک انکولی پیرامیٹر ٹرینڈ فالونگ سسٹم ہے۔ یہ حکمت عملی KNN الگورتھم کے ذریعے رجحان کے بعد پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرتی ہے اور چلتی اوسط کے ساتھ مل کر تجارتی سگنل تیار کرتی ہے۔ یہ نظام مارکیٹ کے حالات میں ہونے والی تبدیلیوں کی بنیاد پر حکمت عملی کے پیرامیٹرز کو خود بخود ایڈجسٹ کرسکتا ہے ، حکمت عملی کی موافقت اور استحکام کو بہتر بناتا ہے۔ یہ حکمت عملی روایتی رجحان کی پیروی کرنے والی حکمت عملیوں کو بہتر بنانے کے لئے مشین لرننگ کے طریقوں کو جوڑتی ہے ، جو مقدار کی سرمایہ کاری میں ٹیکنالوجی اور جدت کے امتزاج کی نمائندگی کرتی ہے۔

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

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

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

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

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

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

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

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

  1. خصوصیت انجینئرنگ کی اصلاح:
  • خصوصیات کے طور پر مزید تکنیکی اشارے شامل کریں
  • مارکیٹ کے جذبات کے اشارے متعارف کروانا
  • خصوصیات کو معیاری بنانے کے طریقوں کو بہتر بنائیں
  1. الگورتھم کی کارکردگی میں بہتری:
  • KD درختوں کا استعمال کرتے ہوئے قریبی پڑوسی تلاش کو بہتر بنائیں
  • متوازی کمپیوٹنگ کو نافذ کریں
  • ڈیٹا اسٹوریج اور رسائی کے طریقوں کو بہتر بنائیں
  1. خطرے کے کنٹرول میں اضافہ:
  • سٹاپ نقصان اور منافع لینے کے طریقہ کار کو شامل کریں
  • اتار چڑھاؤ فلٹر متعارف کروائیں
  • متحرک پوزیشن مینجمنٹ سسٹم کا ڈیزائن
  1. پیرامیٹر کی اصلاح کے حل:
  • انکولی K قدر کے انتخاب کو لاگو کریں
  • مشاہدہ ونڈو کا سائز متحرک طور پر ایڈجسٹ کریں
  • چلتی اوسط مدت کو بہتر بنائیں
  1. سگنل جنریشن میکانزم میں بہتری:
  • سگنل طاقت سکورنگ سسٹم متعارف کرانے
  • ڈیزائن سگنل کی تصدیق کا طریقہ کار
  • داخلہ اور باہر نکلنے کے وقت کو بہتر بنائیں

خلاصہ

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


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Trend Following Strategy with KNN", overlay=true,commission_value=0.03,currency='USD', commission_type=strategy.commission.percent,default_qty_type=strategy.cash)


// Input parameters
k = input.int(5, title="K (Number of Neighbors)", minval=1)  // Number of neighbors for KNN algorithm
window_size = input.int(20, title="Window Size", minval=1)  // Window size for feature vector calculation
ma_length = input.int(50, title="MA Length", minval=1)  // Length of the moving average

// Calculate moving average
ma = ta.sma(close, ma_length)

// Initialize variables
var float[] features = na
var float[] distances = na
var int[] nearest_neighbors = na

if bar_index >= window_size - 1  // Ensure there is enough historical data
    features := array.new_float(0)  // Keep only the current window data
    for i = 0 to window_size - 1
        array.push(features, close[i])

    // Calculate distances
    distances := array.new_float(0)  // Clear the array for each calculation
    for i = 0 to window_size - 1  // Calculate the distance between the current price and all prices in the window
        var float distance = 0.0
        for j = 0 to window_size - 1
            distance += math.pow(close[j] - array.get(features, j), 2)
        distance := math.sqrt(distance)
        array.push(distances, distance)

    // Find the nearest neighbors
    if array.size(distances) > 0 and array.size(distances) >= k
        nearest_neighbors := array.new_int(0)
        for i = 0 to k - 1
            var int min_index = -1
            var float min_distance = na
            for j = 0 to array.size(distances) - 1
                if na(min_distance) or array.get(distances, j) < min_distance
                    min_index := j
                    min_distance := array.get(distances, j)
            if min_index != -1
                array.push(nearest_neighbors, min_index)
                array.remove(distances, min_index)  // Remove the processed neighbor

    // Calculate the average price change of the neighbors
    var float average_change = 0.0
    if array.size(nearest_neighbors) > 0
        for i = 0 to array.size(nearest_neighbors) - 1
            var int index = array.get(nearest_neighbors, i)
            // Ensure index + 1 is within range
            if index + 1 < bar_index
                average_change += (close[index] - close[index + 1])
        average_change := average_change / array.size(nearest_neighbors)

    // Generate trading signals
    if average_change > 0 and close > ma
        strategy.entry("Long", strategy.long)
    else if average_change < 0 and close < ma
        strategy.entry("Short", strategy.short)



متعلقہ

مزید