ওক্টা-ইএমএ এবং ইচিমোকু ক্লাউড কোন্টিটেটিভ ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-১১ 14:52:05
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি বিভিন্ন সময়ের 8 টি এক্সপোনেন্সিয়াল মুভিং মিডিয়ার (ইএমএ) এবং ইচিমোকু ক্লাউডকে প্রধান ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করে, যা কার্যকরভাবে ঘন্টা, 4 ঘন্টা বা দৈনিক সময়সীমার মধ্যে চলতে পারে।

কৌশলগত নীতি

এই কৌশলটির মূল নীতিগুলি নিম্নলিখিত দুটি অংশের উপর ভিত্তি করেঃ

  1. 8 এক্সপোনেনশিয়াল মুভিং মিডিয়ার (অক্টা-ইএমএ)

    এই কৌশলটি বিভিন্ন সময়ের সাথে 8 টি ইএমএ ব্যবহার করে, বিশেষত 5-দিন, 11-দিন, 15-দিন, 18-দিন, 21-দিন, 24-দিন, 28-দিন এবং 34-দিন। এই 8 টি ইএমএকে অক্টা-ইএমএ বলা হয়। যখন স্বল্প সময়ের ইএমএগুলি দীর্ঘ সময়ের ইএমএগুলির উপরে থাকে, তখন এটি একটি আপট্রেন্ড নির্দেশ করে এবং বিপরীতভাবে একটি ডাউনট্রেন্ডের জন্য।

  2. ইচিমোকু মেঘ

    ইচিমোকু মেঘে রূপান্তর লাইন, বেস লাইন, লেগিং স্প্যান এবং লিডিং স্প্যান এ / বি রয়েছে। মেঘটি মূলত প্রবণতার দিক বিচার করে এবং সমর্থন / প্রতিরোধ সরবরাহ করে। যখন দাম মেঘের উপরে থাকে, তখন এটি একটি আপট্রেন্ড নির্দেশ করে এবং যখন মেঘের নীচে থাকে, তখন এটি একটি ডাউনট্রেন্ড নির্দেশ করে।

এই কৌশলটির জন্য ট্রেডিং সংকেতগুলি উপরের দুটি উপাদানগুলির সংমিশ্রণ থেকে আসে। একটি ক্রয় সংকেত তৈরি হয় যখন সমস্ত 8 টি ইএমএ একটি আপট্রেন্ড ব্যবস্থাতে থাকে (দীর্ঘতম ইএমএর উপরে স্বল্পতম ইএমএ) এবং দাম ইচিমোকু মেঘের উপরে থাকে। যখন ইএমএ ব্যবস্থাটি ডাউনট্রেন্ডে ফ্লিপ হয় (দীর্ঘতম ইএমএর নীচে স্বল্পতম ইএমএ ক্রসিং) তখন একটি বিক্রয় সংকেত তৈরি হয়।

সুবিধা বিশ্লেষণ

এই কৌশলটির প্রধান সুবিধাগুলো হল:

  1. ডাবল ইন্ডিকেটর ফিল্টারিংয়ের মাধ্যমে মিথ্যা সংকেত হ্রাস করে
  2. ইচিমোকু মেঘ প্রবণতা দিক বিচার করে, বিপরীত প্রবণতা ট্রেডিং এড়ানো
  3. 8 ইএমএ ক্রসওভারগুলি উচ্চতর নির্ভুলতার সাথে প্রবণতা নির্ধারণের জন্য একত্রিত হয়
  4. একাধিক টাইমফ্রেমে চলতে পারে
  5. বড় প্যারামিটার টিউনিং স্পেস, বিভিন্ন পণ্যের জন্য কাস্টমাইজ করতে পারেন

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. ব্যাপ্তি-সীমাবদ্ধ বাজারে আরও মিথ্যা বিক্রয় সংকেত তৈরি করতে পারে
  2. কঠোর ক্রয় শর্তাবলী কিছু ক্রয় সুযোগ হারাতে পারে
  3. স্বল্প ও মাঝারি মেয়াদী প্রবণতা বিরোধী হলে ব্যর্থ হতে পারে
  4. EMA পরামিতির খারাপ টিউনিং সংকেত বিলম্বের কারণ হতে পারে

এই ঝুঁকিগুলি মোকাবেলা করার জন্য, পরামিতিগুলি সংশোধন করা যেতে পারে বা ঝুঁকি হ্রাস করার জন্য প্রবেশের শর্তগুলি অনুকূল করা যেতে পারে। নিশ্চিতকরণের জন্য অন্যান্য সূচকগুলিও অন্তর্ভুক্ত করা যেতে পারে।

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

এই কৌশলটি বেশ কয়েকটি দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. সর্বোত্তম সময়কাল খুঁজে পেতে EMA পরামিতিগুলি সামঞ্জস্য করুন
  2. সঠিক প্রবণতা মূল্যায়ন নিশ্চিত করার জন্য প্রবণতা নির্ধারণকারী সূচক যোগ করুন
  3. এন্ট্রি টাইমিং উন্নত করতে এমএসিডি, কেডিজে এর মতো অতিরিক্ত সূচক অন্তর্ভুক্ত করুন
  4. ট্রেডিং ঝুঁকি অনুযায়ী স্টপ লস/ট্যাক প্রফিট কন্ট্রোল যোগ করুন
  5. সেরা ফিট খুঁজে পেতে বিভিন্ন পণ্য জুড়ে পরীক্ষার পরামিতি
  6. মেশিন লার্নিং ব্যবহার করে স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করুন

