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

ইএমএ লাইনের উপর ভিত্তি করে কৌশল অনুসরণ করে প্রবণতা

লেখক:চাওঝাং, তারিখঃ 2024-02-05 14:21:18
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি বিভিন্ন সময়ের 3 টি ইএমএ লাইনের উপর ভিত্তি করে। এটি বর্তমান প্রবণতার দিকটি মূল্যায়ন করে যে দামটি ইএমএ লাইনের উপরে রয়েছে কিনা। যখন স্বল্পমেয়াদী ইএমএ লাইন দীর্ঘমেয়াদী ইএমএ লাইনের উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন স্বল্পমেয়াদী ইএমএ লাইন দীর্ঘমেয়াদী ইএমএ লাইনের নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এই কৌশলটি প্রবণতা চালায় এবং প্রবণতা বিপরীত হলে সময়মতো অবস্থানগুলি বন্ধ করে।

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

কৌশলটি 3 টি ইএমএ লাইন ব্যবহার করে, যা যথাক্রমে 10 দিনের, 20 দিনের এবং 50 দিনের। বিচার নিয়মগুলি হলঃ

  1. যখন 10 দিনের EMA এবং 20 দিনের EMA উভয়ই 50 দিনের EMA এর উপরে থাকে, তখন এটি একটি আপট্রেন্ড হিসাবে সংজ্ঞায়িত করা হয়;

  2. যখন 10 দিনের EMA এবং 20 দিনের EMA উভয়ই 50 দিনের EMA এর নিচে থাকে, তখন এটি একটি ডাউনট্রেন্ড হিসাবে সংজ্ঞায়িত করা হয়;

  3. যখন স্বল্পমেয়াদী EMA লাইন (10 দিন এবং 20 দিন) দীর্ঘমেয়াদী EMA লাইন (50 দিন) এর উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উৎপন্ন হয়;

  4. যখন স্বল্পমেয়াদী EMA লাইন (10 দিন এবং 20 দিন) দীর্ঘমেয়াদী EMA লাইন (50 দিন) এর নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উৎপন্ন হয়;

  5. ঊর্ধ্বমুখী ট্রেন্ডের সময় লং পজিশন রাখা এবং নিম্নমুখী ট্রেন্ডের সময় শর্ট পজিশন রাখা।

  6. প্রবণতা বিপরীত হলে বর্তমান দিকনির্দেশমূলক অবস্থান বন্ধ করুন (স্বল্পমেয়াদী EMA দীর্ঘমেয়াদী EMA অতিক্রম করে) ।

এই কৌশলটি লাভ অর্জনের জন্য লং এবং শর্ট পজিশনের মধ্যে অল্টারনেটিং করে এবং লাভের জন্য সময়মত পজিশন বন্ধ করে লাভ অর্জন করে।

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

এই কৌশলটির সুবিধাগুলো হল:

  1. নিয়মগুলো সহজ এবং পরিষ্কার, সহজেই বোঝা যায় এবং বাস্তবায়ন করা যায়;
  2. প্রবণতা নির্ধারণের জন্য ইএমএ লাইন ব্যবহার করা স্বল্পমেয়াদী বাজারের ওঠানামা থেকে হস্তক্ষেপ এড়ায়;
  3. ট্রেন্ড রান ট্র্যাক করার জন্য সময়মত পজিশন বন্ধ করা ক্ষতির বিস্তার এড়ায়;
  4. প্রবণতা অনুসরণ করে উচ্চ বিজয় হার সহ বাজারের দিকনির্দেশনা দেওয়ার দরকার নেই।

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

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

  1. রেঞ্জ-বান্ধব বাজারে, ইএমএ লাইনগুলি প্রায়শই ক্রসওভার হতে পারে, যার ফলে ঘন ঘন খোলা এবং বন্ধ হওয়া পজিশনের কারণে উচ্চ ট্রেডিং খরচ হয়;

  2. দামের ব্যবধানের পর ইএমএ দ্বারা প্রবণতা নির্ধারণ ব্যর্থ হতে পারে, ভাল প্রবেশের সুযোগ হারাতে পারে।

