ইচিমোকু ক্লাউড, MACD এবং স্টোকাস্টিকের উপর ভিত্তি করে কৌশল অনুসরণ করে মাল্টি-টাইম ফ্রেম ট্রেন্ড


সৃষ্টির তারিখ: 2024-02-05 10:30:45 অবশেষে সংশোধন করুন: 2024-02-05 10:30:45
অনুলিপি: 2 ক্লিকের সংখ্যা: 768
1
ফোকাস
1617
অনুসারী

ইচিমোকু ক্লাউড, MACD এবং স্টোকাস্টিকের উপর ভিত্তি করে কৌশল অনুসরণ করে মাল্টি-টাইম ফ্রেম ট্রেন্ড

ওভারভিউ

এই কৌশলটি Ichimoku ক্লাউড গ্রাফ, মুভিং এভারেজ, MACD, Stochastic এবং ATR এর মতো একাধিক সূচককে একত্রিত করে। এটি একাধিক টাইম ফ্রেমে ট্রেন্ড সনাক্তকরণ এবং ট্র্যাকিংয়ের অনুমতি দেয়। উচ্চ সম্ভাব্যতার ট্রেন্ড সংকেত পাওয়ার পরে, এটিআর চক্রের স্টপ লস ক্যাপ পদ্ধতি ব্যবহার করে ঝুঁকি নিয়ন্ত্রণ করা হয়।

কৌশল নীতি

  1. Ichimoku Cloud Chart judges the direction of the mid-long line trend. CLOSE মূল্যের উপরে ক্লাউড চার্টের টার্নওভার লাইন এবং বেঞ্চলাইনগুলি মাল্টিহেড সংকেত এবং নীচে ফাঁকা হেড সংকেত হিসাবে রয়েছে।

  2. ম্যাকড সংক্ষিপ্ত লাইন প্রবণতা এবং ওভারবয় ওভারসোলের বিষয়ে সিদ্ধান্ত নেয়। ম্যাকড স্তম্ভের উপরে সিগন্যাল লাইনটি মাল্টি হেড সিগন্যাল এবং নীচে ফাঁকা হেড সিগন্যাল।

  3. Stochastic KD সিদ্ধান্ত নেয় যে ওভার-বই ওভার-বিক্রয় এলাকা। K লাইনে 20 টি মাল্টি-হেড সংকেত, নীচে 80 টি খালি-হেড সংকেত।

  4. চলমান গড় মধ্যমেয়াদী প্রবণতা নির্ণয় করে। সমাপ্তির দামের উপরে চলমান গড়টি মাল্টি হেড সিগন্যাল এবং নীচে খালি হেড সিগন্যাল।

  5. উপরের একাধিক সূচক সংকেতকে একত্রিত করে, কিছু মিথ্যা সংকেতকে ফিল্টার করে, একটি উচ্চ সম্ভাবনা সহ একটি ধারাবাহিক প্রবণতা সংকেত তৈরি করে।

  6. এটিআর-এর উপর ভিত্তি করে স্টপ লস স্টপ প্রাইস গণনা করা হয়েছে। এটিআর-এর একটি নির্দিষ্ট গুণককে স্টপ লস এবং স্টপ লস হিসাবে ব্যবহার করে ঝুঁকি নিয়ন্ত্রণ করা হয়েছে।

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

  1. মাল্টি টাইম ফ্রেম ট্রেন্ড সনাক্তকরণ, সিগন্যালের নির্ভুলতা উন্নত করা।

  2. মিথ্যে সংকেত ফিল্টার করার জন্য সূচক সমন্বয় ফিল্টারিং প্রযুক্তির ব্যাপক ব্যবহার।

  3. ATR-এর একটি পর্যায়ক্রমিক স্টপ লস স্টপ, যা একক ক্ষতির সর্বোচ্চ নিয়ন্ত্রণ করে।

  4. ভর্তির শর্তাবলীর কঠোরতা কাস্টমাইজ করা যায়, যা বিভিন্ন ঝুঁকিপূর্ণ পছন্দগুলি পূরণ করে।

