EMA এবং CCI মাল্টিপল ক্রসওভার ট্রেন্ড অনুসরণ করার কৌশল

EMA CCI
সৃষ্টির তারিখ: 2024-09-26 15:43:50 অবশেষে সংশোধন করুন: 2024-09-26 15:43:50
অনুলিপি: 1 ক্লিকের সংখ্যা: 651
1
ফোকাস
1617
অনুসারী

EMA এবং CCI মাল্টিপল ক্রসওভার ট্রেন্ড অনুসরণ করার কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি মূলত নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করে তৈরি করা হয়েছেঃ

  1. মাল্টিপল ইএমএ ক্রসঃ ৮, ১২, ২৪ এবং ৭২ চক্রের ইএমএ ব্যবহার করুন। যখন সংক্ষিপ্ত চক্রের ইএমএ ((৮, ১২, ২৪) একই সাথে ৭২ চক্রের ইএমএ অতিক্রম করে, তখন এটি একটি সম্ভাব্য মাল্টিপল সংকেত হিসাবে বিবেচিত হয়; বিপরীতে এটি একটি ফাঁকা সংকেত।

  2. সিসিআই সূচক নিশ্চিতকরণঃ ২০-চক্রের সিসিআই সূচক ব্যবহার করে, যখন সিসিআই ১৫০ এর চেয়ে বড় হয় তখন ওভারবয় নিশ্চিত করা হয় এবং ১৫০ এর চেয়ে কম হলে ওভারসোল নিশ্চিত করা হয়।

  3. ভর্তির শর্ত:

    • আরো কিছু করুনঃ স্বল্প সময়ের EMA একই সময়ে 72 সময়ের EMA অতিক্রম করে এবং CCI 150 এর চেয়ে বড় হলে, দাম 72 সময়ের EMA এর উপরে থাকে।
    • খালি করাঃ স্বল্প-চক্রের ইএমএ একই সাথে 72-চক্রের ইএমএ অতিক্রম করে এবং সিসিআই 150 এর চেয়ে কম, 72-চক্রের ইএমএর নীচে দাম।
  4. ডায়নামিক স্টপ লসঃ

    • দুটি প্রবেশ মোড সেট করুনঃ একক ক্রস এবং সময় উইন্ডোর মধ্যে ক্রস।
    • বিভিন্ন প্রবেশাধিকার মোডের উপর নির্ভর করে বিভিন্ন স্টপ-অফ হার সেট করুন।
  5. পজিশন ম্যানেজমেন্টঃ সম্পূর্ণ পজিশনে ট্রেড করার কৌশল, অর্থাৎ অ্যাকাউন্টের ১০০% তহবিল ব্যবহার করে ট্রেড করা।

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

  1. একাধিক নিশ্চিতকরণ ব্যবস্থাঃ একাধিক ইএমএ ক্রস এবং সিসিআই সূচকের সমন্বয় দ্বারা, ভুয়া সংকেতের প্রভাব কার্যকরভাবে হ্রাস করা হয়েছে, প্রবেশের নির্ভুলতা উন্নত করা হয়েছে।

  2. নমনীয় এন্ট্রি ব্যবস্থাঃ বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নেওয়ার জন্য কৌশলটি একক ক্রসিং এবং সময় উইন্ডোর মধ্যে ক্রসিং উভয় ক্ষেত্রেই বিবেচনা করে।

  3. গতিশীল ঝুঁকি ব্যবস্থাপনাঃ বিভিন্ন প্রবেশাধিকার মোডের উপর নির্ভর করে বিভিন্ন স্টপ-অফ-লস অনুপাত সেট করুন, যাতে লাভ এবং ঝুঁকি আরও ভালভাবে ভারসাম্যযুক্ত হয়।

  4. প্রবণতা ট্র্যাকিং ক্ষমতাঃ একাধিক ইএমএ ক্রস ব্যবহার করে, মধ্যম এবং দীর্ঘমেয়াদী প্রবণতার পরিবর্তনগুলি কার্যকরভাবে ক্যাপচার করতে সক্ষম।

  5. কম্পন ফিল্টার করুনঃ সিসিআই সূচক দ্বারা ওভারবয় ওভারসেলিংয়ের বিচার করা, যা ঘন ঘন ট্রেডিং এড়াতে সহায়তা করে।

কৌশলগত ঝুঁকি

  1. পিছিয়ে পড়াঃ ইএমএ এবং সিসিআই উভয়ই পিছিয়ে পড়া সূচক যা তীব্র ওঠানামা বাজারগুলিতে সময়মতো প্রতিক্রিয়া জানাতে পারে না।

  2. ঘন ঘন লেনদেনঃ অস্থির বাজারে, মিথ্যা ব্রেকিং সিগন্যালের সংখ্যা বাড়তে পারে, যার ফলে ঘন ঘন লেনদেন এবং লেনদেনের খরচ বৃদ্ধি পায়।

  3. সম্পূর্ণ পজিশনের ঝুঁকিঃ ১০০% পজিশনে ট্রেডিং করলে প্রত্যাহারের ঝুঁকি বেশি থাকে।

  4. ফিক্সড শতাংশ ক্ষতিঃ বাজারে উচ্চতর অস্থিরতার সাথে, ফিক্সড শতাংশ ক্ষতির কারণে মুনাফা ছাড়তে পারে।

  5. ঐতিহাসিক তথ্যের উপর নির্ভরশীলঃ কৌশলগত কর্মক্ষমতা ঐতিহাসিক তথ্য দ্বারা প্রভাবিত হতে পারে এবং ভবিষ্যতে বাজার পরিবেশের পরিবর্তন হলে প্যারামিটারগুলি পুনরায় অপ্টিমাইজ করা প্রয়োজন।

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

  1. উর্ধ্বমুখীতা সূচক প্রবর্তন করুনঃ এটিআর সূচক যুক্ত করার কথা বিবেচনা করুন, যা বাজারের ওঠানামা অনুসারে স্টপ লস স্তরকে সামঞ্জস্য করে যাতে এটি বিভিন্ন বাজারের পরিবেশের সাথে খাপ খায়।

  2. পজিশন ম্যানেজমেন্ট অপ্টিমাইজ করুনঃ বাজারের প্রবণতা এবং অ্যাকাউন্টের ঝুঁকি বহন ক্ষমতা অনুযায়ী পজিশন আকারের পরিবর্তনশীল পজিশন ম্যানেজমেন্ট ব্যবস্থা চালু করুন।

  3. অতিরিক্ত ফিল্টারিং শর্তাবলীঃ ট্রেডিং সিগন্যালগুলিকে আরও ফিল্টার করার জন্য ট্রেডিং ভলিউম, প্রবণতা শক্তি এবং অন্যান্য সূচক যুক্ত করার কথা বিবেচনা করা যেতে পারে।

  4. প্যারামিটার অপ্টিমাইজেশানঃ জেনেটিক্যাল অ্যালগরিদম বা গ্রিড সার্চের মতো পদ্ধতি ব্যবহার করে, ইএমএ চক্র, সিসিআই থ্রেশহোল্ডের মতো প্যারামিটারগুলিকে অপ্টিমাইজ করা হয় যাতে বিভিন্ন বাজারের পরিস্থিতিতে কৌশলটি আরও ভালভাবে মানিয়ে নেওয়া যায়।

  5. মার্কেট রেজিম সনাক্তকরণে যোগদান করুনঃ বাজারের অবস্থা (ট্রেন্ড, কম্পন, উচ্চ ওঠানামা) সনাক্তকরণ মডিউল বিকাশ করুন, বিভিন্ন বাজারের অবস্থার উপর ভিত্তি করে কৌশলগত প্যারামিটারগুলি সামঞ্জস্য করুন বা লেনদেন স্থগিত করুন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2019-12-23 08:00:00
end: 2024-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA & CCI Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Параметры EMA
ema8_length = 8
ema12_length = 12
ema24_length = 24
ema72_length = 72

// Расчет EMA
ema8 = ta.ema(close, ema8_length)
ema12 = ta.ema(close, ema12_length)
ema24 = ta.ema(close, ema24_length)
ema72 = ta.ema(close, ema72_length)

// Параметры CCI
cci_length = 20
cci_overbought = 150
cci_oversold = -150

// Параметры тейк-профита и стоп-лосса
takeProfitPercent = input.float(1.5, title="Take Profit (%)", step=0.1)
stopLossPercent = input.float(0.5, title="Stop Loss (%)", step=0.1)
takeProfitPercentTime = input.float(0.5, title="Take Profit (%) for Time-based", step=0.1)
stopLossPercentTime = input.float(0.2, title="Stop Loss (%) for Time-based", step=0.1)
max_wait_bars = input.float(2, title="Max wait candles", step=1)
// Расчет CCI
cci = ta.cci(close, cci_length)

// Состояние открытой позиции
sz = strategy.position_size

// Флаги для отслеживания пересечений EMA вверх
var int ema8_cross_index_up = na
var int ema12_cross_index_up = na
var int ema24_cross_index_up = na

// Флаги для отслеживания пересечений EMA вниз
var int ema8_cross_index_down = na
var int ema12_cross_index_down = na
var int ema24_cross_index_down = na

// Проверка пересечения EMA с 72 вверх и обновление индекса пересечения
if (ta.crossover(ema8, ema72))
    ema8_cross_index_up := bar_index
if (ta.crossover(ema12, ema72))
    ema12_cross_index_up := bar_index
if (ta.crossover(ema24, ema72))
    ema24_cross_index_up := bar_index

// Проверка пересечений EMA вниз и обновление индекса пересечения
if (ta.crossunder(ema8, ema72))
    ema8_cross_index_down := bar_index
if (ta.crossunder(ema12, ema72))
    ema12_cross_index_down := bar_index
if (ta.crossunder(ema24, ema72))
    ema24_cross_index_down := bar_index

// Условия пересечения за одну свечу (лонг и шорт)
cross_condition_one_candle_long = (na(ema8_cross_index_up) == false and (bar_index - ema8_cross_index_up) == 0) and
                                  (na(ema12_cross_index_up) == false and (bar_index - ema12_cross_index_up) == 0) and
                                  (na(ema24_cross_index_up) == false and (bar_index - ema24_cross_index_up) == 0)

cross_condition_one_candle_short = (na(ema8_cross_index_down) == false and (bar_index - ema8_cross_index_down) == 0) and
                                   (na(ema12_cross_index_down) == false and (bar_index - ema12_cross_index_down) == 0) and
                                   (na(ema24_cross_index_down) == false and (bar_index - ema24_cross_index_down) == 0)

// Условия пересечения в течение указанного времени (лонг и шорт)
cross_condition_within_time_long = (not na(ema8_cross_index_up) and (bar_index - ema8_cross_index_up) <= max_wait_bars) and
                                   (not na(ema12_cross_index_up) and (bar_index - ema12_cross_index_up) <= max_wait_bars) and
                                   (not na(ema24_cross_index_up) and (bar_index - ema24_cross_index_up) <= max_wait_bars)

cross_condition_within_time_short = (not na(ema8_cross_index_down) and (bar_index - ema8_cross_index_down) <= max_wait_bars) and (not na(ema12_cross_index_down) and (bar_index - ema12_cross_index_down) <= max_wait_bars) and (not na(ema24_cross_index_down) and (bar_index - ema24_cross_index_down) <= max_wait_bars)

// Условие для открытия лонга
long_condition_one = cross_condition_one_candle_long and cci > cci_overbought and close > ema72
long_condition_time = cross_condition_within_time_long and cci > cci_overbought and close > ema72

// Условие для открытия шорта
short_condition_one = cross_condition_one_candle_short and cci < cci_oversold and close < ema72
short_condition_time = cross_condition_within_time_short and cci < cci_oversold and close < ema72

// Вход в лонг
if (long_condition_one and sz == 0)
    strategy.entry(id='Long_one', direction=strategy.long)

if (long_condition_time and sz == 0)
    strategy.entry(id='Long_time', direction=strategy.long)

// Вход в шорт
if (short_condition_one and sz == 0)
    strategy.entry(id='Short_one', direction=strategy.short)

if (short_condition_time and sz == 0)
    strategy.entry(id='Short_time', direction=strategy.short)

// Вычисление цен тейк-профита и стоп-лосса для лонга
if (sz > 0 and strategy.opentrades.entry_id(0) == 'Long_one')
    entryPriceLong = strategy.opentrades.entry_price(0)
    takeProfitPriceLong = entryPriceLong * (1 + takeProfitPercent / 100)
    stopLossPriceLong = entryPriceLong * (1 - stopLossPercent / 100)
    strategy.exit("Close long one", "Long_one", limit=takeProfitPriceLong, stop=stopLossPriceLong)
    ema8_cross_index_up := na
    ema12_cross_index_up := na
    ema24_cross_index_up := na

if (sz > 0 and strategy.opentrades.entry_id(0) == 'Long_time')
    entryPriceLongTime = strategy.opentrades.entry_price(0)
    takeProfitPriceLongTime = entryPriceLongTime * (1 + takeProfitPercentTime / 100)
    stopLossPriceLongTime = entryPriceLongTime * (1 - stopLossPercentTime / 100)
    strategy.exit("Close long time", "Long_time", limit=takeProfitPriceLongTime, stop=stopLossPriceLongTime)
    ema8_cross_index_up := na
    ema12_cross_index_up := na
    ema24_cross_index_up := na

// Вычисление цен тейк-профита и стоп-лосса для шорта
if (sz < 0 and strategy.opentrades.entry_id(0) == 'Short_one')
    entryPriceShort = strategy.opentrades.entry_price(0)
    takeProfitPriceShort = entryPriceShort * (1 - takeProfitPercent / 100)
    stopLossPriceShort = entryPriceShort * (1 + stopLossPercent / 100)
    strategy.exit("Close short one", "Short_one", limit=takeProfitPriceShort, stop=stopLossPriceShort)
    ema8_cross_index_down := na
    ema12_cross_index_down := na
    ema24_cross_index_down := na

if (sz < 0 and strategy.opentrades.entry_id(0) == 'Short_time')
    entryPriceShortTime = strategy.opentrades.entry_price(0)
    takeProfitPriceShortTime = entryPriceShortTime * (1 - takeProfitPercentTime / 100)
    stopLossPriceShortTime = entryPriceShortTime * (1 + stopLossPercentTime / 100)
    strategy.exit("Close short time", "Short_time", limit=takeProfitPriceShortTime, stop=stopLossPriceShortTime)
    ema8_cross_index_down := na
    ema12_cross_index_down := na
    ema24_cross_index_down := na

// Отображение EMA на графике
plot(ema8, title="EMA 8", color=color.blue, linewidth=2)
plot(ema12, title="EMA 12", color=color.orange, linewidth=2)
plot(ema24, title="EMA 24", color=color.green, linewidth=2)
plot(ema72, title="EMA 72", color=color.red, linewidth=2)

// Вывод CCI в подвале
//plot(cci, title="CCI", color=color.purple)
//hline(100, "CCI 150", color=color.green)
//hline(-100, "CCI -150", color=color.red)
//hline(0, "CCI 0", color=color.gray)


// Отладочная информация
//plotshape(series=long_condition_one, location=location.belowbar, color=color.lime, style=shape.labelup, title="Long Condition")
//plotshape(series=cross_condition_one_candle_long, location=location.belowbar, color=color.blue, style=shape.triangleup, title="Cross Condition Long")
//plotshape(series=long_condition_time, location=location.belowbar, color=#e6d700, style=shape.labelup, title="Long Condition Time")
//plotshape(series=cross_condition_within_time_long, location=location.belowbar, color=#a21dbd, style=shape.triangleup, title="Cross Condition Time Long")
//plotshape(series=short_condition_one, location=location.abovebar, color=color.red, style=shape.labeldown, title="Short Condition")
//plotshape(series=cross_condition_one_candle_short, location=location.abovebar, color=color.blue, style=shape.triangledown, title="Cross Condition Short")
//plotshape(series=short_condition_time, location=location.abovebar, color=#e6d700, style=shape.labeldown, title="Short Condition Time")
//plotshape(series=cross_condition_within_time_short, location=location.abovebar, color=#a21dbd, style=shape.triangledown, title="Cross Condition Time Short")