মাল্টি-টাইম ফ্রেম মুভিং এভারেজ এবং MACD এর উপর ভিত্তি করে লং এবং শর্ট পজিশন খোলার কৌশল


সৃষ্টির তারিখ: 2024-01-03 12:15:46 অবশেষে সংশোধন করুন: 2024-01-03 12:15:46
অনুলিপি: 0 ক্লিকের সংখ্যা: 817
1
ফোকাস
1621
অনুসারী

মাল্টি-টাইম ফ্রেম মুভিং এভারেজ এবং MACD এর উপর ভিত্তি করে লং এবং শর্ট পজিশন খোলার কৌশল

সারাংশ

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

কৌশল নীতি

১. এমটিএফ ইএমএ ট্রেন্ডস

মাল্টিটাইম ফ্রেমওয়ার্ক ইন্ডেক্স মুভিং এভারেজ (MTF EMA) একাধিক সময়কালের মুভিং এভারেজকে একই চার্টে প্রদর্শন করতে পারে, যাতে সম্পদের সামগ্রিক ফাঁকা অবস্থা বিচার করা যায়। কৌশলটি এখানে 1 ঘন্টা এবং 15 মিনিটের সময়কালের এমটিএফ ইএমএ ব্যবহার করে।

যখন দাম 1 ঘন্টা MTF EMA এর উপরে থাকে এবং 1 ঘন্টা MTF EMA 15 মিনিটের MTF EMA এর নীচে থাকে, তখন এটি একটি উচ্চতর প্রবণতা হিসাবে সংজ্ঞায়িত করা হয়; যখন দাম 1 ঘন্টা MTF EMA এর নীচে থাকে এবং 1 ঘন্টা MTF EMA 15 মিনিটের MTF EMA এর উপরে থাকে, তখন এটি একটি নিম্ন প্রবণতা হিসাবে সংজ্ঞায়িত করা হয়।

২. MACD কেনা বেচা সংকেত দেয়

যখন MACD লাইনটি নীচের দিক থেকে সিগন্যাল লাইনটি ভেঙে দেয়, তখন একটি কেনার সংকেত উত্পন্ন হয়; যখন এটি উপরের দিক থেকে নেমে আসে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। একই সাথে MACD লাইন এবং সিগন্যাল লাইনের ক্রস সীমাবদ্ধতা সেট করুন, যাতে মিথ্যা সংকেত এড়ানো যায়।

৩. এটিআর স্টপ লস স্টপ সেট করুন

এটিআর সূচক ব্যবহার করে স্টপ-ড্রপ মূল্য সেট করুন। এটিআর বাজারের অস্থিরতার গতিশীলতার উপর ভিত্তি করে যুক্তিসঙ্গত স্টপ-ড্রপ দূরত্ব সেট করতে সক্ষম। উচ্চ এবং নিম্ন পয়েন্টের পুনরুদ্ধারের উপর ভিত্তি করে স্টপ-ড্রপ সেট করুন। স্টপ-ড্রপটি আরও নমনীয় করুন।

ট্রেডিং কৌশল

খোলা সংকেত

মাল্টি হেড সিগন্যালঃ ঊর্ধ্বমুখী প্রবণতা এবং MACD সিগন্যাল লাইন অতিক্রম করে এবং সীমাবদ্ধতার চেয়ে কম ক্রস করে খালি মাথা সংকেতঃ নিম্নমুখী প্রবণতা এবং MACD সিগন্যাল লাইন অতিক্রম করে এবং ক্রসটি সীমাবদ্ধতার চেয়ে বড়

সমান্তরাল সংকেত

মাল্টি-হেড স্টপঃ মূল্য ATR স্টপ ছাড়িয়ে গেছে মাল্টি হেড স্টপঃ মূল্য ATR স্টপ ছাড়িয়ে গেছে খালি মাথা স্টপঃ মূল্য ATR স্টপ ছাড়িয়ে গেছে খালি মাথা বন্ধঃ মূল্য ATR বন্ধ মূল্য অতিক্রম করেছে

সামর্থ্য বিশ্লেষণ

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