সিদ্ধান্ত

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


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Fukuiz

strategy(title='Fukuiz Octa-EMA + Ichimoku', shorttitle='Fuku octa strategy', overlay=true, process_orders_on_close=true, 
     default_qty_type= strategy.cash , default_qty_value=1000, currency=currency.USD, initial_capital=10000 ,commission_type = strategy.commission.percent,commission_value=0.25)


//OCTA EMA ##################################################


// Functions
f_emaRibbon(_src, _e1, _e2, _e3, _e4, _e5, _e6, _e7, _e8) =>
    _ema1 = ta.ema(_src, _e1)
    _ema2 = ta.ema(_src, _e2)
    _ema3 = ta.ema(_src, _e3)
    _ema4 = ta.ema(_src, _e4)
    _ema5 = ta.ema(_src, _e5)
    _ema6 = ta.ema(_src, _e6)
    _ema7 = ta.ema(_src, _e7)
    _ema8 = ta.ema(_src, _e8)
    [_ema1, _ema2, _ema3, _ema4, _ema5, _ema6, _ema7, _ema8]

showRibbon = input(true, 'Show Ribbon (EMA)')
ema1Len = input(5, title='EMA 1 Length')
ema2Len = input(11, title='EMA 2 Length')
ema3Len = input(15, title='EMA 3 Length')
ema4Len = input(18, title='EMA 4 Length')
ema5Len = input(21, title='EMA 5 Length')
ema6Len = input(24, title='EMA 6 Length')
ema7Len = input(28, title='EMA 7 Length')
ema8Len = input(34, title='EMA 8 Length')

[ema1, ema2, ema3, ema4, ema5, ema6, ema7, ema8] = f_emaRibbon(close, ema1Len, ema2Len, ema3Len, ema4Len, ema5Len, ema6Len, ema7Len, ema8Len)

//Plot

ribbonDir = ema8 < ema2
p1 = plot(ema1, color=showRibbon ? ribbonDir ? #1573d4 : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 1')
p2 = plot(ema2, color=showRibbon ? ribbonDir ? #3096ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 2')
plot(ema3, color=showRibbon ? ribbonDir ? #57abff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 3')
plot(ema4, color=showRibbon ? ribbonDir ? #85c2ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 4')
plot(ema5, color=showRibbon ? ribbonDir ? #9bcdff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 5')
plot(ema6, color=showRibbon ? ribbonDir ? #b3d9ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 6')
plot(ema7, color=showRibbon ? ribbonDir ? #c9e5ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 7')
p8 = plot(ema8, color=showRibbon ? ribbonDir ? #dfecfb : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 8')
fill(p1, p2, color.new(#1573d4, 85))
fill(p2, p8, color.new(#1573d4, 85))

//ichimoku##################################################

//color
colorblue = #3300CC
colorred = #993300
colorwhite = #FFFFFF
colorgreen = #CCCC33
colorpink = #CC6699
colorpurple = #6633FF

//switch
switch1 = input(false, title='Chikou')
switch2 = input(false, title='Tenkan')
switch3 = input(false, title='Kijun')

middleDonchian(Length) =>
    lower = ta.lowest(Length)
    upper = ta.highest(Length)
    math.avg(upper, lower)

//Functions
conversionPeriods = input.int(9, minval=1)
basePeriods = input.int(26, minval=1)
laggingSpan2Periods = input.int(52, minval=1)
displacement = input.int(26, minval=1)
Tenkan = middleDonchian(conversionPeriods)
Kijun = middleDonchian(basePeriods)
xChikou = close
SenkouA = middleDonchian(laggingSpan2Periods)
SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2

//Plot
A = plot(SenkouA[displacement], color=color.new(colorpurple, 0), title='SenkouA')
B = plot(SenkouB, color=color.new(colorgreen, 0), title='SenkouB')
plot(switch1 ? xChikou : na, color=color.new(colorpink, 0), title='Chikou', offset=-displacement)
plot(switch2 ? Tenkan : na, color=color.new(colorred, 0), title='Tenkan')
plot(switch3 ? Kijun : na, color=color.new(colorblue, 0), title='Kijun')
fill(A, B, color=color.new(colorgreen, 90), title='Ichimoku Cloud')

//Buy and Sell signals
fukuiz = math.avg(ema2, ema8)
white = ema2 > ema8
gray = ema2 < ema8
buycond = white and white[1] == 0
sellcond = gray and gray[1] == 0
bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)
buy = bearish[1] and buycond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB
sell = bullish[1] and sellcond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB
sell2=ema2 < ema8
buy2 = white and fukuiz > SenkouA[displacement] and fukuiz > SenkouB

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//Back test

startYear = input.int(defval=2017, title='Start Year', minval=2000, maxval=3000)
startMonth = input.int(defval=1, title='Start Month', minval=1, maxval=12)
startDay = input.int(defval=1, title='Start Day', minval=1, maxval=31)
endYear = input.int(defval=2023, title='End Year', minval=2000 ,maxval=3000)
endMonth = input.int(defval=12, title='End Month', minval=1, maxval=12)
endDay = input.int(defval=31, title='End Day', minval=1, maxval=31)

start = timestamp(startYear, startMonth, startDay, 00, 00)
end = timestamp(endYear, endMonth, endDay, 23, 59)
period() => time >= start and time <= end ? true : false

if buy2 
    strategy.entry(id='long', direction=strategy.long, when=period(), comment='BUY')

if sell2
    strategy.close(id='long', when=period(), comment='SELL')





আরো