হল মুভিং এভারেজ ফিল্টার কৌশল


সৃষ্টির তারিখ: 2024-01-04 15:16:34 অবশেষে সংশোধন করুন: 2024-01-04 15:16:34
অনুলিপি: 0 ক্লিকের সংখ্যা: 689
1
ফোকাস
1664
অনুসারী

হল মুভিং এভারেজ ফিল্টার কৌশল

ওভারভিউ

এই কৌশলটি ট্রেডিং সিগন্যাল তৈরি এবং ফিল্টার করার জন্য স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী দুটি হলের চলমান গড় ব্যবহার করে। স্বল্পমেয়াদী হলের চলমান গড়টি সংকেত তৈরির জন্য ব্যবহৃত হয়, এবং দীর্ঘমেয়াদী হলের চলমান গড়টি ফিল্টারিং সিগন্যালের জন্য ব্যবহৃত হয়। কেবলমাত্র স্বল্পমেয়াদী হলের গড় এবং দীর্ঘমেয়াদী হলের গড়ের সমান্তরাল পরিবর্তনের সময়ই একটি ট্রেডিং সিগন্যাল তৈরি হয়।

এই কৌশলটি একই সাথে এটিআর সূচক ব্যবহার করে স্টপ লস এবং স্টপ ওভারলে সেট করে। প্রতিটি পজিশন খোলার সময়, এটিআর এর মান অনুসারে বর্তমান অবস্থানের স্টপ লস এবং স্টপ ওভারলে গতিশীলভাবে সেট করা হয়।

কৌশল নীতি

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

দীর্ঘমেয়াদী হলের মুভিং এভারেজ মূল্যের সামগ্রিক গতিবিধি নির্ধারণের জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যখন দীর্ঘমেয়াদী হলের মুভিং এভারেজের দিকটি উর্ধ্বমুখী হয়, তখন দামগুলি সামগ্রিকভাবে উর্ধ্বমুখী প্রবণতায় থাকে।

ট্রেডিং সিগন্যাল তখনই তৈরি করা হয় যখন স্বল্পমেয়াদী হলের চলমান গড়ের মোড় হয় এবং তার মোড়ের দিকটি দীর্ঘমেয়াদী হলের চলমান গড়ের সামগ্রিক গতির দিকের সাথে মিলে যায়। অর্থাৎ, এই স্বল্পমেয়াদী সংকেতটি কেবল তখনই ট্রেড করা হয় যখন দামের স্বল্পমেয়াদী প্রবণতা পরিবর্তিত হয় এবং সামগ্রিক গতি একই দিকে পরিবর্তিত হয়। এটি কার্যকরভাবে স্বল্পমেয়াদী বাজারের গোলমালের কারণে ভুল সংকেতগুলিকে ফিল্টার করতে পারে।

পজিশন খোলার পরে, এটিআর সূচকের আকারের উপর নির্ভর করে স্টপ লস এবং স্টপ লস সেট করা হবে। এটিআর সূচকটি বাজারের ওঠানামা এবং ঝুঁকি স্তরের প্রতিফলন করতে পারে। স্টপ লস অবস্থানটি দামের নিম্নের নীচে স্থাপন করা হবে, এবং স্টপ লস অবস্থানটি দামের উচ্চের উপরে স্থাপন করা হবে এবং এটিআর মানের সাথে সংযুক্ত থাকবে।

সামর্থ্য বিশ্লেষণ

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

ডায়নামিকভাবে স্টপ লস স্টপ পজিশনের সমন্বয় করুন, আপনি বাজারের অস্থিরতার পরিমাণ অনুসারে যুক্তিসঙ্গত স্টপ লস স্টপ সেট করতে পারেন, লাভের গ্যারান্টি দেওয়ার সময় অত্যধিক আগ্রাসী হওয়া এড়াতে এবং ক্ষতির ঝুঁকি হ্রাস করতে পারেন।

হলের চলমান গড়ের সুবিধাগুলি ব্যবহার করে, দামের গতিবিধি আরও নমনীয় এবং সঠিকভাবে বিচার করা যায় এবং সাধারণ চলমান গড়ের তুলনায় আরও শক্তিশালী ট্র্যাকিং ক্ষমতা রয়েছে।

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

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