ঝুঁকি ও সমাধান

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

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

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

  1. এমটিএফ ইএমএর চক্রীয় প্যারামিটারগুলিকে সমন্বয় করা যাতে এটি বিভিন্ন ট্রেডিং জাতের দামের বৈশিষ্ট্যগুলির সাথে আরও মিলিত হয়

  2. MACD সূচকের ধীর গড় এবং Signal গড় প্যারামিটারগুলিকে আরও ভাল সংকেত পেতে অপ্টিমাইজ করুন

  3. বিভিন্ন ATR চক্রের প্যারামিটার এবং স্টপ-অফ স্টপ লস গুণক পরীক্ষা করে সেরা রিটার্ন পান

  4. অন্যান্য সহায়ক সূচক সংকেত ফিল্টার করুন

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © Steven A. Zmuda Burke / stevenz17
//@version=4
// From Date Inputs
fromDay = input(defval = 01, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 04, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2022, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 01, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 05, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2022, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

// Input
strategy("LONG", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, slippage=1, commission_type=strategy.commission.percent, 
     commission_value=0.015)
SOURCE = input(title = "═════════════════════ SOURCE ═════════════════════", defval = false, type = input.bool)
sourcehl2 = input(title="Source hl2 or (open+close)/2 ?",type=input.bool,defval=true)
source = sourcehl2 ? hl2 : ((open+close)/2)

//MTF EMA
MTFEMA = input(title = "════════════════════ MTF EMA ════════════════════", defval = false, type = input.bool)

res1=input(title="MTF EMA 1", type=input.resolution, defval="60")
len1 = input(title = "EMA Period 1", type=input.integer, defval=70, minval=1)
ema1 = ema(source, len1)
emaStep1 = security (syminfo.tickerid, res1, ema1, barmerge.gaps_off, barmerge.lookahead_off)
mtf1 = emaStep1

res2=input(title="MTF EMA 2", type=input.resolution, defval="15")
len2 = input(title = "EMA Period 2", type=input.integer, defval=68, minval=1)
ema2 = ema(source, len2)
emaStep2 = security (syminfo.tickerid, res2, ema2, barmerge.gaps_off, barmerge.lookahead_off)
mtf2 = emaStep2

t1 = plot(mtf1, linewidth=4, color= color.aqua, title="EMA")
t2 = plot(mtf2, linewidth=4, color= color.navy, title="EMA")
fill(t1, t2, transp = 70, color = mtf1 > mtf2 ? color.red : color.green)

///MACD
MACD= input(title = "═════════════════════ MACD ══════════════════════", defval = false, type = input.bool)
MACDsource=close
fastLength = input(13, minval=1, title="MACD fast moving average")
slowLength=input(18,minval=1, title="MACD slow moving average")
signalLength=input(24,minval=1, title="MACD signal line moving average")
MacdEmaLength =input(9, title="MACD EMA period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use normal MACD")
Lmacsig=input(title="LONG MACD and signal crossover limit",type=input.integer,defval=180)

// Fast line
ma1= useEma ? ema(MACDsource, fastLength) : sma(MACDsource, fastLength) 
ma2 = useEma ?  ema(ma1,fastLength) :  sma(ma1,fastLength) 
fastMA = ((2 * ma1) - ma2)

// Slow line
mas1=  useEma ? ema(MACDsource , slowLength) :  sma(MACDsource , slowLength)
mas2 =  useEma ? ema(mas1 , slowLength): sma(mas1 , slowLength)
slowMA = ((2 * mas1) - mas2)

// MACD line
macd = fastMA - slowMA

// Signal line
emasig1 = ema(macd, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(macd, signalLength) : (2 * emasig1) - emasig2

hist = macd - signal

histline = hist > 0 ? color.green : color.red

//MACD ribbon
macdribbon=input(title="Show MACD ribbon?",type=input.bool,defval=false)
macdx=input(title="MACD ribbon multiplier", type=input.integer, defval=3, minval=1)

leadLine1 = macdribbon ? macd*macdx + source : na
leadLine2 = macdribbon ? signal*macdx + source : na
leadLine3 = hist + source

//MACD plot
p3 = plot(leadLine1, color= color.green, title="MACD", transp = 100, linewidth = 8)
p4 = plot(leadLine2, color= color.red, title="Signal", transp = 100, linewidth = 8)
fill(p3, p4, transp = 20, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)

plot((leadLine3), color = histline, title="Histogram", linewidth = 3) 


l="TEst"

upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0

p1 = plot(upHist, color=color.green, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.green, transp=40, style=plot.style_columns, title='Negative delta') 

zeroLine = plot(macd, color=color.black, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.gray, transp=0, linewidth=2, title='Signal')

ribbonDiff = color.green
fill(zeroLine, signalLine, color=ribbonDiff)

circleYPosition = signal
plot(ema(macd,MacdEmaLength) , color=color.red, transp=0, linewidth=2, title='EMA on MACD line')

ribbonDiff2 = hist > 0 ? color.green : color.red
plot(crossunder(signal,macd) ? circleYPosition : na,style=plot.style_circles, linewidth=4, color=ribbonDiff, title='Dots')


//STOCHASTIC
stochchch= input(title = "═══════════════════ STOCHASTIC ════════════════════", defval = false, type = input.bool)
StochOn = input(title="Stochastic On?",type=input.bool,defval=true)
periodK = input(10, title="K", minval=1)
periodD = input(1, title="D", minval=1)
smoothK = input(3, title="Smooth", minval=1)
stochlimit = input(30, title="Stoch value crossover", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

stochSignal = StochOn ? (d < stochlimit ? true : false) : true

pp= input(1, title="avg price length", minval=1)
p = ema (source, pp)
K = k + p

plot(k, title="%K", color=#0094FF)
plot(d, title="%D", color=#FF6A00)
h0 = hline(72, "Upper Band", color=#606060)
h1 = hline(20, "Lower Band", color=#606060)
fill(h0, h1, color=#9915FF, transp=80, title="Background")



//Long 
LS= "════════════════════════════════ LONG CONDITIONS ═══════════════════════════"

uptrend = close > mtf1 and mtf1 < mtf2
downtrend = close < mtf1 and mtf1 > mtf2 

crossMACD = crossunder(macd,signal) 

LongBuy = uptrend and stochSignal? crossMACD and signal < Lmacsig and macd < Lmacsig : na

LONG = strategy.position_size > 0
SHORT = strategy.position_size < 0
FLAT = strategy.position_size == 0 

plotshape(LongBuy, style=shape.xcross, text="LONG", color=color.green)

//ATR & TP/SL

ATRTPSLX= input(title = "═════════════════ LONG SL ═════════════════", defval = false, type = input.bool)

maxIdLossPcnt = input(5, "Max Intraday Loss(%)", type=input.float, minval=0.0, step=0.1)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

SSL2=input(title="Long Stop Loss when MTF EMA cross?",type=input.bool,defval=false)

SSLOP = LONG  and crossunder(source, mtf1) 

SlossPercOn = input(title="Long Stop Loss (%) on?",type=input.bool,defval=false)
SlossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=4.7) * 0.01
SSpricePerc = LONG and SlossPercOn? strategy.position_avg_price * (-1 - SlossPerc) : na
plot(series = SSpricePerc, linewidth=2, color= color.maroon,style=plot.style_linebr, title="Long Stop Loss %") 
SSLX = LONG and crossunder(source, SSpricePerc)

SSLatr= input(title="Long Stop Loss ATR?",type=input.bool,defval=true)
useStructure=input(title="Look back for High/Lows?",type=input.bool,defval=true)
Slookback=input(title="How far to look back for High/Lows:",type=input.integer,defval=18,minval=1)
SatrLenghth=input(title="Long ATR Lenghth",type=input.integer,defval=9,minval=1)
SatrStopMultiplier=input(title="Long ATR Stop x ?", type=input.float,defval=4.3, minval=0.1,step=0.1)

Satr = atr(SatrLenghth)
LongStop = SSLatr ? ((useStructure ? lowest(low, Slookback) : source) - Satr * SatrStopMultiplier) : na

SStop = crossunder(source,LongStop)

plot(Satr, color=color.blue, title="ATR", transp=100)
plot(series = uptrend ? LongStop : na, color=color.red, style=plot.style_linebr, title="Long Trailing Stop", transp=0)


ATRTPSLXX= input(title = "═════════════════ LONG TP ═════════════════", defval = false, type = input.bool)

TpPercOn = input(title="Long Take Profit (%) on?",type=input.bool,defval=true)
TpPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=5.3) * 0.01
TppricePerc = LONG and TpPercOn? strategy.position_avg_price * (-1 + TpPerc) : na
plot(series = TppricePerc, linewidth=2, color= color.lime,style=plot.style_linebr, title="Long Take Profit %") 
TPLX = LONG and crossunder(source, TppricePerc)

TP1=input(title="1 Long Take Profit On?",type=input.bool,defval=true)

useStructure1=input(title="Look back for High/Lows?",type=input.bool,defval=true)
STplookback=input(title="How far to look back for High/Lows for 1 TP",type=input.integer,defval=12,minval=1)
STpatrLenghth=input(title="Long ATR Lenghth 1 TP",type=input.integer,defval=24,minval=1)
SatrProfitMultiplier = input(title="First Long ATR Take Profit x ?", type=input.float,defval=5.5, minval=0.1,step=0.1)
STpatr = atr(STpatrLenghth)
LongTakeProfit = (useStructure1 ? highest(high, STplookback) : source) + STpatr * SatrProfitMultiplier
LongTP = TP1 ? crossover(source, LongTakeProfit): false
plot(series = uptrend ? LongTakeProfit: na , color=color.green, style=plot.style_linebr, title="Long Trailing Take Profit", transp=0)


// Bar color
barcolor(cross(macd, signal) ? (macd - signal > 0 ? (uptrend and macd < 0 and signal < 0 ? color.yellow : na) : (downtrend and macd > 0 and signal > 0 ? color.blue : na)) : na)

// Strategy ATR

GOLONG = LongBuy and SSLatr and FLAT

if GOLONG and TP1
    strategy.entry(id="Entry LONG 1TP", long=true,comment="Entry Long")
    strategy.exit("Long Profit or Loss 1TP","Entry LONG 1TP", limit=LongTakeProfit, stop=LongStop)
if SSLX
    strategy.close(id="Entry LONG 1TP", comment="% Long SL EXIT")
if TPLX
    strategy.close(id="Entry LONG 1TP", comment="% Long TP EXIT")
    
if SSLOP and SSL2
    strategy.close(id="Entry LONG 1TP", comment="MTF EMA cross EXIT")    
    
if (not time_cond)
    strategy.close_all()
    strategy.cancel_all()    


//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

//@version=4