এই কৌশলটি একটি ট্রেন্ড ট্র্যাকিং ধরণের কৌশল যা ক্রস ক্রয় এবং বিক্রয় সংকেত হিসাবে দ্রুত চলমান গড় এবং ধীর চলমান গড়ের উপর ভিত্তি করে তৈরি। এটি গতিশীলভাবে বাজারের প্রবণতাগুলির সাথে খাপ খাইয়ে চলমান গড় প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে আয়কে সর্বাধিক করে তোলে।
দ্রুত চলমান গড় এবং ধীর চলমান গড় গণনা করুন। দ্রুত চলমান গড় প্যারামিটারটি ডিফল্ট 21 এবং ধীর চলমান গড় প্যারামিটারটি ডিফল্ট 34।
যখন দ্রুত চলমান গড় রেখায় ধীর চলমান গড় রেখা অতিক্রম করা হয়, তখন বাজারটি উত্থিত হয় এবং একটি ক্রয়-বিক্রয় সংকেত দেওয়া হয়।
যখন দ্রুত চলমান গড় রেখার নীচে ধীর চলমান গড় রেখা অতিক্রম করে, তখন এটি নিম্নমুখী ট্রেডিংয়ের ইঙ্গিত দেয় এবং একটি বিক্রয় সংকেত দেয়।
মুভিং গড়ের দৈর্ঘ্য প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে এবং বাজারের প্রবণতাগুলির সাথে গতিশীলভাবে খাপ খাইয়ে ট্রেন্ড অনুসরণ করে মুনাফা অর্জন করুন।
এই কৌশলটি সহজ, সুস্পষ্ট এবং সহজে বোঝা যায়।
মার্কেটের প্রবণতা কার্যকরভাবে পর্যবেক্ষণ করতে সক্ষম হওয়া এবং লাভের সম্ভাবনা রয়েছে।
প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করার মাধ্যমে, আপনি পরিস্থিতির পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারেন।
মোবাইল গড়-রেখা অ্যালগরিদম কনফিগার করা যায়, যা কৌশলগত নমনীয়তা বাড়ায়।
“অনুগ্রহপূর্বক, আপনার অ্যাকাউন্টের নাম পরিবর্তন করুন এবং আপনার অ্যাকাউন্টের নাম পরিবর্তন করুন।
মোবাইল মিড-লাইন কৌশলগুলি ঘন ঘন লেনদেনের জন্য সহজ এবং লেনদেনের ব্যয় বেশি।
ট্রেডিংয়ের তীব্র অস্থিরতার সময়, চলমান গড়টি পিছিয়ে যায় এবং সেরা কেনার এবং বিক্রয়ের সময় মিস করতে পারে।
চলমান গড় রেখার প্যারামিটারগুলিকে অপ্টিমাইজ করা প্রয়োজন এবং ফ্রিকোয়েন্সিটি সামঞ্জস্য করা দরকার। ভুল কনফিগারেশন কৌশলটি ব্যর্থ করে।
ক্ষতির বিস্তার রোধে স্টপ লস কন্ট্রোলের প্রয়োজন।
এই প্রবণতা পাল্টে গেলে, বড় ধরনের ক্ষতির আশঙ্কা রয়েছে।
চলমান গড়ের প্যারামিটারগুলিকে অপ্টিমাইজ করা হয়েছে যাতে এটি আরও সংবেদনশীল হয় এবং প্রবণতা পরিবর্তনকে সময়মতো ধরতে পারে।
স্টপ লজিক যুক্ত করা হয়েছে, একক ক্ষতির উপর কঠোর নিয়ন্ত্রণ।
ট্রেন্ড রিভার্সনের ক্ষতি এড়ানোর জন্য ট্রেন্ড বিচারক সূচক বাড়ানো।
মোবাইল গড় সমান্তরাল কৌশলকে আরও স্মার্ট ও স্বয়ংক্রিয় করে তুলতে অপ্টিমাইজ করুন।
প্যারামিটার অপ্টিমাইজেশান মডিউল যোগ করুন, মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন।
এই কৌশলটির সামগ্রিক ধারণাটি পরিষ্কার এবং সহজেই বোঝা যায়, বিভিন্ন দৈর্ঘ্যের দ্রুত এবং ধীরে ধীরে চলমান গড় লাইনটি কনফিগার করে ক্রয়-বিক্রয় সম্পন্ন করে, এটি একটি আদর্শ প্রবণতা অনুসরণকারী কৌশল। কৌশলটির সুবিধা হ’ল ট্রেডিংয়ের নিয়মগুলি সহজ, বাস্তবায়ন করা সহজ এবং কার্যকরভাবে প্রবণতা ক্যাপচার করতে পারে। তবে কিছু ঝুঁকিও রয়েছে, কৌশলটি আরও স্থিতিশীল এবং নির্ভরযোগ্য করার জন্য প্যারামিটার কনফিগারেশন এবং স্টপ লজিককে ক্রমাগত অপ্টিমাইজ করার প্রয়োজন। সামগ্রিকভাবে, কৌশলটির আরও উন্নতির সম্ভাবনা রয়েছে, গভীর গবেষণা এবং প্রয়োগের জন্য।
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
// @version=4
// © Ehsan Haghpanah, (ehsanha)
// Algorithmic Trading Research
//
// eha Moving Averages Strategy,
// A simple strategy based on crossing Moving Averages of
// different lengths (a fast moving average and slow one)
//
strategy(title = "eha Moving Averages Strategy", shorttitle = "eha MA Strategy", overlay = true)
//
// -- strategy parameter(s)
// moving averages parameter(s)
var _fastMA_len = input(title = "Fast MA Length", defval = 21, type = input.integer, minval = 1, step = 1)
var _slowMA_len = input(title = "Slow MA Length", defval = 34, type = input.integer, minval = 1, step = 1)
var _ma_algo_id = input(title = "MA Algorithm", defval = "SMA", options = ["SMA", "EMA", "WMA"])
// backtesting date and time range parameter(s)
var _startYear = input(defval = 2020, title = "Start Year", type = input.integer, minval = 1976)
var _startMonth = input(defval = 1, title = "Start Month", type = input.integer, minval = 1, maxval = 12)
var _startDay = input(defval = 1, title = "Start Day", type = input.integer, minval = 1, maxval = 31)
var _closeYear = input(defval = 2020, title = "Close Year", type = input.integer, minval = 1984)
var _closeMonth = input(defval = 9, title = "Close Month", type = input.integer, minval = 1, maxval = 12)
var _closeDay = input(defval = 1, title = "Close Day", type = input.integer, minval = 1, maxval = 31)
//
// -- function(s) and calculation(s)
// checks whether current time is in backtesting time range
start_t = timestamp(_startYear, _startMonth, _startDay, 00, 00) // backtesting range start time, (00, 00); (hour, minute)
close_t = timestamp(_closeYear, _closeMonth, _closeDay, 23, 59) // backtesting range close time, (23, 59); (hour, minute)
isInRange() => true
//
// calculates moving average based on provided algorithm, source and length
// alg : moving average algorithm
// len : length
// ser : series
calcMA(alg, len, ser) =>
(len == 0) ? ser : ((alg == "SMA") ? sma(ser, len) : ((alg == "EMA") ? ema(ser, len) : (alg == "WMA" ? wma(ser, len) : na)))
//
// -- strategy logic and calculation(s)
ma_fast = calcMA(_ma_algo_id, _fastMA_len, close)
ma_slow = calcMA(_ma_algo_id, _slowMA_len, close)
cross_ov = crossover (ma_fast, ma_slow) // returns true if fastMA crosses over slowMA
cross_un = crossunder(ma_fast, ma_slow) // returns true if slowMA crosses over fastMA
//
// -- strategy execution logic
// opens a long position whenever the time is in range and crosses over
strategy.entry("ID", comment = "-", long = strategy.long, when = isInRange() and cross_ov)
// closes the position whenever the time is in range and crosses under
strategy.close("ID", comment = "-", when = isInRange() and cross_un)
//
// -- drawing and visualization
co_fast = color.new(color.gray, 25)
co_slow = color.new(color.gray, 75)
// drawing moving average(s)
plot(ma_fast, color = co_fast, linewidth = 2, style = plot.style_line)
plot(ma_slow, color = co_slow, linewidth = 3, style = plot.style_line)