অস্থিরতার সময়, দামগুলি একটি ছোট ব্যবসায়ের পরিসরে ঘুরে বেড়াতে পারে, যা সংকেত ত্রুটির হার বাড়িয়ে তোলে এবং অর্থহীন ব্যবসায়ের সম্ভাবনা বাড়িয়ে তোলে। এই ক্ষেত্রে, অর্থহীন ব্যবসায়কে এড়াতে ট্রেডিং সিগন্যাল ফিল্টার শর্তগুলি প্রসারিত করা যেতে পারে।

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

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

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

দীর্ঘ এবং স্বল্পমেয়াদী হলের চলমান গড়ের মধ্যে ফিল্টারিং লজিকাল সম্পর্ক বাড়ানো বা অনুকূলিতকরণ করা যেতে পারে, যা ফিল্টারিং নিয়মকে আরও কঠোর করে এবং ভুল সংকেত এড়াতে পারে।

বিভিন্ন প্যারামিটার সেটিংয়ের প্রভাব কৌশলগত স্থায়িত্ব এবং মুনাফার উপর অধ্যয়ন করা যেতে পারে। যেমন, চলমান গড় প্যারামিটার, এটিআর প্যারামিটার ইত্যাদির বিভিন্ন সংমিশ্রণ বিভিন্ন ট্রেডিং পারফরম্যান্স তৈরি করতে পারে।

সারসংক্ষেপ

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

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

//@version=4
strategy("Hull Filtered Strategy", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity, default_qty_value = 10, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)

// Parameters for Hull Moving Averages
src = input(close, title="Source")
signal_period = input(50, title="Period of signal HMA")
filter_period = input(200, title="Period of filter HMA")

strat_dir_input = input(title="Strategy Direction", defval="all", options=["long", "short", "all"])

// Set allowed trading directions
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

// stop loss and take profit
sl_factor = input(2,title="Stop Loss Factor")
tp_factor = input(3,title="Take Profit Factor")
atr_period = input(14, title="ATR Period (SL/TP)")

// Testing Start dates
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


// -----------------------------------------------------------------------------
// Global variables
// -----------------------------------------------------------------------------
var float tp = na
var float sl = na
var float position = na


// -----------------------------------------------------------------------------
// Functions
// -----------------------------------------------------------------------------
testWindow() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


// -----------------------------------------------------------------------------
// The engine
// -----------------------------------------------------------------------------
hma_signal = hma(src, signal_period)
hma_filter = hma(src, filter_period)

// Used to determine exits and stop losses
atr_e = atr(atr_period)

// if hma_filter increases hma_trend is set to 1, if it decreases hma_trend is set to -1. If no trend is available, hma_trend is set to ß0
trend = hma_filter > hma_filter[1]  ?  1 : hma_filter < hma_filter[1] ? -1 : 0
signal = hma_signal > hma_signal[1] ? 1 : hma_signal  < hma_signal[1] ? -1 : 0


// -----------------------------------------------------------------------------
// signals
// -----------------------------------------------------------------------------
if signal[0] == 1 and signal[1] != 1 and trend == 1 and testWindow()
    sl := close - sl_factor*atr_e
    tp := close + tp_factor*atr_e
    strategy.entry("HMA_LNG", strategy.long)
    strategy.exit("LE", "HMA_LNG", profit=100*tp_factor*atr_e, loss=100*sl_factor*atr_e)
    
if signal[0] == -1 and signal[1] != -1 and trend == -1 and testWindow()
    sl := close + sl_factor*atr_e
    tp := close - tp_factor*atr_e
    strategy.entry("HMA_SHRT", strategy.short)
    strategy.exit("SE", "HMA_SHRT", profit=100*tp_factor*atr_e, loss=100*sl_factor*atr_e)


if strategy.position_size != 0
    sl := sl[1]
    tp := tp[1]

// -----------------------------------------------------------------------------
// PLOT
// -----------------------------------------------------------------------------
hma_s = plot(hma_signal, title="SIGNAL", color = signal == 1 ? color.green : color.red)
hma_l = plot(hma_filter, title="TREND", color = trend == 1 ? color.green : color.red)

plot(tp, title="TAKE PROFIT", color= strategy.position_size != 0 ? color.blue: na, linewidth=1)  
plot(sl, title="STOP LOSS", color= strategy.position_size != 0 ? color.red: na, linewidth = 1)