ملٹی ٹائم فریم حرکت پذیر اوسط کراسنگ کی حکمت عملی


تخلیق کی تاریخ: 2024-02-19 15:41:29 آخر میں ترمیم کریں: 2024-02-19 15:41:29
کاپی: 0 کلکس کی تعداد: 654
1
پر توجہ دیں
1617
پیروکار

ملٹی ٹائم فریم حرکت پذیر اوسط کراسنگ کی حکمت عملی

جائزہ

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

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

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

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

اسٹریٹجک فوائد

  1. کثیر اشارے کا مجموعہ ، سگنل کی درستگی میں اضافہ

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

  1. کثیر ٹائم فریم تجزیہ، مارکیٹ کی رفتار کو سمجھنا

سی سی آئی کا استعمال کرتے ہوئے مارکیٹ کے مجموعی رجحان کا اندازہ لگانے کے لئے مختلف ادوار کا استعمال کرتے ہوئے ، اعلی دورانیہ MACD کے ساتھ مل کر کم خرید و فروخت کے نوڈس کی تلاش کریں ، تاکہ مارکیٹ میں بڑے رجحان کی رفتار کو سمجھا جاسکے۔

  1. اے ٹی آر نقصانات کا سراغ لگانا ، خطرے کو مؤثر طریقے سے کنٹرول کرنا

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

اسٹریٹجک رسک

  1. پیرامیٹرز کو بہتر بنانے کے لئے محدود جگہ

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

  1. کثیر پیمائش کا مجموعہ کمپیوٹنگ بوجھ میں اضافہ

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

  1. سگنل کثرت سے آتے ہیں، خطرے کا کنٹرول محدود

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

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

  1. مشین لرننگ الگورتھم کا استعمال کرتے ہوئے پیرامیٹرز کی اصلاح کی کارکردگی کو بہتر بنانا

کچھ مشین لرننگ کے سپر پیرامیٹرز کو بہتر بنانے کے الگورتھم ، جیسے بییسس آپٹیمائزیشن ، جینیاتی الگورتھم وغیرہ کو استعمال کرنے کی کوشش کی جاسکتی ہے ، تاکہ پیرامیٹرز کو زیادہ ذہین اور موثر انداز میں ایڈجسٹ کیا جاسکے۔

  1. فنکشنل انڈیکس میں اضافہ اور حکمت عملی کی لچک میں اضافہ

کچھ دیگر فنکشنل اشارے شامل کرنے پر غور کیا جاسکتا ہے ، جیسے اتار چڑھاؤ کی شرح اشارے ، توانائی کی پیمائش کرنے والے اشارے ، جذبات اشارے وغیرہ ، حکمت عملی کی موافقت اور لچک کو بڑھانا۔

  1. خطرے کے انتظام کے ماڈیول کو مضبوط بنانا ، حکمت عملی کے خطرات کو کنٹرول کرنا

زیادہ سائنسی سٹاپ نقصان کے اصول کو ڈیزائن کیا جا سکتا ہے، یا کسی پوزیشن کنٹرول یا فنڈ مینجمنٹ ماڈیول کو شامل کیا جا سکتا ہے، جو انتہائی حالات کے خطرے سے بہتر طور پر حفاظت کرتا ہے، حکمت عملی کی استحکام کو یقینی بناتا ہے.

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('smplondonclinic Strategy', shorttitle='SMPLC Strategy', overlay=true, pyramiding = 0, process_orders_on_close = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

direction   = input.string(title='Entry Direction', defval='Long', options=['Long', 'Short', 'Both'],group = "Strategy Entry Direction")

TPPerc = input.float(title='Take Profit (%)', minval=0.0, step=0.1, defval=0.5, group='Strategy TP & SL')
SLPerc = input.float(title='Stop Loss (%)', minval=0.0, step=0.1, defval=0.5, group='Strategy TP & SL')

period = input(20, 'CCI period',group = "TREND MAGIC")
coeff = input(1, 'ATR Multiplier',group = "TREND MAGIC")
AP = input(5, 'ATR Period',group = "TREND MAGIC")
ATR = ta.sma(ta.tr, AP)
srctm = close
upT = low - ATR * coeff
downT = high + ATR * coeff
MagicTrend = 0.0
MagicTrend := ta.cci(srctm, period) >= 0 ? upT < nz(MagicTrend[1]) ? nz(MagicTrend[1]) : upT : downT > nz(MagicTrend[1]) ? nz(MagicTrend[1]) : downT
color1 = ta.cci(srctm, period) >= 0 ? #0022FC : #FC0400
plot(MagicTrend, color=color1, linewidth=3)
tmb = ta.cci(srctm, period) >= 0 and close>MagicTrend
tms = ta.cci(srctm, period) <= 0 and close<MagicTrend

//MACD

res           = input.timeframe("",  "Indicator TimeFrame", group = "MACD")
fast_length   = input.int(title="Fast Length", defval=12, group = "MACD")
slow_length   = input.int(title="Slow Length", defval=26, group = "MACD")
src           = input.source(title="Source", defval=close, group = "MACD")
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9, group = "MACD")
sma_source    = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"], group = "MACD")
sma_signal    = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"], group = "MACD")

fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal

trend_up   = macd > signal
trend_dn   = macd < signal
cross_UP   = signal[1] >= macd[1] and signal < macd
cross_DN   = signal[1] <= macd[1] and signal > macd
cross_UP_A = (signal[1] >= macd[1] and signal < macd) and macd > 0
cross_DN_B = (signal[1] <= macd[1] and signal > macd) and macd < 0


//UT Bot

srcut = close
showut = input.bool(false, 'Show UT Bot Labels', group = "UT BOT")
keyvalue = input.float(2, title='Key Vaule. \'This changes the sensitivity\'', step=.5, group = "UT BOT")
atrperiod = input(7, title='ATR Period', group = "UT BOT")
xATR = ta.atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
iff_1 = srcut > nz(xATRTrailingStop[1], 0) ? srcut - nLoss : srcut + nLoss
iff_2 = srcut < nz(xATRTrailingStop[1], 0) and srcut[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), srcut + nLoss) : iff_1
xATRTrailingStop := srcut > nz(xATRTrailingStop[1], 0) and srcut[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), srcut - nLoss) : iff_2

pos = 0
iff_3 = srcut[1] > nz(xATRTrailingStop[1], 0) and srcut < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := srcut[1] < nz(xATRTrailingStop[1], 0) and srcut > nz(xATRTrailingStop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

//plot(xATR, color=xcolor, title='Trailing Stop')
buy = ta.crossover(srcut, xATRTrailingStop)
sell = ta.crossunder(srcut, xATRTrailingStop)
barcolor = srcut > xATRTrailingStop

plotshape(showut ? buy:na, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(showut ? sell:na, title='Sell', text='Sell', style=shape.labeldown, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

//barcolor(barcolor ? color.green : color.red)

goLong = buy and tmb and cross_UP
goShort = sell and tms and cross_DN

plotshape(goLong, location=location.bottom, style=shape.triangleup, color=color.lime, size=size.small)
plotshape(goShort, location=location.top, style=shape.triangledown, color=color.red, size=size.small)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? math.round(pcnt / 100.0 * strategy.position_avg_price / syminfo.mintick) : float(na)

percentAsPrice(pcnt) =>
    strategy.position_size != 0 ? (pcnt / 100.0 + 1.0) * strategy.position_avg_price : float(na)

current_position_size = math.abs(strategy.position_size)
initial_position_size = math.abs(ta.valuewhen(strategy.position_size[1] == 0.0, strategy.position_size, 0))

TP = strategy.position_avg_price + percentAsPoints(TPPerc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)
SL = strategy.position_avg_price - percentAsPoints(SLPerc) * syminfo.mintick * strategy.position_size / math.abs(strategy.position_size)

var long = false
var short = false

if direction == 'Long' 
    long := goLong
    short := false

if direction == 'Short'
    short := goShort
    long := false

if direction == 'Both' 
    long := goLong
    short := goShort

if long and strategy.opentrades == 0
    strategy.entry(id='Long', direction=strategy.long)

if short and strategy.opentrades == 0
    strategy.entry(id='Short', direction=strategy.short)

if strategy.position_size > 0

    strategy.exit('TPSL', from_entry='Long', qty=initial_position_size, limit=TP, stop=SL)

if strategy.position_size < 0

    strategy.exit('TPSL2', from_entry='Short', qty=initial_position_size, limit=TP, stop=SL)