মুভিং এভারেজ ক্রসওভার এবং এভারেজ ট্রু রেঞ্জ হাইব্রিড কৌশল


সৃষ্টির তারিখ: 2023-09-26 17:22:21 অবশেষে সংশোধন করুন: 2023-09-26 17:22:21
অনুলিপি: 7 ক্লিকের সংখ্যা: 976
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

মূলনীতি

  • এটিআর সূচক ব্যবহার করে মেগা-চক্রের দামের অস্থিরতা নির্ণয় করুন এবং নিশ্চিত করুন যে এটি একটি উত্থানের প্রবণতা রয়েছে
  • ছোট সময়ের মধ্যে, দ্রুত গড় এবং ধীর গড় গণনা করুন, যখন দ্রুত লাইনটি ধীর লাইনটি অতিক্রম করে তখন অতিরিক্ত করুন, যখন দ্রুত লাইনটি ধীর লাইনটি অতিক্রম করে তখন খালি করুন
  • এটিআর সূচকটি বড় সময়ের জন্য গড় প্রকৃত তরঙ্গের পরিমাণ গণনা করে, সামগ্রিক প্রবণতা নির্ধারণ করে; গড় লাইন ক্রস ছোট সময়ের মধ্যে নির্দিষ্ট প্রবেশের স্থান নির্ধারণ করে
  • এটিআর সূচকটি আরএমএ সমতল চলমান গড় দ্বারা গণনা করা হয়, দৈর্ঘ্য এবং মসৃণতা সামঞ্জস্যযোগ্য
  • গড় লাইন ক্রস দুটি SMA গড় লাইন গণনা দ্বারা গঠিত, দৈর্ঘ্য সামঞ্জস্যযোগ্য

সুবিধা

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

ঝুঁকি

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

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

  • অন্যান্য সূচকগুলি ব্যবহার করে ট্রেন্ডের শক্তি নির্ণয় করার চেষ্টা করুন, যেমন ব্রিনের বন্ড
  • সমান্তরাল ক্রস টাইপ অন্যান্য সমন্বয় যেমন ইএমএ, গতির সূচক ইত্যাদির জন্য প্রসারিত করা যেতে পারে
  • ভুয়া প্রবেশ এড়ানোর জন্য ভঙ্গ নিশ্চিতকরণ ব্যবস্থা যোগ করা যায়
  • অনুকূলিতকরণ পরামিতি সেটিং ক্রমঃ ATR দৈর্ঘ্য এবং মসৃণতা > গড় লাইন দৈর্ঘ্য > স্টপ লস স্টপ সেটিং
  • ফিক্সড শেয়ার, ডায়নামিক পজিশন ইত্যাদির মতো তহবিল পরিচালনার কৌশল বিবেচনা করুন
  • রিয়েল-ডিস্কের দীর্ঘমেয়াদী পর্যালোচনা, কৌশলগত স্থায়িত্ব এবং সর্বাধিক প্রত্যাহারের মূল্যায়ন

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
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/
// © Phoenix085

//@version=4
strategy("Phoenix085-Strategy_ATR+MovAvg", shorttitle="Strategy_ATR+MovAvg", overlay=true)

// // ######################>>>>>>>>>>>>Inputs<<<<<<<<<<<#########################
// // ######################>>>>>>>>>>>>Strategy Inputs<<<<<<<<<<<#########################

TakeProfitPercent = input(50, title="Take Profit %", type=input.float, step=.25)
StopLossPercent = input(5, title="Stop Loss %", type=input.float, step=.25)

ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick
LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick

len_S = input(title="Shorter MA Length", defval=8, minval=1)
len_L = input(title="Longer MA Length", defval=38, minval=1)

TF = input(defval="", title="Session TF for calc only", type=input.session,options=[""])
TF_ = "1"

if TF == "3"
    TF_ == "1"
else 
    if TF == "5" 
        TF_ == "3"
    else 
        if TF == "15"
            TF_ == "5"
        else 
            if TF == "30"
                TF_ == "15"
            else 
                if TF == "1H"
                    TF_ == "30"
                else 
                    if TF == "2H"
                        TF_ == "1H"
                    else 
                        if TF == "4H"
                            TF_ == "3H"
                        else 
                            if TF == "1D"
                                TF_ == "4H"
                            else
                                if TF == "1W"
                                    TF_ == "1H"
                                else 
                                    if TF == "1M"
                                        TF_ == "1W"
                                    else
                                        if TF =="3H"
                                            TF_ == "2H"

Src = security(syminfo.tickerid, TF, close[1], barmerge.lookahead_on)

Src_ = security(syminfo.tickerid, TF_, close, barmerge.lookahead_off)

// ######################>>>>>>>>>>>>ATR Inputs<<<<<<<<<<<#########################
length = input(title="ATR Length", defval=4, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])


// //######################>>>>>>>>>>>>Custom Functions Declarations<<<<<<<<<<<#########################



// ######################>>>>>>>>>>>>ATR<<<<<<<<<<<#########################

ma_function(source, length) =>
	if smoothing == "RMA"
		rma(Src, length)
	else
		if smoothing == "SMA"
			sma(Src, length)
		else
			if smoothing == "EMA"
				ema(Src, length)
			else
				wma(Src, length)

ATR=ma_function(tr(true), length)


// //######################>>>>>>>>>>>>Conditions<<<<<<<<<<<#########################
ATR_Rise = ATR>ATR[1] and ATR[1]<ATR[2] and ATR[2]<ATR[3]

longCondition = crossover(sma(Src_, len_S), sma(Src_, len_L)) and sma(Src_, len_L) < sma(Src_, len_S) and (sma(Src_, len_S) < Src_[1])
shortCondition = crossunder(sma(Src_, len_S), sma(Src_, len_L)) and sma(Src_, len_L) > sma(Src_, len_S) 

plot(sma(Src_, len_S), color=color.lime, transp=90)
col = longCondition ? color.lime : shortCondition ? color.red : color.gray
plot(sma(Src_, len_L),color=col,linewidth=2)


bool IsABuy = longCondition 
bool IsASell = shortCondition

// // ######################>>>>>>>>>>>>Strategy<<<<<<<<<<<#########################

testStartYear = input(2015, "Backtest Start Year", minval=1980)
testStartMonth = input(1, "Backtest Start Month", minval=1, maxval=12)
testStartDay = input(1, "Backtest Start Day", minval=1, maxval=31)
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, "Backtest Stop Year", minval=1980)
testStopMonth = input(12, "Backtest Stop Month", minval=1, maxval=12)
testStopDay = input(31, "Backtest Stop Day", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
inDateRange = true

bgcolor(inDateRange ? color.green : na, 90)
// //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//

// // ######################>>>>>>LongEntries<<<<<<<#########################
if inDateRange and ATR_Rise and IsABuy 
    strategy.entry("longCondition",true,when = longCondition)
    strategy.close("shortCondition")
    strategy.exit("Take Profit or Stop Loss", "longCondition",trail_points = close * 0.05 / syminfo.mintick ,trail_offset = close * 0.05 / syminfo.mintick, loss = LossTarget)
// strategy.risk.max_drawdown(10, strategy.percent_of_equity)
    
// // ######################>>>>>>ShortEntries<<<<<<<#########################
if inDateRange and ATR_Rise and IsASell  
    strategy.entry("shortCondition",false,when = shortCondition)
    strategy.exit("Take Profit or Stop Loss", "shortCondition",trail_points = close * 0.05 / syminfo.mintick ,trail_offset = close * 0.05 / syminfo.mintick, loss = LossTarget)
    strategy.close("longCondition")