ঝুঁকি অপ্টিমাইজ করার জন্য, কিছু পদ্ধতি ব্যবহার করা যেতে পারেঃ

  1. খোলা পজিশনের নিয়মগুলি যথাযথভাবে শিথিল করা যেতে পারে যখন ইএমএগুলি খুব কাছাকাছি থাকে যাতে অত্যধিক ট্রেডিং এড়ানো যায়;

  2. ইএমএ ব্যর্থতা এড়াতে অন্যান্য সূচককে একত্রিত করে প্রবণতা নির্ধারণ করুন।

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

কৌশলটি নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. প্যারামিটার অপ্টিমাইজেশান। সর্বোত্তম প্যারামিটার খুঁজে পেতে বিভিন্ন EMA সময়ের সমন্বয় পরীক্ষা করুন;

  2. অপ্রয়োজনীয় ঘন ঘন ট্রেডিং হ্রাস করার জন্য খোলা অবস্থানের নিয়মগুলি যথাযথভাবে অপ্টিমাইজ করুন;

  3. স্টপ লস কৌশল অপ্টিমাইজেশান। একক ক্ষতি নিয়ন্ত্রণ করার জন্য যুক্তিসঙ্গত স্টপ লস স্তর সেট করুন;

  4. অন্যান্য সূচককে একত্রিত করুন। সর্বোত্তম প্রবেশের সময় নির্ধারণে সহায়তা করার জন্য MACD, KDJ এবং অন্যান্য সূচক ব্যবহার করুন।

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

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


