ফিবোনাচ্চি এক্সটেনশনের সাথে একাধিক EMA ক্রসওভারের সাথে ট্রেন্ড অনুসরণ কৌশল

EMA
সৃষ্টির তারিখ: 2024-07-29 16:42:56 অবশেষে সংশোধন করুন: 2024-07-29 16:42:56
অনুলিপি: 0 ক্লিকের সংখ্যা: 547
1
ফোকাস
1617
অনুসারী

ফিবোনাচ্চি এক্সটেনশনের সাথে একাধিক EMA ক্রসওভারের সাথে ট্রেন্ড অনুসরণ কৌশল

ওভারভিউ

এই কৌশলটি একটি প্রবণতা ট্র্যাকিং সিস্টেম যা একাধিক সূচকীয় মুভিং এভারেজ (ইএমএ) ক্রস এবং ফিবোনাচি প্রসারিত স্তরের সাথে মিলিত। এটি সম্ভাব্য প্রবণতা শুরু এবং শেষের সনাক্তকরণের জন্য বিভিন্ন চক্রের ইএমএগুলির মধ্যে মিথস্ক্রিয়া ব্যবহার করে এবং মুনাফা লক্ষ্য নির্ধারণের জন্য ফিবোনাচি প্রসারিত স্তর ব্যবহার করে। কৌশলটিতে ঝুঁকি পরিচালনা এবং মুনাফা সুরক্ষার জন্য নির্দিষ্ট স্টপ-অফ নিয়মও রয়েছে।

কৌশল নীতি

এই কৌশলটির মূল বিষয় হল ট্রেন্ডের শুরু এবং শেষকে ধরার জন্য একাধিক টাইম ফ্রেমের ইএমএ ক্রস করা। বিশেষ করে, এটি 5 পিরিয়ড, 10 পিরিয়ড এবং 30 পিরিয়ডের ইএমএ ব্যবহার করে। এই কৌশলটিতে চারটি ভিন্ন প্রবেশের শর্ত রয়েছে, যার প্রত্যেকটি ভিন্ন বাজারের পরিস্থিতি ধরার জন্য তৈরি করা হয়েছেঃ

  1. প্রথম প্রবেশের শর্তটি যখন মূল্য 30 চক্রের ইএমএর উপরে বা তার নিচে পৌঁছে যায়, কিন্তু তারপরে এটির উপরে বন্ধ হয়, যখন 10 চক্রের ইএমএ 5 চক্রের ইএমএর চেয়ে বেশি এবং 30 চক্রের ইএমএ 5 চক্রের ইএমএর চেয়ে 1% কম হয়।

  2. যখন 5 চক্রের ইএমএতে 30 চক্রের ইএমএ থাকে এবং শেষ 6 টি কে লাইনের মধ্যে 30 চক্রের ইএমএ 5 চক্রের ইএমএ অতিক্রম করেছে, তখন দ্বিতীয় প্রবেশের শর্তটি ট্রিগার করুন

  3. তৃতীয় প্রবেশের শর্তটি ট্রিগার করা হয় যখন বর্তমান দুইটি K লাইনের সর্বোচ্চ মূল্য তাদের নিজ নিজ 5 চক্রের EMA এর চেয়ে কম হয়, এবং 5 চক্রের EMA 10 চক্রের EMA এর চেয়ে কম হয়, এবং 10 চক্রের EMA 30 চক্রের EMA এর চেয়ে কম হয়, এবং পূর্ববর্তী K লাইনের সর্বোচ্চ মূল্য বর্তমান ক্লোজিং মূল্যের চেয়ে কম হয়।

  4. চতুর্থ প্রবেশের শর্তটি যখন 10 চক্রের ইএমএতে 30 চক্রের ইএমএ থাকে, এবং গত 4 টি কে লাইনের মধ্যে 5 চক্রের ইএমএ 30 চক্রের ইএমএ পরেছে, এবং 10 চক্রের ইএমএ এবং 5 চক্রের ইএমএর বর্তমান মানগুলি তাদের পূর্ববর্তী মানের চেয়ে বেশি, তখন ট্রিগার করা হয়।

