মুভিং এভারেজ ক্রসওভার কৌশল


সৃষ্টির তারিখ: 2023-09-18 17:35:37 অবশেষে সংশোধন করুন: 2023-09-18 17:35:37
অনুলিপি: 0 ক্লিকের সংখ্যা: 688
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূল নীতিগুলি হলঃ

  1. দুটি চলমান গড় গণনা করুন, দ্রুত বা ধীর, এসএমএ বা ইএমএ নির্বাচন করুন।

  2. যখন দ্রুত লাইন দিয়ে ধীর লাইন অতিক্রম করা হয়, তখন বেশি কাজ করুন; যখন দ্রুত লাইন দিয়ে ধীর লাইন অতিক্রম করা হয়, তখন সমতল রাখুন।

  3. ট্রেডিং সিগন্যাল হিসেবে গড় লাইন বা গড় লাইন ক্রসিংয়ের মাধ্যমে মূল্য অতিক্রম করা যেতে পারে।

  4. আপনি একটি নির্দিষ্ট সময়সীমার জন্য একটি কৌশল সেট করতে পারেন।

  5. আপনি যদি একটি বড় বাজার চান তবে আপনি কেবলমাত্র একটি বড় বাজার কিনতে পারেন।

  6. চলমান গড়রেখার পরামিতি দ্বারা অপ্টিমাইজ করা, বিভিন্ন সময়কালের সাথে খাপ খাইয়ে নেওয়া।

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

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

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

  1. “প্রকৃতি সহজ, বাস্তবায়ন সহজ, ট্রেডিং সিগন্যাল সুস্পষ্ট”।

  2. ট্রেন্ডের উপর নির্ভর করে, আপনি সময়মত ক্রয়-বিক্রয় সুযোগগুলি ধরতে পারেন।

  3. বিভিন্ন গড়রেখার প্যারামিটারগুলির সাথে একত্রিত করা যায়, যা বিভিন্ন বাজার পরিবেশে প্রযোজ্য।

  4. অপারেটরকে কেবলমাত্র অতিরিক্ত বা খালি কাজ করতে হবে, অনিশ্চিত বিপরীত অপারেশন এড়াতে।

  5. নির্দিষ্ট সময়সীমা এড়ানোর জন্য, কৌশলটি চলার সময় নির্ধারণ করা যায়।

  6. প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে ক্রমাগত কৌশলগত পারফরম্যান্স উন্নত করা যায়।

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

এই কৌশলটির প্রধান ঝুঁকিগুলো হলঃ

  1. এটি একটি ভুল সংকেত তৈরি করতে পারে এবং খুব ঘন ঘন লেনদেন এড়ানো উচিত।

  2. প্রদর্শনের উপর নির্ভর করে গড় লাইন প্যারামিটার নির্বাচন, ভুল নির্বাচন ক্ষতি হতে পারে।

  3. দেরিতে প্রবেশ ও দেরিতে বের হওয়া এড়ানোর জন্য কিছু দেরী রয়েছে।

  4. এটি বাজারের জন্য উপযুক্ত নয়, যেহেতু বাজারের পরিস্থিতির উপর প্রভাব পড়েছে।

  5. সমান্তরাল ক্রসিং একটি নির্দিষ্ট পরিমাণে এলোমেলো, যা সম্পূর্ণরূপে ক্ষতি এড়াতে পারে না।

ট্রেডিং ভলিউম নিশ্চিতকরণ, অপ্টিমাইজেশান প্যারামিটার বা অন্যান্য সূচক সমন্বয় ব্যবহার করে ঝুঁকি কমাতে পারে।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. যোগ করুন /% ((Line - ShortMa) /ShortMa) / ((Line - LongMa) /LongMa) / গড়রেখার স্কেল ফিল্টার শর্ত হিসাবে।

  2. বিভিন্ন সমন্বয় পরীক্ষা করার জন্য চলমান গড়কালীন সময়সীমার প্যারামিটারগুলি অপ্টিমাইজ করুন।

  3. MACD বা RSI ইত্যাদির মতো সূচকগুলিতে যোগদানের জন্য একাধিক নিশ্চিতকরণ।

  4. স্টপ লস কন্ডিশন সেট করুন এবং একক ক্ষতির সীমা নির্ধারণ করুন।

  5. প্রবণতা বাজার এবং পুনরুদ্ধার বাজার মধ্যে পার্থক্য, শর্তাধীন ব্যবহারের জন্য।

  6. বিভিন্ন পজিশনের উপর পরীক্ষা-নিরীক্ষা করা হচ্ছে, যাতে সর্বোত্তম বিকল্প খুঁজে পাওয়া যায়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 10m
basePeriod: 1m
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/
// © gliese581d

//@version=4
strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2,  
 default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000)


//SETTINGS

longs_on = input(title="Long Trades enabled", defval=true)
shorts_on = input(title="Short Trades enabled", defval=true)

long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"])
short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"])

ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"])
ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1)
ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"])
ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1)


//MOVING AVERAGES

ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len)
ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len)


//STRATEGY

//trade entries
long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false
short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false

start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1)
start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1)
end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1)
end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1)

in_time = true

strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry)
strategy.close("Long", when=longs_on and not shorts_on and short_entry)

strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry)
strategy.close("Short", when=shorts_on and not longs_on and long_entry)


//PLOTTING

//color background
last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000)
bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na
bgcolor(color=bgcol, transp=90)

plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue)
plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black)
plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)