এই কৌশলটি বাজারের প্রবণতা দিক চিহ্নিত করতে বিভিন্ন সময়ের তিনটি চলমান গড় ব্যবহার করে। এটি এমন একটি অবস্থানে প্রবেশ করে যখন তিনটি চলমান গড় একই দিকে চলেছে। একই সময়ে, সর্বশেষতম এন মোমবাতিগুলির সর্বোচ্চ বা সর্বনিম্ন মূল্যের সাথে মিলিত, এটি স্টপ লস এবং লাভ গ্রহণ করে।
দীর্ঘমেয়াদী, মাঝারি মেয়াদী এবং স্বল্পমেয়াদী তিনটি চলমান গড় গণনা করুন। ব্যবহারকারীরা সময়কাল নিজেই সেট করতে পারেন। ডিফল্ট মান 20, 10 এবং 5 হয়।
তিনটি চলমান গড়ের দিকের তুলনা করুন। যখন স্বল্পমেয়াদী চলমান গড় মধ্যমেয়াদী একের উপরে ক্রস করে এবং মাঝারি মেয়াদী দীর্ঘমেয়াদী একের উপরে ক্রস করে, এটি একটি ষাঁড় বাজার হিসাবে বিচার করা হয়। যখন স্বল্পমেয়াদী মধ্যমেয়াদী নীচে ক্রস করে এবং মাঝারি মেয়াদী দীর্ঘমেয়াদী নীচে ক্রস করে, এটি একটি ভালুক বাজার হিসাবে বিচার করা হয়।
একটি ষাঁড়ের বাজারে, যদি মূল্য সর্বশেষ N মোমবাতিগুলির সর্বোচ্চ মূল্য অতিক্রম করে, দীর্ঘ যান; একটি ভালুকের বাজারে, যদি মূল্য সর্বশেষ N মোমবাতিগুলির সর্বনিম্ন মূল্য অতিক্রম করে, শর্ট যান। N এছাড়াও ব্যবহারকারীদের দ্বারা কাস্টমাইজযোগ্য একটি পরামিতি।
একটি পজিশনে প্রবেশ করার পর, স্টপ লস সেট করুন এবং মুনাফা নিন। একটি ষাঁড়ের বাজারে স্টপ লসটি সাম্প্রতিক N মোমবাতিগুলির মধ্যে সর্বনিম্ন মূল্য হিসাবে সেট করা হয় এবং একটি ভালুকের বাজারে এটি সর্বোচ্চ মূল্য হিসাবে সেট করা হয়।
এই কৌশলটি চলমান গড় সূচক এবং ক্যান্ডেলস্টিক চার্টকে একত্রিত করে, যা বাজারের প্রবণতা আরও ভালভাবে নির্ধারণ করতে পারে। একই সাথে, স্টপ লস এবং লাভ গ্রহণের সেটিং যুক্তিসঙ্গত, যা বৃহত্তর ক্ষতি এড়াতে সহায়ক।
একক চলমান গড় এবং অন্যান্য সূচকের সাথে তুলনা করে, এই কৌশলটি বাজারের প্রবণতা আরও নির্ভরযোগ্যভাবে বিচার করার জন্য তিনটি চলমান গড় ব্যবহার করে। এদিকে, সর্বশেষতম এন মোমবাতিগুলির সর্বোচ্চ বা সর্বনিম্ন মূল্যটি ভেঙে যাওয়ার সময় একটি অবস্থানে প্রবেশ করা একটি সাধারণ ব্রেকআউট কৌশল। সামগ্রিকভাবে, কৌশল ধারণাটি পরিষ্কার এবং বাস্তবায়ন করা সহজ।
এই কৌশলটির প্রধান সম্ভাব্য ঝুঁকিগুলি হলঃ
তিনটি চলমান গড়ের দিক সম্পর্কে ভুল সিদ্ধান্ত নেওয়ার সম্ভাবনা। যদি মাঝারি-স্বল্পমেয়াদী চলমান গড় ভুল সংকেত দেয় তবে অপ্রয়োজনীয় ক্ষতি হতে পারে।
পজিশনে প্রবেশের সময় সঠিক নয়, যা সহজেই ধরা পড়ে। প্রবেশের সময় যথাযথভাবে অনুকূল করা উচিত।
স্টপ লস দূরত্ব খুব ছোট সেট করা হয়। স্টপ লস দূরত্ব প্রসারিত মূল্যের জন্য আরো রানিং রুম অনুমতি সাহায্য করে।
এই কৌশলটি অপ্টিমাইজ করার দিকনির্দেশনাগুলির মধ্যে রয়েছেঃ
চলমান গড় সংকেতগুলির নির্ভরযোগ্যতা নিশ্চিত করার জন্য ফিল্টারিংয়ের জন্য অন্যান্য সূচক যুক্ত করুন। উদাহরণস্বরূপ, ট্রেডিং ভলিউমের দীর্ঘ / সংক্ষিপ্ত বিচার যুক্ত করুন।
বিভিন্ন পণ্যের সাথে আরও ভালভাবে খাপ খাইয়ে নেওয়ার জন্য চলমান গড় সময়ের অপ্টিমাইজ করা।
স্বয়ংক্রিয় প্যারামিটার অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিং অ্যালগরিদম যুক্ত করুন।
উচ্চ ফ্রিকোয়েন্সি ডেটাতে এই কৌশলটির কার্যকারিতা পরীক্ষা করুন।
এই কৌশলটি তুলনামূলকভাবে সহজ এবং সর্বজনীন। ধারণাটি শক্তিশালী সম্ভাব্যতার সাথে পরিষ্কার। একটি চলমান গড় ক্রসওভার সিস্টেমের উদাহরণ হিসাবে, এটি নতুনদের জন্য একটি সাধারণ পছন্দ। সঠিক অপ্টিমাইজেশনের মাধ্যমে, সিস্টেমটি স্থিতিশীল রিটার্ন অর্জনের জন্য আরও পণ্য এবং সময়সীমার জন্য প্রয়োগ করা যেতে পারে।
/*backtest start: 2023-01-30 00:00:00 end: 2024-02-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © hobbiecode //@version=5 strategy("Cross Breakout - Hobbiecode", shorttitle="Cross - HOBBIE", overlay=true) // User-defined input for moving averages long_period = input(20, title="Long Period") medium_period = input(10, title = "Medium Period") short_period = input(5, title="Short Period") type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"]) candles_back = input(10, title = "Candles Back") bars_valid = input(3, title = "Bars to Exit") // Calculating moving averages long_ma = 0.0 medium_ma = 0.0 short_ma = 0.0 if type_ma == "SMA" long_ma := ta.sma(close, long_period) medium_ma := ta.sma(close, medium_period) short_ma := ta.sma(close, short_period) else long_ma := ta.ema(close, long_period) medium_ma := ta.ema(close, medium_period) short_ma := ta.ema(close, short_period) // Plot moving averages plot(long_ma, title="Long Moving Average", color=color.red) plot(medium_ma, title = "Medium Moving Average", color = color.yellow) plot(short_ma, title="Short Moving Average", color=color.green) // Check last min/max last_min = ta.lowest(candles_back) last_max = ta.highest(candles_back) // Strategy logic for crossing of moving averages longCondition = short_ma > medium_ma and medium_ma > long_ma and high == last_max shortCondition = short_ma < medium_ma and medium_ma < long_ma and low == last_min longCondition_entry = longCondition and strategy.position_size == 0 shortCondition_entry = shortCondition and strategy.position_size == 0 // Check last min/max for operation last_min_op = ta.lowest(candles_back)[1] last_max_op = ta.highest(candles_back)[1] // Plot lines var line r1Line = na // Entry orders // if (longCondition) // from_line = chart.point.now(high) // to_line = chart.point.from_index(bar_index + candles_back, high) // r1Line := line.new(from_line, to_line, color = color.green, width = 2) if longCondition_entry and ta.crossover(close,last_max_op) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", stop=low) // if (shortCondition) // from_line = chart.point.now(low) // to_line = chart.point.from_index(bar_index + candles_back, low) // r1Line := line.new(from_line, to_line, color = color.red, width = 2) if shortCondition_entry and ta.crossunder(close,last_min_op) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", stop=high) if ta.barssince(longCondition_entry) >= bars_valid strategy.close("Long") if ta.barssince(shortCondition_entry) >= bars_valid strategy.close("Short")