স্টপ লস-এর জন্য, কৌশলটি বিভিন্ন প্রবেশের শর্তের জন্য নির্দিষ্ট নিয়ম নির্ধারণ করেঃ

  • প্রথম শর্তের জন্য, যদি 30 চক্রের ইএমএ 10 চক্রের ইএমএ অতিক্রম করে, তাহলে প্লেইন ≠
  • অন্য শর্তের জন্য, যদি ক্লোজ-অফ মূল্য প্রথম তিনটি K-লাইনের সর্বনিম্ন পয়েন্ট অতিক্রম করে, তাহলে প্লেইন-ওভার।

লাভের লক্ষ্যমাত্রা ফিবোনাচি সম্প্রসারণের স্তরের উপর ভিত্তি করে সেট করা হয়েছে, যার মধ্যে রয়েছে 0.618, 0.786, 1.0 এবং 1.618 স্তর। যখন দামগুলি এই স্তরে পৌঁছে যায়, তখন কৌশলটি নির্দিষ্ট নিয়ম অনুসারে প্লেইন করে।

এছাড়াও, কৌশলটিতে একটি মুনাফা লক করার শর্তও রয়েছেঃ যদি K লাইনের সাম্প্রতিক দুটি সর্বনিম্ন মূল্য 5 চক্রের ইএমএর চেয়ে বেশি হয় এবং ইএমএ একটি উত্থান সারি ((5 > 10 > 30) উপস্থাপন করে, তবে মুনাফা লক করার জন্য প্লেইন করা হয়।

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

  1. একাধিক নিশ্চিতকরণঃ একাধিক ইএমএ এবং একাধিক প্রবেশের শর্ত ব্যবহার করে কৌশলটি প্রবণতার শুরু এবং ধারাবাহিকতা আরও সঠিকভাবে সনাক্ত করতে পারে। এই একাধিক নিশ্চিতকরণ প্রক্রিয়াটি মিথ্যা সংকেত হ্রাস করতে এবং ব্যবসায়ের নির্ভুলতা বাড়িয়ে তুলতে পারে।

  2. অভিযোজনযোগ্যতা: চারটি ভিন্ন প্রবেশের শর্ত কৌশলকে বিভিন্ন বাজার পরিবেশে অভিযোজন করতে সক্ষম করে, যা দ্রুত বাধাগ্রস্ত বা ধীর প্রবণতা তৈরির ক্ষেত্রে ব্যবসায়ের সুযোগকে ধরতে সক্ষম করে।

  3. ঝুঁকি ব্যবস্থাপনাঃ কৌশলটিতে নির্দিষ্ট স্টপ-লস নিয়ম রয়েছে যা প্রতিটি ব্যবসায়ের ঝুঁকি নিয়ন্ত্রণে সহায়তা করে। বিভিন্ন প্রবেশের শর্তগুলি বিভিন্ন স্টপ-লস কৌশলগুলির সাথে সম্পর্কিত, যা কৌশলটির ঝুঁকি ব্যবস্থাপনার উপর গুরুত্ব দেয়।

  4. লাভের লক্ষ্য স্পষ্টঃ ফিবোনাচি সম্প্রসারণের স্তরকে লাভের লক্ষ্য হিসাবে ব্যবহার করে, ব্যবসায়ীদের জন্য একটি স্পষ্ট প্রস্থান পয়েন্ট সরবরাহ করে। এটি খুব তাড়াতাড়ি মুনাফা অর্জন বা খুব বেশি সময় ধরে রাখা এড়াতে সহায়তা করে।

  5. মুনাফা সুরক্ষাঃ মুনাফা লক করার শর্তগুলি প্রবণতা বিপরীত হওয়ার সম্ভাবনা থাকাকালীন প্রাপ্ত মুনাফা রক্ষা করতে সহায়তা করে, এটি একটি গুরুত্বপূর্ণ দিক যা অনেক প্রবণতা ট্র্যাকিং কৌশলগুলি উপেক্ষা করে।

  6. প্রযুক্তিগত সূচক সমন্বয়ঃ কৌশলটি ইএমএ এবং ফিবোনাচি সরঞ্জামগুলির সমন্বয় করে, এই দুটি জনপ্রিয় প্রযুক্তিগত বিশ্লেষণ সরঞ্জামগুলির সুবিধা গ্রহণ করে।

কৌশলগত ঝুঁকি

  1. অত্যধিক লেনদেনঃ একাধিক প্রবেশের শর্তগুলি অত্যধিক লেনদেনের কারণ হতে পারে, বিশেষত বিপুল অস্থিরতার বাজারে। এটি লেনদেনের ব্যয় বাড়িয়ে তুলতে পারে এবং আরও ভুয়া সংকেত তৈরি করতে পারে।

  2. প্যারামিটার সংবেদনশীলতাঃ কৌশলটি একাধিক স্থির ইএমএ চক্র এবং শতাংশ হ্রাস ব্যবহার করে। এই প্যারামিটারগুলিকে বিভিন্ন বাজার এবং সময় ফ্রেমের সাথে সামঞ্জস্য করার প্রয়োজন হতে পারে, অন্যথায় কৌশলটি দুর্বল হতে পারে।

  3. প্রবণতা নির্ভরতাঃ একটি প্রবণতা অনুসরণ কৌশল হিসাবে, এটি একটি ক্রসপয়েন্ট বা অস্থির বাজারে খারাপ কাজ করতে পারে। এই বাজার পরিবেশে, একাধিক মিথ্যা সংকেত এবং ছোটখাট ক্ষতি হতে পারে।

  4. পিছিয়ে পড়াঃ ইএমএ মূলত পিছিয়ে পড়া সূচক। দ্রুত পরিবর্তিত বাজারে, কৌশলগুলি সময়মতো প্রবণতার বিপর্যয়কে ধরতে পারে না।

  5. জটিলতাঃ কৌশলটির একাধিক শর্ত এবং নিয়মগুলি এর জটিলতা বাড়ায়, যা কৌশলটি বোঝা এবং বজায় রাখা কঠিন করে তুলতে পারে এবং অতিরিক্ত ফিটনেসের ঝুঁকি বাড়ায়।

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

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

  2. লেনদেনের পরিমাপ যোগ করুনঃ লেনদেনের বিশ্লেষণের সংমিশ্রণটি প্রবেশ এবং প্রস্থান সিদ্ধান্তের নির্ভুলতা বাড়িয়ে তুলতে পারে। উদাহরণস্বরূপ, প্রবণতার শক্তি নিশ্চিত করার জন্য প্রবেশের সময় লেনদেনের পরিমাণ বাড়ানোর জন্য বলা যেতে পারে।

  3. মার্কেট এনভায়রনমেন্ট ফিল্টারিংঃ মার্কেট এনভায়রনমেন্ট আইডেন্টিফিকেশন মেকানিজম চালু করা, যেমন এটিআর (অর্ধ-সত্যিকারের তরঙ্গদৈর্ঘ্য) বা অস্থিরতার হার সূচক ব্যবহার করা, ট্রেডিং স্থগিত করা যখন প্রবণতা অনুসরণ করার জন্য উপযুক্ত নয়।

  4. অপ্টিমাইজড স্টপ-লস ম্যানেজমেন্টঃ ট্র্যাকিং স্টপ ব্যবহার করার কথা বিবেচনা করা যেতে পারে, স্থির স্টপ-লসের পরিবর্তে। এটি মুনাফা রক্ষা করার সময় মুনাফা বাড়তে পারে।

  5. টাইম ফিল্টার যুক্ত করুনঃ নির্দিষ্ট সময়ের মধ্যে লেনদেন সীমাবদ্ধ করুন, উচ্চতর ও কম তরলতার সময়গুলি এড়িয়ে চলুন, যা কৌশলটির স্থায়িত্ব বাড়িয়ে তুলতে পারে।

  6. মেশিন লার্নিং প্রবর্তন করুনঃ মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে প্যারামিটার নির্বাচন এবং ভর্তি সিদ্ধান্তের অপ্টিমাইজেশন, কৌশলগুলির অভিযোজনযোগ্যতা এবং কার্যকারিতা উন্নত করতে পারে।

  7. মাল্টি-টাইম ফ্রেম বিশ্লেষণঃ প্রবণতা বিশ্লেষণের সাথে আরও দীর্ঘ সময়ের ফ্রেম যুক্ত করে, এটি প্রবেশাধিকার সিদ্ধান্তের সঠিকতা বাড়িয়ে তোলে এবং মূল প্রবণতা বিপরীত হওয়ার ক্ষেত্রে প্রবেশাধিকার এড়াতে পারে।

সারসংক্ষেপ

এই মাল্টি-ইএমএ ক্রস ফিবোনাচিস এক্সপেন্ডের সাথে ট্রেন্ড ট্র্যাকিং কৌশলটি একটি বিস্তৃত ট্রেডিং সিস্টেম প্রদর্শন করে যা একাধিক প্রযুক্তিগত সূচক এবং ট্রেডিং ধারণাকে একত্রিত করে। একাধিক ইএমএ এবং প্রবেশের শর্ত ব্যবহার করে, কৌশলটি প্রবণতা ক্যাপচার এবং মিথ্যা সংকেত হ্রাস করার মধ্যে ভারসাম্য বজায় রাখার চেষ্টা করে। ফিবোনাচিস এক্সপেন্ড স্তরের ব্যবহার লাভের লক্ষ্য নির্ধারণের জন্য একটি উদ্দেশ্যমূলক ভিত্তি সরবরাহ করে, এবং নির্দিষ্ট স্টপ লস এবং লাভের লকিং বিধিগুলি ঝুঁকি পরিচালনার প্রতি গুরুত্ব দেয়।

যদিও কৌশলটি একাধিক নিশ্চিতকরণ এবং অভিযোজনযোগ্যতার সুবিধাগুলি রয়েছে, তবে এর জটিলতা এবং প্যারামিটার নির্বাচনের সংবেদনশীলতাও একটি চ্যালেঞ্জ নিয়ে আসে। কৌশলটির স্থিতিশীলতা এবং কার্যকারিতা আরও বাড়ানোর জন্য, গতিশীল প্যারামিটার সমন্বয়, বাজার পরিবেশ ফিল্টারিং এবং বহু সময়সীমার বিশ্লেষণের মতো অপ্টিমাইজেশন দিকগুলি বিবেচনা করা যেতে পারে।

সামগ্রিকভাবে, এই কৌশলটি প্রবণতা ট্র্যাকিংয়ের জন্য একটি আকর্ষণীয় কাঠামো সরবরাহ করে, তবে ব্যবসায়ীদের বাস্তব প্রয়োগের সময় পর্যাপ্ত প্রতিক্রিয়া এবং প্যারামিটার অপ্টিমাইজেশনের প্রয়োজন হয় এবং নির্দিষ্ট বাজার এবং ট্রেডিং শৈলীর জন্য যথাযথ সমন্বয় করা হয়। ক্রমাগত পর্যবেক্ষণ এবং অপ্টিমাইজেশনের মাধ্যমে, এই কৌশলটি একটি কার্যকর প্রবণতা ট্র্যাকিং সরঞ্জাম হওয়ার সম্ভাবনা রয়েছে।

কৌশল সোর্স কোড
/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Combined Strategy with Specific Stop Loss", overlay=true)

// Define the EMAs
ema30 = ta.ema(close, 30)
ema10 = ta.ema(close, 10)
ema5 = ta.ema(close, 5)

// Define the conditions for opening an order
open_condition1 = low <= ema30 and close > ema30  and ema10 > ema5 and ema30 * 1.01 < ema5
open_condition2 = ta.crossover(ema5, ema30) and (ta.crossover(ema30[1], ema5[1]) or ta.crossover(ema30[2], ema5[2]) or ta.crossover(ema30[3], ema5[3]) or ta.crossover(ema30[4], ema5[4])  or ta.crossover(ema30[5], ema5[5]) or ta.crossover(ema30[6], ema5[6]) )
open_condition3 = high[2] < ema5[2] and high[1] < ema5[1] and ema5 < ema10 and ema10 < ema30 and high[1] < close 
open_condition4 = ta.crossover(ema10, ema30) and (ta.crossover(ema5[0], ema30[0]) or ta.crossover(ema5[1], ema30[1]) or ta.crossover(ema10[2], ema30[2]) or ta.crossover(ema10[3], ema30[3])) and ema10[1] < ema10 and ema5[1] <ema5

// Calculate the lowest low of the previous two bars
lowest_low_prev_two_bars = ta.lowest(low, 3)

// Track the entry price and the lowest low of the previous two bars for open_condition3
var float entry_price = na
var float low_entry_price = na
var float entry_lowest_low1 = na
var float entry_lowest_low2 = na
var float entry_lowest_low3 = na
var float entry_lowest_low4 = na

var bool order1 = false
var bool order2 = false
var bool order3 = false
var bool order4 = false
// Fibonacci extension levels based on the last significant swing
var float fib_extension_level_0_618 = na
var float fib_extension_level_0_786 = na
var float fib_extension_level_1 = na
var float fib_extension_level_1_618 = na

    // Calculate Fibonacci extension levels
var float swing_low = na
var float swing_high = na
// Here we assume the latest swing low and swing high, adjust based on your logic
swing_low := ta.lowest(low, 20)
swing_high := ta.highest(high, 20)

// Open a long order when any of the conditions are met
if open_condition1 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="<ema30")
    entry_lowest_low1 := lowest_low_prev_two_bars
    low_entry_price := low
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    entry_price := close
    order1 := true
