کثیر ٹائم فریم چلتی اوسط اور MACD پر مبنی طویل اور مختصر افتتاحی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-03 12:15:46
ٹیگز:

img

جائزہ

یہ حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے ملٹی ٹائم فریم ایکسپونینشل چلتی اوسط (ایم ٹی ایف ای ایم اے) کے افعال اور ٹریڈنگ سگنل پیدا کرنے کے لئے ایم اے سی ڈی اشارے کا مکمل فائدہ اٹھاتی ہے ، جبکہ اے ٹی آر اشارے کے ساتھ اسٹاپ نقصان اور منافع کی قیمتیں طے کرتی ہے۔ یہ حکمت عملی مضبوط رجحانات والے ڈیجیٹل اور فئیےٹ کرنسی کے جوڑوں کے لئے موزوں ہے اور مضبوط رجحانات والے بازاروں میں بہتر کارکردگی کا مظاہرہ کرتی ہے۔

حکمت عملی کا اصول

1. ایم ٹی ایف ای ایم اے کا استعمال کرتے ہوئے رجحان کا فیصلہ

ملٹی ٹائم فریم ایکسپونینشل چلتی اوسط (ایم ٹی ایف ای ایم اے) ایک ہی چارٹ پر ایک سے زیادہ ٹائم فریموں کی چلتی اوسط دکھا سکتا ہے تاکہ کسی اثاثے کی مجموعی طویل / مختصر حیثیت کا تعین کیا جاسکے۔ یہ حکمت عملی 1 گھنٹے اور 15 منٹ کی ایم ٹی ایف ای ایم اے کو اپناتی ہے۔

جب قیمت 1 گھنٹے کے ایم ٹی ایف ای ایم اے سے اوپر ہوتی ہے اور 1 گھنٹے کے ایم ٹی ایف ای ایم اے 15 منٹ کے ایم ٹی ایف ای ایم اے سے نیچے ہوتی ہے تو اسے اپ ٹرینڈ کے طور پر بیان کیا جاتا ہے۔ جب قیمت 1 گھنٹے کے ایم ٹی ایف ای ایم اے سے نیچے ہوتی ہے اور 1 گھنٹے کے ایم ٹی ایف ای ایم اے 15 منٹ کے ایم ٹی ایف ای ایم اے سے اوپر ہوتی ہے تو اسے ڈاؤن ٹرینڈ کے طور پر بیان کیا جاتا ہے۔

2. ایم اے سی ڈی جنریٹر ٹریڈنگ سگنل

جب ایم اے سی ڈی لائن نیچے سے سگنل لائن کے اوپر عبور کرتی ہے تو ، خرید کا سگنل تیار ہوتا ہے۔ جب یہ اوپر سے نیچے سے عبور کرتی ہے تو ، فروخت کا سگنل تیار ہوتا ہے۔ اسی وقت ، غلط سگنل سے بچنے کے لئے ایم اے سی ڈی لائن اور سگنل لائن کے لئے کراس اوور کی حد مقرر کی جاتی ہے۔

3۔ اے ٹی آر کے ساتھ سٹاپ نقصان اور منافع لینا

اے ٹی آر اشارے کا استعمال اسٹاپ نقصان اور منافع لینے کی قیمتوں کو طے کرنے کے لئے کیا جاتا ہے۔ اے ٹی آر متحرک طور پر مناسب اسٹاپ نقصان طے کرسکتا ہے اور مارکیٹ کی اتار چڑھاؤ کی بنیاد پر منافع فاصلہ طے کرسکتا ہے۔ اسی وقت ، اسٹاپ نقصان اور منافع لینے کے ضرب کو زیادہ لچکدار بنانے کے لئے اونچائیوں اور نچلی سطحوں کے بیک ٹیسٹ کی بنیاد پر طے کیا جاتا ہے۔

تجارتی حکمت عملی

کھلی پوزیشن کے اشارے

طویل سگنل: اپ ٹرینڈ اور ایم اے سی ڈی کراسنگ اوپر سگنل لائن اور کراس اوور ویلیو حد سے کم شارٹ سگنل: نیچے کی طرف رجحان اور ایم اے سی ڈی کراسنگ نیچے سگنل لائن اور کراس اوور ویلیو حد سے زیادہ

قریبی پوزیشن سگنل

لانگ ٹیک منافع: اے ٹی آر کے ذریعے قیمت توڑنے سے منافع کی قیمت حاصل ہوتی ہے طویل اسٹاپ نقصان: قیمت ATR اسٹاپ نقصان کی قیمت سے ٹوٹ جاتی ہے۔ مختصر منافع: اے ٹی آر کے ذریعے قیمت میں خرابی منافع کی قیمت لے لو مختصر سٹاپ نقصان: قیمت ATR سٹاپ نقصان کی قیمت سے ٹوٹ جاتی ہے۔

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ رجحانات کا تعین کرنے میں ایم ٹی ایف ای ایم اے اور تجارتی سگنل تیار کرنے میں ایم اے سی ڈی کی طاقتوں کا مکمل استعمال کرتا ہے۔ ایم ٹی ایف ای ایم اے مجموعی رجحان کی سمت کا واضح طور پر اندازہ لگا سکتا ہے اور متزلزل مارکیٹوں میں کثرت سے تجارت سے بچ سکتا ہے۔ ایم اے سی ڈی اشارے قیمت کے نمونوں میں قلیل مدتی تبدیلیوں کو بہتر طور پر پکڑ سکتا ہے اور تجارتی سگنل تیار کرسکتا ہے۔ دونوں کو ایک ساتھ استعمال کرنے سے زیادہ تجارتی مواقع حاصل کرتے ہوئے رجحان کو پکڑنے کا یقین ہوتا ہے۔ اس کے علاوہ ، اسٹاپ نقصان کو متحرک طور پر ٹریک کرنے اور منافع حاصل کرنے کے لئے اے ٹی آر اشارے کا استعمال کرکے انفرادی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔

خطرات اور حل

اس حکمت عملی کے دو اہم خطرات ہیں۔ پہلا ، واضح رجحان کی عدم موجودگی میں ، ایم ٹی ایف ای ایم اے غلط سگنل پیدا کرسکتا ہے ، جس کی وجہ سے نقصانات ہوسکتے ہیں۔ دوسرا ، جب قیمتوں میں ڈرامائی طور پر تبدیلی آتی ہے تو ایم اے سی ڈی اشارے اکثر گمراہ کن سگنل پیدا کرتا ہے ، جس کی وجہ سے زیادہ تجارت ہوسکتی ہے۔ پہلے خطرے کے ل the ، ایم ٹی ایف ای ایم اے پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے تاکہ قیمتوں کے رجحان کی تبدیلیوں سے بہتر طور پر مماثل ہو۔ دوسرا خطرہ ایم اے سی ڈی اشارے کے لئے کراس اوور کی حدود طے کرکے کم کیا جاسکتا ہے۔

اصلاح کی ہدایات

حکمت عملی کے مندرجہ ذیل پہلوؤں کو بہتر بنایا جا سکتا ہے:

  1. MTF EMA کے سائیکل پیرامیٹرز کو مختلف ٹریڈنگ آلات کی قیمت کی خصوصیات سے بہتر طور پر ملانے کے لئے ایڈجسٹ کریں

  2. بہتر سگنلز کے لئے MACD اشارے کے تیز اور سست حرکت پذیر اوسط اور سگنل لائن پیرامیٹرز کو بہتر بنائیں

  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

مزید