রিসোর্স লোড হচ্ছে... লোডিং...

ডুয়াল ইএমএ ক্রসওভার ট্রেন্ড ট্র্যাকিং কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-02-29 11:45:42
ট্যাগঃ

img

সারসংক্ষেপ

কৌশলগত যুক্তি

এই কৌশলটির মূল সূচক দুটি সেট EMA, যার মধ্যে একটি দীর্ঘ চক্র EMA1 এবং একটি সংক্ষিপ্ত চক্র EMA2 রয়েছে। EMA1 পরামিতি 21 এবং EMA2 পরামিতি 10। কৌশলটি 4 ঘন্টা চক্রের উপর ভিত্তি করে এই দুটি EMA গণনা করে।

সুবিধা বিশ্লেষণ

  • ডুয়াল EMA কাঠামো কার্যকরভাবে ট্রেন্ড নির্ধারণের জন্য স্বল্প ও মাঝারি মেয়াদী প্রবণতা পরিবর্তনগুলি ক্যাপচার করতে পারে।

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

  • সূচকগুলি গণনা করার জন্য চার ঘন্টার স্তরের ব্যবহার উচ্চ-ঘন ঘন দামের ওঠানামা মোকাবেলা করতে পারে।

  • কৌশল কাঠামোটি সহজ এবং পরিষ্কার, সহজেই বোঝা এবং বাস্তবায়ন করা যায় এবং পরিমাণগত ট্রেডিং অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত।

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

  • সংহতকরণ বাজারের মূল্যায়নে দ্বৈত EMA কাঠামো কম কার্যকর। সংহতকরণের দীর্ঘ সময়কাল মিথ্যা সংকেত তৈরি করতে পারে।

  • ৪ ঘন্টার স্তরের সূচকগুলি হঠাৎ ঘটনার প্রতিক্রিয়া জানানোর জন্য যথেষ্ট সংবেদনশীল নয়। বড় হঠাৎ সংবাদগুলি ৪ ঘন্টার মধ্যে বড় পদক্ষেপের কারণ হতে পারে যা কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করা যায় না।

  • কৌশলটি মৌলিক বিশ্লেষণকে একত্রিত না করে কেবলমাত্র প্রযুক্তিগত সূচকগুলির উপর নির্ভর করে। যদি কোম্পানির মৌলিক সূচকে বড় ধরনের পরিবর্তন ঘটে তবে প্রযুক্তিগত সূচকগুলি ব্যর্থ হতে পারে।

এই ঝুঁকিগুলি নিম্নলিখিত উপায়ে নিয়ন্ত্রণ করা যেতে পারেঃ

  1. মডেল সংমিশ্রণের জন্য আরো সময়-চক্র EMA সূচক যোগ করুন।

  2. বড় আকস্মিক ঘটনা নির্ধারণ এবং গতিশীলভাবে অবস্থান সামঞ্জস্য করতে পাঠ্য অনুভূতি বিশ্লেষণ ব্যবহার করুন।

  3. অর্থনৈতিক পরিবেশ, নীতি এবং কোম্পানির মৌলিক পরিবর্তনগুলিকে গতিশীলভাবে পরামিতিগুলি সামঞ্জস্য করার জন্য সংযুক্ত করুন।

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

কৌশলটি আরও উন্নত করা যেতে পারেঃ

  1. স্টপ লস মেকানিজম যোগ করুন। যুক্তিসঙ্গত স্টপ লস পয়েন্টগুলি কার্যকরভাবে একক ক্ষতি নিয়ন্ত্রণ করতে পারে।

  2. ডায়নামিক প্যারামিটার অপ্টিমাইজেশান। EMA প্যারামিটারগুলি বিভিন্ন বাজারের পরিবেশের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করা যেতে পারে।

  3. মেশিন লার্নিং কৌশল অন্তর্ভুক্ত করুন। টেনসরফ্লোর মতো মডেলগুলি রিয়েল টাইমে মূল্যের প্রবণতাকে শ্রেণীবদ্ধ করতে প্রশিক্ষিত হতে পারে।

সিদ্ধান্ত


/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)

আরো