if open_condition2 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="ema5xema30")
    entry_lowest_low2 := lowest_low_prev_two_bars
    low_entry_price := low
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    entry_price := close
    order2 := true

if open_condition3 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="high<ema5")
    entry_price := close
    low_entry_price := low
    entry_lowest_low3 := lowest_low_prev_two_bars
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    order3 := true

if open_condition4 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="high<ema5444")
    entry_price := close
    low_entry_price := low
    entry_lowest_low4 := lowest_low_prev_two_bars
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    order4 := true




// Set a stop loss only if the order was opened with the specified conditions
if (not na(entry_price))
    if order1
        if ta.crossover(ema30,ema10)
            strategy.close("Long", comment="stop loss1" )
            entry_price := na
            order1 := false
            low_entry_price := na


    if order2
        if close < entry_lowest_low2
            strategy.close("Long", comment="stop loss2" )
            entry_price := na
            order2 := false
            low_entry_price := na

    if order3
        if close < entry_lowest_low3
            strategy.close("Long", comment="stop loss3" )
            entry_price := na
            order3 := false
            low_entry_price := na

    if order4
        if close < entry_lowest_low4
            strategy.close("Long", comment="stop loss4" )
            entry_price := na
            order4 := false
            low_entry_price := na


    if   low[1] > ema5[1] and low > ema5  and ema5 > ema10 and ema10 > ema30 
        strategy.close("Long", comment="profit low > ema5")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    // Take profit at Fibonacci extension levels
    if high >= fib_extension_level_0_618 and close <= fib_extension_level_0_618
        strategy.close("Long", comment="at 0.618 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    if  high >= fib_extension_level_0_786 and close < fib_extension_level_0_786
        strategy.close("Long", comment="at 0.786 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    if  high >= fib_extension_level_1 and close < fib_extension_level_1
        strategy.close("Long", comment="at 1 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na
    if  high >= fib_extension_level_1_618
        strategy.close("Long", comment="at 1 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na


// Plot the EMAs for visual reference
plot(ema30, color=color.blue, title="EMA 30")
plot(ema10, color=color.orange, title="EMA 10")
plot(ema5, color=color.red, title="EMA 5")