মাল্টি-টাইপ মুভিং মিডিয়ার সাথে ডাবল মুভিং মিডিয়ার ক্রসওভার কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-১৯
ট্যাগঃ

সারসংক্ষেপ

এই কৌশলটি একাধিক ধরণের চলমান গড়ের ক্রসওভার গণনা করে ট্রেডিং সংকেত তৈরি করে, দীর্ঘ এবং স্বল্প দ্বিগুণ এমএ ক্রসওভার বাস্তবায়ন করে। এটি ঝুঁকি নিয়ন্ত্রণের জন্য প্রবণতা সনাক্তকরণের জন্য তৃতীয় এমএ লাইনও প্রবর্তন করে।

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

  1. দুটি এমএ গণনা করুনঃ এমএ 1 এবং এমএ 2, যা এসএমএ, ইএমএ, ভিডাব্লুএমএ ইত্যাদি থেকে বেছে নিতে পারে। দৈর্ঘ্যগুলি কাস্টমাইজযোগ্য।

  2. এমএ ক্রসওভার নির্ধারণ করুনঃ যখন এমএ 1 এমএ 2 এর উপরে অতিক্রম করে তখন দীর্ঘ যান, যখন এমএ 1 এমএ 2 এর নীচে অতিক্রম করে তখন বন্ধ অবস্থান।

  3. (ঐচ্ছিক) একটি তৃতীয় এমএ - এমএ 3 গণনা করুন, সাধারণত 50 এর মতো দীর্ঘ সময়ের সাথে। এমএ 3 এর উপরে আপট্রেন্ড, নীচে ডাউনট্রেন্ড। কেবলমাত্র যখন দামটি এমএ 3 কে ভেঙে দেয় তখন বাণিজ্য করুন।

  4. ট্রেডিং সিগন্যাল তৈরির জন্য ব্যাকটেস্ট টাইমফ্রেমের সাথে নিয়মগুলি একত্রিত করুন।

  5. চাক্ষুষ সহায়তার জন্য ক্রসওভার এলাকায় রঙ পূরণ করুন।

এই কৌশলটি ট্রেন্ড অনুসরণকারী এমএ এবং ক্রসওভার লং/শর্ট, ঝুঁকি নিয়ন্ত্রণের জন্য তৃতীয় এমএ এর সাথে একত্রিত করে। বিভিন্ন বাজারের চক্রের জন্য পরামিতিগুলি নমনীয়ভাবে সামঞ্জস্য করা যেতে পারে।

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

  1. ডুয়াল এমএ ক্রসওভার কার্যত প্রবণতা অনুসরণ করে।

  2. একাধিক এমএ টাইপ সমন্বয় সমর্থন করে, বিভিন্ন সময়ের জন্য অপ্টিমাইজ করা যেতে পারে।

  3. তৃতীয় এমএ ঝুঁকি নিয়ন্ত্রণ করে এবং অপ্রয়োজনীয় ক্ষতি হ্রাস করে।

  4. চার্ট ট্রেডিংয়ের অভিজ্ঞতাকে উন্নত করে।

  5. সামঞ্জস্যযোগ্য পরামিতি বিভিন্ন চক্রের জন্য অপ্টিমাইজ করা যেতে পারে।

  6. সহজ এবং সুস্পষ্ট যুক্তি, সহজেই বোঝা যায় এবং অনুসরণ করা যায়।

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

  1. ডুয়াল এমএ ব্যাপ্তি-সীমাবদ্ধ এবং প্রবণতা বিপরীত দৃশ্যকল্পের সাথে লড়াই করে। প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে উন্নত করা যেতে পারে।

  2. ডাবল এমএ কখনও কখনও মিথ্যা সংকেত বা অতিরিক্ত প্রতিক্রিয়া তৈরি করতে পারে। এমএ সময়কাল বাড়াতে বা পরামিতিগুলি অনুকূল করতে পারে।

  3. তৃতীয় এমএ শক্তিশালী ট্রেন্ডিং সুযোগ মিস করতে পারে। আরও লাভ অর্জনের জন্য তার সময়ের সংক্ষিপ্তকরণ পরীক্ষা করতে পারে।

  4. প্রতিটি ট্রেডের জন্য জয়ের নিশ্চয়তা দিতে পারছি না, সঠিক স্টপ লস ম্যানেজমেন্ট দরকার।

অপ্টিমাইজেশান নির্দেশাবলী

  1. সর্বোত্তম প্যারামিটার জোড়ার জন্য বিভিন্ন এমএ প্রকার এবং সময়কাল পরীক্ষা করুন।

  2. ঝুঁকি নিয়ন্ত্রণ এবং মুনাফা আদায়ের ভারসাম্য বজায় রাখার জন্য তৃতীয় এমএ সময়কালকে অনুকূল করা।

  3. একক ট্রেড ক্ষতির পরিমাণ নিয়ন্ত্রণ করতে স্টপ লস কৌশল যোগ করুন।

  4. বিগ ডেটার উপর ভিত্তি করে সর্বোত্তম পরামিতি খুঁজে পেতে মেশিন লার্নিং অ্যালগরিদম বিবেচনা করুন।

  5. সিগন্যাল ফিল্টারিং এবং নিশ্চিতকরণের জন্য KD, MACD এর মতো অন্যান্য সূচকগুলির সাথে একত্রিত করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
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/
// © HAMIDBOX

