রিসোর্স লোড হচ্ছে... লোডিং...

কৌশল অনুসরণ করে KNN-ভিত্তিক অভিযোজিত পরামিতি প্রবণতা

লেখক:চাওঝাং, তারিখঃ ২০২৪-১১-২৯ 10:54:49
ট্যাগঃএমএKNNএসএমএ

img

সারসংক্ষেপ

এই কৌশলটি কে-নিকর্স্ট নেবারস (কেএনএন) মেশিন লার্নিং অ্যালগরিদমের উপর ভিত্তি করে একটি অভিযোজিত পরামিতিগত প্রবণতা অনুসরণকারী সিস্টেম। কৌশলটি কেএনএন অ্যালগরিদমের মাধ্যমে প্রবণতা অনুসরণকারী পরামিতিগুলিকে গতিশীলভাবে সামঞ্জস্য করে এবং চলমান গড়ের সাথে সংমিশ্রণে ট্রেডিং সংকেত উত্পন্ন করে। সিস্টেমটি বাজারের অবস্থার পরিবর্তনের উপর ভিত্তি করে কৌশল পরামিতিগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে পারে, কৌশল অভিযোজনযোগ্যতা এবং স্থিতিশীলতা উন্নত করে। এই কৌশলটি ঐতিহ্যবাহী প্রবণতা অনুসরণকারী কৌশলগুলিকে অনুকূল করতে মেশিন লার্নিং পদ্ধতিগুলিকে একত্রিত করে, যা পরিমাণগত বিনিয়োগে প্রযুক্তি এবং উদ্ভাবনের সংমিশ্রণকে উপস্থাপন করে।

কৌশল নীতি

কৌশলটির মূল নীতি হল KNN অ্যালগরিদম ব্যবহার করে ঐতিহাসিক মূল্যের তথ্য বিশ্লেষণ করা এবং বর্তমান বাজার পরিস্থিতি এবং ঐতিহাসিক তথ্যের মধ্যে মিলের হিসাব করে মূল্যের প্রবণতা পূর্বাভাস দেওয়া। নির্দিষ্ট বাস্তবায়ন পদক্ষেপগুলি হলঃ

  1. পর্যবেক্ষণ উইন্ডোর আকার এবং কে মান সেট করুন, বৈশিষ্ট্য ভেক্টর গঠনের জন্য ঐতিহাসিক মূল্য তথ্য সংগ্রহ করুন
  2. বর্তমান মূল্য ক্রম এবং ঐতিহাসিক তথ্য মধ্যে ইউক্লিডিয়ান দূরত্ব গণনা
  3. প্রতিবেশী নমুনা হিসাবে সর্বাধিক অনুরূপ ঐতিহাসিক মূল্য ক্রম নির্বাচন করুন
  4. এই K প্রতিবেশী নমুনার পরবর্তী মূল্য আন্দোলন বিশ্লেষণ
  5. চলমান গড়ের সাথে মিলিত প্রতিবেশী নমুনার গড় মূল্য পরিবর্তনের উপর ভিত্তি করে ট্রেডিং সংকেত তৈরি করুন যখন K প্রতিবেশী নমুনার গড় মূল্য পরিবর্তন ইতিবাচক হয় এবং বর্তমান মূল্য চলমান গড়ের উপরে থাকে, তখন সিস্টেম দীর্ঘ সংকেত উৎপন্ন করে; অন্যথায়, এটি সংক্ষিপ্ত সংকেত উৎপন্ন করে।

কৌশলগত সুবিধা

  1. শক্তিশালী অভিযোজনযোগ্যতাঃ KNN অ্যালগরিদম বাজারের পরিবেশের পরিবর্তনের ভিত্তিতে স্বয়ংক্রিয়ভাবে পরামিতিগুলি সামঞ্জস্য করতে পারে
  2. বহুমাত্রিক বিশ্লেষণঃ আরও বিস্তৃত বাজার বিশ্লেষণের জন্য মেশিন লার্নিং অ্যালগরিদম এবং প্রযুক্তিগত সূচকগুলি একত্রিত করে
  3. যুক্তিসঙ্গত ঝুঁকি নিয়ন্ত্রণঃ মিথ্যা সংকেতগুলির প্রভাব হ্রাস করার জন্য সহায়ক নিশ্চিতকরণ হিসাবে চলমান গড় ব্যবহার করে
  4. স্পষ্ট কম্পিউটেশনাল লজিকঃ কৌশল বাস্তবায়ন প্রক্রিয়া স্বচ্ছ এবং বুঝতে এবং অপ্টিমাইজ করা সহজ
  5. নমনীয় পরামিতিঃ K মান এবং উইন্ডোর আকার বিভিন্ন বাজারের পরিবেশ অনুযায়ী সামঞ্জস্য করা যেতে পারে

কৌশলগত ঝুঁকি

  1. উচ্চ কম্পিউটেশনাল জটিলতাঃ কেএনএন অ্যালগরিদমের জন্য প্রচুর পরিমাণে historicalতিহাসিক ডেটা গণনা করা প্রয়োজন
  2. প্যারামিটার সংবেদনশীলতাঃ K মান এবং উইন্ডোর আকারের পছন্দ কৌশল কর্মক্ষমতা উল্লেখযোগ্যভাবে প্রভাবিত করে
  3. বাজার পরিবেশের উপর নির্ভরশীলতাঃ অস্থির বাজারে ঐতিহাসিক অনুরূপতার রেফারেন্স মান হ্রাস পেতে পারে
  4. অতিরিক্ত ফিটিং ঝুঁকিঃ ঐতিহাসিক তথ্যের উপর অত্যধিক নির্ভরতা কৌশল অতিরিক্ত ফিটিং হতে পারে
  5. বিলম্বের ঝুঁকিঃ পর্যাপ্ত ঐতিহাসিক তথ্য সংগ্রহের প্রয়োজনের কারণে সিগন্যাল বিলম্ব হতে পারে

কৌশল অপ্টিমাইজেশান নির্দেশাবলী

  1. বৈশিষ্ট্য প্রকৌশল অপ্টিমাইজেশানঃ
  • বৈশিষ্ট্য হিসাবে আরো প্রযুক্তিগত সূচক যোগ করুন
  • বাজারের মনোভাব নির্দেশক প্রবর্তন করুন
  • বৈশিষ্ট্য স্ট্যান্ডার্ডাইজেশন পদ্ধতি অপ্টিমাইজ করুন
  1. অ্যালগরিদম দক্ষতা উন্নতকরণঃ
  • কেডি-ট্রি ব্যবহার করে নিকটতম প্রতিবেশী অনুসন্ধান অপ্টিমাইজ করুন
  • সমান্তরাল কম্পিউটিং বাস্তবায়ন
  • ডেটা স্টোরেজ এবং অ্যাক্সেস পদ্ধতি অপ্টিমাইজ করুন
  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)



সম্পর্কিত

আরো