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


সৃষ্টির তারিখ: 2024-01-23 14:18:26 অবশেষে সংশোধন করুন: 2024-01-23 14:18:26
অনুলিপি: 1 ক্লিকের সংখ্যা: 537
1
ফোকাস
1617
অনুসারী

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

ওভারভিউ

এই কৌশলটি ট্রেন্ডের দিক নির্ধারণের জন্য বিভিন্ন পিরিয়ডের ইএমএ গড়ের ক্রসিংয়ের উপর ভিত্তি করে এবং এর উপর ভিত্তি করে একটি পল্টু-কমিডিং সংকেত তৈরি করে। প্রধানত 2 টি গড় লাইন ব্যবহার করা হয়, যথাক্রমে 10 তম লাইন এবং 20 তম লাইন। 10 তম লাইনটি যখন 20 তম লাইনটি উপরে থেকে নীচে অতিক্রম করে তখন পল্টু করা হয়; যখন 10 তম লাইনটি নীচে থেকে 20 তম লাইনটি অতিক্রম করে তখন পল্টু করা হয়। এই কৌশলটি মধ্যম লাইন ট্রেডিং কৌশলগুলির মধ্যে পড়ে।

কৌশল নীতি

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

এই কৌশলটি একই সময়ে ওঠানামা এবং অস্থিরতার সর্বাধিক মানকে একত্রিত করে যাতে ট্রেডিং সিগন্যালের একটি অংশ ফিল্টার করা যায়। দামের ওঠানামা একটি নির্দিষ্ট মাত্রায় পৌঁছানোর পরে কেবলমাত্র একটি ট্রেডিং সিগন্যাল জারি করা হবে। এটি কিছু পরিমাণে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে।

বিশেষত, এই কৌশলটি মূল্যায়ন করে যে কোনও মূল্য প্রবণতা তৈরি হয়েছে কিনা, দামের সর্বোচ্চ এবং সর্বনিম্নের সময়কাল অনুসরণ করে। প্রকৃত ট্রেডিং সিগন্যালগুলি কেবলমাত্র সর্বোচ্চ বা সর্বনিম্নের নির্দিষ্ট সময় পরে প্রেরণ করা হয়।

কৌশলগত শক্তি বিশ্লেষণ

এই কৌশলটির বেশ কিছু সুবিধা রয়েছেঃ

  1. EMA গড় লাইন ব্যবহার করে ট্রেন্ডের দিকনির্ণয় করা যায়, যা মার্কেটের গতিবিধির উপর কার্যকরভাবে নজর রাখতে সাহায্য করে
  2. বিভিন্ন পিরিয়ডের ইএমএ গড়ের সাথে মিলিত, মাঝারি এবং সংক্ষিপ্ত লাইনে ট্রেডিংয়ের সুযোগগুলি ক্যাপচার করুন
  3. এক্সেল ফিল্টারিং সিগন্যালের মাধ্যমে আংশিক গোলমালকে ফিল্টার করা যায়, যাতে ট্রেডিংয়ের সুযোগ মিস করা যায় না
  4. কৌশলগত যুক্তিগুলি সহজ এবং স্পষ্ট, সহজে বোঝা এবং পরিবর্তন করা যায়
  5. বিভিন্ন জাত এবং লেনদেনের পছন্দ অনুসারে প্যারামিটারগুলি সামঞ্জস্য করা যায়

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

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. ইএমএ গড় নিজেই পিছিয়ে আছে এবং স্বল্পমেয়াদী মূল্যের বিপর্যয়কে মিস করতে পারে
  2. নয়েজ সিগন্যাল ফিল্টারিং অসম্পূর্ণ, কিছু ত্রুটিপূর্ণ লেনদেন হতে পারে
  3. বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্য রেখে প্যারামিটারগুলিকে যথাযথভাবে সামঞ্জস্য করতে হবে

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

  1. অন্যান্য সূচকগুলির সাথে সংযুক্ত সংকেত নিশ্চিতকরণ, ইএমএ গড় লাইন পিছিয়ে পড়া এড়াতে
  2. সিগন্যালের নির্ভরযোগ্যতা বাড়ানোর জন্য পল ফিল্টারিং শর্তগুলি অপ্টিমাইজ করুন
  3. প্রতিক্রিয়া ফলাফলের উপর ভিত্তি করে প্যারামিটারগুলি সামঞ্জস্য করুন, অপ্টিমাইজেশন কৌশল

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

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

  1. ট্রেডিং সিগন্যালের নির্ভুলতা বাড়ানোর জন্য অন্যান্য প্রযুক্তিগত সূচকগুলির একটি পোর্টফোলিও যুক্ত করুন। যেমন MACD, KD ইত্যাদি।
  2. ইএমএ গড় রেখার প্যারামিটারগুলিকে উন্নত করা হয়েছে যাতে এটি নির্দিষ্ট জাতের জন্য আরও উপযুক্ত হয়।
  3. দামের ওঠানামার বিচারকে উন্নত করার জন্য সর্বোচ্চ এবং সর্বনিম্ন মানের প্যারামিটারগুলিকে অপ্টিমাইজ করুন।
  4. একক লেনদেনের সর্বাধিক ক্ষতি নিয়ন্ত্রণ করতে স্টপ লস কৌশল যুক্ত করুন।
  5. এই কৌশলটি বিভিন্ন জাতের উপর পরীক্ষা করা হয়েছে, যাতে তাদের উপযুক্ততা মূল্যায়ন করা যায়।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)