//@version=4
strategy("Multi-X by HAMID-BOX", overlay=true)

maType(source , length, type)   =>
    type    == "SMA"            ? sma(source , length)  :
     type   == "EMA"            ? ema(source , length)  :
     type   == "RMA"            ? rma(source, length)   : 
     type   == "WMA"            ? wma(source, length)   :
     type   == "VWMA"           ? vwma(source, length)  :
     na
     
////////////////////////////////////////////////////////////////////////////////
colorup             = #11ff00
colordn             = #e91e63

/////////////////////////// MOVING AVERAGE №1 INPUTS ///////////////////////////
ma1_show            = input(title="MA №1", defval=true, type=input.bool, inline="ma1")
ma1type             = input(title="", defval="EMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma1")
ma1src              = input(title="", defval=close, type=input.source, inline="ma1")
ma1Len              = input(title="", defval=9, type=input.integer, inline="ma1")
ma1col              = input(colorup, "", type=input.color, inline="ma1")

ma1                 = maType(ma1src, ma1Len, ma1type)

ma1p = plot(ma1_show ? ma1 : na, linewidth=1, color=color.new(ma1col , 50))

/////////////////////////// MOVING AVERAGE №2 INPUTS ///////////////////////////
ma2_show            = input(title="MA №2", defval=true, type=input.bool, inline="ma2")
ma2type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma2")
ma2src              = input(title="", defval=close, type=input.source, inline="ma2")
ma2Len              = input(title="", defval=21, type=input.integer, inline="ma2")
ma2col              = input(colordn, "", type=input.color, inline="ma2")

ma2                 = maType(ma2src, ma2Len, ma2type)

ma2p = plot(ma2_show ? ma2 : na, linewidth=1, color=color.new(ma2col , 50))

/////////////////////////// MOVING AVERAGE №3 INPUTS ///////////////////////////

read                = input(title="For Safe Side = Read This >>>", defval=true, tooltip="If you want to play on the safe side, Check ON Moving Average № 3, MA №3 shows the major trend, its work as a Trend-Zone,\nRule: Do not open trades if the market is below MA № 3, WHY? because Trend is Bearish and it will make more Down, NOTE:: It is possible after adding MA № 3, it will give you a small profit. But the great advantage of that, it will reduce your loss and it will also increase your Profit Factor.\nAnd if you not have any issue with Risk then you can Leave Moving Average No 3")
ma3_show            = input(title="MA №3", defval=false, type=input.bool, inline="ma3")
ma3type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma3")
// ma3srcH          = input(title="", defval=high, type=input.source, inline="ma3")
// ma3srcL          = input(title="", defval=low, type=input.source, inline="ma3")
ma3Len              = input(title="", defval=50, type=input.integer, inline="ma3")
ma3col              = input(colordn, "", type=input.color, inline="ma3")

ma3H                = maType(high, ma3Len, ma3type)
ma3L                = maType(low, ma3Len, ma3type)

ma3p                = plot(ma3_show ? ma3H : na, linewidth=1, color=color.new(ma3col , 50))
ma3p2               = plot(ma3_show ? ma3L : na, linewidth=1, color=color.new(ma3col , 50))

Bigcross_zone_color = if ma3_show and close > ma3H
    color.new(colorup , 90)
else
    if ma3_show and close < ma3L
        color.new(colordn , 90)
fill(ma3p , ma3p2, color=Bigcross_zone_color, title="Cross Background Color")

BigCrossSignal      = close > ma3H
ZoneCrossover       = crossover(close , ma3H)
///////////////////////////// BACK TESTING INPUTS //////////////////////////////
startTime           = input(title="Start Time", type=input.time, defval= timestamp("01 Jan 2021"))
endTime             = input(title="End Time", type=input.time, defval= timestamp("01 Jan 2100"))
inDateRange         = true

//////////////////////////// PLOTING AND COOLORING /////////////////////////////
Cross               = input(true, "Cross Sign ON/OFF") 
maCrossOver         = crossover(ma1 , ma2)
maCrossUnder        = crossunder(ma1 , ma2)
cross_zone_color    = ma1 > ma2 ? color.new(colorup , 85) : color.new(colordn , 85)

plotshape(Cross ? maCrossOver : na, title="CrossUP Sign", style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(Cross ? maCrossUnder : na, title="CrossDN Sign", style=shape.xcross, location=location.abovebar, color=#e91e63, size=size.tiny)

fill(ma1p , ma2p, color=cross_zone_color, title="Cross Background Color")

///////////////////////////////// (CONDITIONS) /////////////////////////////////

if maCrossOver and inDateRange
    if ma3_show
        strategy.entry("BUY", strategy.long, when=BigCrossSignal)
    else    
        strategy.entry("BUY", strategy.long)

if  ma3_show
    strategy.entry("BUY", strategy.long, when=ZoneCrossover)

if maCrossUnder and inDateRange
    strategy.close("BUY", comment="Exit")
if (not inDateRange)
    strategy.close_all()





আরো