কৌশলগত ঝুঁকি

  1. ট্রেন্ড ট্র্যাকিংয়ের উপর ভিত্তি করে, হঠাৎ ঘটনার বিপরীততা সনাক্ত করা অসম্ভব।

  2. ATR-এর পর্যায়ক্রমিক ক্ষতিকে খুব আদর্শ বলে মনে করা হয়, যা রিয়েল-ডিস্কে সম্পূর্ণরূপে প্রতিলিপি করা কঠিন।

  3. ভুল প্যারামিটার সেট করলে ট্রেডিং ফ্রিকোয়েন্সি বা সিগন্যাল শনাক্তকরণের সঠিকতা কম হতে পারে।

  4. বিভিন্ন জাতের এবং বাজারের পরিবেশের সাথে সামঞ্জস্য রেখে একটি ভারসাম্য খুঁজে পেতে প্যারামিটারগুলিকে সামঞ্জস্য করতে হবে।

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

  1. মেশিন লার্নিং অ্যালগরিদম যুক্ত করা হয়েছে যা ট্রেন্ডের বিপর্যয় চিহ্নিত করতে সাহায্য করে।

  2. এটিআর গুণক পরামিতি অপ্টিমাইজ করুন, বিভিন্ন জাতের জন্য বিভিন্ন গুণক সেট করা যেতে পারে।

  3. ট্রেডিং ভলিউমের পরিবর্তনের মতো অন্যান্য বিষয়গুলির সাথে মিলিত হয়ে, এটি ব্রেকআউট সিগন্যালের নির্ভুলতা বাড়িয়ে তোলে।

  4. রিটার্নের ফলাফলের উপর ভিত্তি করে প্যারামিটারগুলিকে ক্রমাগত অপ্টিমাইজ করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করুন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FXFUNDINGMATE

//@version=4
strategy(title="FXFUNDINGMATE TREND INDICATOR", overlay=true)

//Ichimoku Cloud
conversionPeriods = input(9, minval=1, title="Conversion Line Length")
basePeriods = input(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Length")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)[displacement - 1]
leadLine2 = donchian(laggingSpan2Periods)[displacement - 1]


//macd
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)

fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


//kd
periodK = input(5, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)


//atr
atrlength = input(title="Atr Length", defval=8, minval=1)
SMulti = input(title="Stop loss multi Atr", defval=1.0)
TMulti = input(title="Take profit multi Atr", defval=1.0)
smoothing = input(title="Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
ma_function(source, length) =>
	if smoothing == "RMA"
		rma(source, length)
	else
		if smoothing == "SMA"
			sma(source, length)
		else
			if smoothing == "EMA"
				ema(source, length)
			else
				wma(source, length)
atr = ma_function(tr(true), atrlength)


operation_type = input(defval = "Both", title = "Position side", options = ["Long", "Short", "Both"])
operation = operation_type == "Long" ? 1 : operation_type == "Short" ? 2 : 3
showlines = input(true,  title="Show sl&tp lines")

// MA
sma_len = input(100, title="MA Length", type=input.integer)
sma = sma(close, sma_len)

longCond = crossover(k, 20) and macd > 0 and close > sma and close > leadLine1 and close > leadLine2
shortCond = crossunder(k, 80)  and macd < 0 and close < sma and close < leadLine1 and close < leadLine2

entry_price  = float(0.0) //set float
entry_price := strategy.position_size != 0 or longCond or shortCond ? strategy.position_avg_price : entry_price[1]
entry_atr = valuewhen(longCond or shortCond, atr,0)
short_stop_level     = float(0.0)   //set float
short_profit_level   = float(0.0)   //set float
long_stop_level      = float(0.0)   //set float
long_profit_level    = float(0.0)   //set float
short_stop_level    := entry_price + SMulti * entry_atr
short_profit_level  := entry_price - TMulti * entry_atr
long_stop_level     := entry_price - SMulti * entry_atr
long_profit_level   := entry_price + TMulti * entry_atr


//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("1 Jan 2020 00:00 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("31 Dec 2025 23:59 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true

if (operation == 1 or operation == 3)
    strategy.entry("long" , strategy.long , when=longCond and timeCond, alert_message = "Long")
    strategy.exit("SL/TP", from_entry = "long" , limit = long_profit_level , stop = long_stop_level , alert_message = "Long exit")

if (operation == 2 or operation == 3)
    strategy.entry("short", strategy.short, when=shortCond and timeCond, alert_message="Short")
    strategy.exit("SL/TP", from_entry = "short", limit = short_profit_level , stop = short_stop_level , alert_message = "Short exit")
    
if time > i_endTime  
    strategy.close_all(comment = "close all", alert_message = "close all")
    
plot(showlines and strategy.position_size <= 0 ? na : long_stop_level,    color=color.red,  style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size <= 0 ? na : long_profit_level,  color=color.lime, style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_stop_level,   color=color.red,  style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_profit_level, color=color.lime, style=plot.style_linebr, linewidth = 2)

//}