/*backtest
start: 2024-01-28 00:00:00
end: 2024-01-31 04:00:00
period: 45m
basePeriod: 5m
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/
// © mattehalen

//@version=4
//study("EMA 10,20 59",overlay=true)
strategy("EMA 10,20 59",overlay=true)
infoBox     = input(true, title="infoBox", type=input.bool)
infoBox2    = input(false, title="infoBox2", type=input.bool)
BuySellSignal_Bool = input(false, title="Buy & SellSignal", type=input.bool)
infoBoxSize = input(title="infoBoxSize", defval=size.large, options=[size.auto, size.tiny, size.small, size.normal, size.large, size.huge])
ema1Value   = input(10)
ema2Value   = input(20)
ema3Value   = input(59)
maxLoss = input(3000)
ema1        = ema(close,ema1Value)
ema2        = ema(close,ema2Value)
ema3        = ema(close,ema3Value)
objcnt      = 0
buyTitle    = tostring(close[1])
myProfit    = float(0)

plot(ema1,title="ema1",color=color.red,linewidth=2)
plot(ema2,title="ema2",color=color.green,linewidth=2)
plot(ema3,title="ema3",color=color.black,linewidth=2)

Buytrend = (ema1 and ema2 > ema3) and (ema1[1] and ema2[1] > ema3[1])
BarssinceBuyTrend = barssince(Buytrend)
BarssinceSellTrend = barssince(not Buytrend)
closeAtBuyTrend = close[1]
bgcolor(Buytrend ? color.green : color.red,transp=70)

BuySignal = Buytrend and not Buytrend[1] and BuySellSignal_Bool

BuySignalOut = Buytrend and (crossunder(ema1,ema2)) and BuySellSignal_Bool
BarssinceBuy = barssince(BuySignal)
bgcolor(BuySignal ? color.green : na , transp=30)
bgcolor(BuySignalOut ? color.black : na , transp=30)
plot(BarssinceBuy,title="BarssinceBuy",display=display.none)


SellSignal = not Buytrend and Buytrend[1] and BuySellSignal_Bool
SellSignalOut = not Buytrend and (crossover(ema1,ema2)) and BuySellSignal_Bool
BarssinceSell = barssince(SellSignal)
bgcolor(SellSignal ? color.red : na , transp=30)
bgcolor(SellSignalOut ? color.black : na , transp=30)
plot(BarssinceSell,title="BarssinceSell",display=display.none)


buyProfit   = float(0)
cntBuy      =0
sellProfit  = float(0)
cntSell     =0
buyProfit   := Buytrend and not Buytrend[1]? nz(buyProfit[1]) + (close[BarssinceBuyTrend[1]]-close) : nz(buyProfit[1])
cntBuy      := Buytrend and not Buytrend[1]? nz(cntBuy[1]) + 1: nz(cntBuy[1])
sellProfit  := not Buytrend and Buytrend[1]? nz(sellProfit[1]) + (close-close[BarssinceSellTrend[1]]) : nz(sellProfit[1])
cntSell     := not Buytrend and Buytrend[1]? nz(cntSell[1]) + 1 : nz(cntSell[1])
totalProfit = buyProfit + sellProfit

// if (Buytrend and not Buytrend[1] and infoBox==true)
//     l = label.new(bar_index - (BarssinceBuyTrend[1]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuyTrend[1]]) + "\n" + "Profit = "+tostring(close[BarssinceBuyTrend[1]]-close) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.red,size=infoBoxSize)
// if (not Buytrend and Buytrend[1] and infoBox==true)
//     l = label.new(bar_index - (BarssinceSellTrend[1]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSellTrend[1]]) + "\n" + "Profit = "+tostring(close-close[BarssinceSellTrend[1]]) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.green,size=infoBoxSize)

// if (BuySignalOut and not BuySignalOut[1] and infoBox2==true)
// //    l = label.new(bar_index - (BarssinceBuy[0]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuy[0]]) + "\n" + "Profit = "+tostring(close-close[BarssinceBuy[0]]) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.purple,size=infoBoxSize
//     l = label.new(bar_index, na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceBuy[0]]) + "\n" + "Profit = "+tostring(close-close[BarssinceBuy[0]]) ,style=label.style_labelup, yloc=yloc.belowbar,color=color.lime,size=infoBoxSize)
// if (SellSignalOut and not SellSignalOut[1] and infoBox2==true)
// //    l = label.new(bar_index - (BarssinceSell[0]/2), na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSell[0]]) + "\n" + "Profit = "+tostring(close[BarssinceSell[0]]-close) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.purple,size=infoBoxSize)
//     l = label.new(bar_index, na,text="Close = " + tostring(close) + "\n" + "Start = "+tostring(close[BarssinceSell[0]]) + "\n" + "Profit = "+tostring(close[BarssinceSell[0]]-close) ,style=label.style_labeldown, yloc=yloc.abovebar,color=color.fuchsia,size=infoBoxSize)


// l2 = label.new(bar_index, na, 'buyProfit in pip = '+tostring(buyProfit)+"\n"+  'cntBuy = '+tostring(cntBuy) +"\n"+  'sellProfit in pip = '+tostring(sellProfit)+"\n"+  'cntSell = '+tostring(cntSell) +"\n"+  'totalProfit in pip = '+tostring(totalProfit)     , 
//   color=totalProfit>0 ? color.green : color.red, 
//   textcolor=color.white,
//   style=label.style_labeldown, yloc=yloc.abovebar,
//   size=size.large)

// label.delete(l2[1])



//--------------------------------------------------
//--------------------------------------------------
if (Buytrend)
    strategy.close("short", comment = "Exit short")
    strategy.entry("long", true)
    strategy.exit("Max Loss", "long", loss = maxLoss)

//if BuySignalOut
   // strategy.close("long", comment = "Exit Long")
if (not Buytrend)
    // Enter trade and issue exit order on max loss.
    strategy.close("long", comment = "Exit Long")
    strategy.entry("short", false)
    strategy.exit("Max Loss", "short", loss = maxLoss)
//if SellSignalOut
    // Force trade exit.
    //strategy.close("short", comment = "Exit short")
    
//--------------------------------------------------
//--------------------------------------------------
//--------------------------------------------------



আরো