
کثیر ٹائم فریم منتقل اوسط کراس اوور حکمت عملی ایک الگورتھم ٹریڈنگ حکمت عملی ہے جو مختلف ٹائم فریموں میں منتقل اوسط کے مابین کراس سگنل کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کرتی ہے۔ حکمت عملی میں رجحان اشارے ، حرکیات اشارے اور اتار چڑھاؤ کی شرح اشارے کا مجموعہ استعمال کیا گیا ہے ، جس سے حکمت عملی کا اشارہ زیادہ قابل اعتماد ہے۔
یہ حکمت عملی مارکیٹ کے رجحانات کی سمت کا تعین کرنے کے لئے مختلف ادوار کے سی سی آئی اشارے کا حساب لگاتی ہے ، اس کے بعد میکڈ اشارے کے ساتھ مل کر سونے کے فورک ڈاٹ فورک سگنل کی تلاش کرتی ہے ، اور آخر میں اے ٹی آر اشارے کے ساتھ اسٹاپ نقصان کی پوزیشن طے کرتی ہے ، جس سے کم خریدنے اور فروخت کرنے میں مدد ملتی ہے۔
خاص طور پر ، پہلے مارکیٹ کے رجحانات کا فیصلہ کرنے کے لئے اس کے مثبت اور منفی کی بنیاد پر 20 سائیکلوں کے سی سی آئی اشارے کا حساب لگائیں۔ پھر MACD اشارے کی اوسط اوسط لائن کا حساب لگائیں کہ آیا اس میں کراسنگ ہوئی ہے یا نہیں ، خرید و فروخت کا سگنل پیدا ہوا ہے۔ پھر اے ٹی آر اشارے کا استعمال کرتے ہوئے ٹریکنگ اسٹاپ نقصان کا میکانزم پیدا کریں ، مزید منافع کو مقفل کریں۔ اور آخر میں ، مندرجہ بالا اشارے کے متعدد سگنلوں کا مجموعہ ، حتمی خرید و فروخت کی حکمت عملی کا اشارہ پیدا کریں۔
اس حکمت عملی میں سی سی آئی ، ایم اے سی ڈی اور اے ٹی آر کے تین اشارے کا مجموعہ استعمال کیا گیا ہے ، جس سے مارکیٹ کے رجحانات ، حرکیات اور اتار چڑھاؤ کی شرح کا جامع اندازہ لگایا جاسکتا ہے ، جس سے حکمت عملی کے اشارے زیادہ درست اور قابل اعتماد ہوجاتے ہیں۔
سی سی آئی کا استعمال کرتے ہوئے مارکیٹ کے مجموعی رجحان کا اندازہ لگانے کے لئے مختلف ادوار کا استعمال کرتے ہوئے ، اعلی دورانیہ MACD کے ساتھ مل کر کم خرید و فروخت کے نوڈس کی تلاش کریں ، تاکہ مارکیٹ میں بڑے رجحان کی رفتار کو سمجھا جاسکے۔
اے ٹی آر اشارے سے پیدا ہونے والی روک تھام کی مدد سے ، مارکیٹ میں اتار چڑھاؤ کی شرح کے مطابق معقول رکاوٹ کی حد طے کی جاسکتی ہے ، اور اس میں روک تھام کی کھوج کی خصوصیت ہے ، جو حکمت عملی کے خطرے کو اچھی طرح سے کنٹرول کرسکتی ہے۔
اس حکمت عملی میں زیادہ تر پیرامیٹرز میں ایڈجسٹمنٹ کی گنجائش بہت زیادہ نہیں ہے اور اس کے اثرات کی حد تک پہنچنے میں آسانی ہے ، جس سے حکمت عملی کے اثرات کو مزید بڑھانے پر پابندی عائد کردی گئی ہے۔
چونکہ حکمت عملی میں متعدد اشارے استعمال کیے جاتے ہیں ، اس سے حکمت عملی کے حساب کتاب کے بوجھ میں کچھ حد تک اضافہ ہوتا ہے۔ اعلی تعدد تجارت میں کارٹن کا مسئلہ پیدا ہوسکتا ہے۔
حکمت عملی کے اشارے زیادہ کثرت سے ہوسکتے ہیں ، جبکہ خطرے کا کنٹرول بنیادی طور پر اے ٹی آر اشارے کے اسٹاپ نقصان سے باخبر رہنے پر منحصر ہوتا ہے۔ انتہائی رجحانات کے لئے خطرے کا کنٹرول مکمل نہیں ہے۔
کچھ مشین لرننگ کے سپر پیرامیٹرز کو بہتر بنانے کے الگورتھم ، جیسے بییسس آپٹیمائزیشن ، جینیاتی الگورتھم وغیرہ کو استعمال کرنے کی کوشش کی جاسکتی ہے ، تاکہ پیرامیٹرز کو زیادہ ذہین اور موثر انداز میں ایڈجسٹ کیا جاسکے۔
کچھ دیگر فنکشنل اشارے شامل کرنے پر غور کیا جاسکتا ہے ، جیسے اتار چڑھاؤ کی شرح اشارے ، توانائی کی پیمائش کرنے والے اشارے ، جذبات اشارے وغیرہ ، حکمت عملی کی موافقت اور لچک کو بڑھانا۔
زیادہ سائنسی سٹاپ نقصان کے اصول کو ڈیزائن کیا جا سکتا ہے، یا کسی پوزیشن کنٹرول یا فنڈ مینجمنٹ ماڈیول کو شامل کیا جا سکتا ہے، جو انتہائی حالات کے خطرے سے بہتر طور پر حفاظت کرتا ہے، حکمت عملی کی استحکام کو یقینی بناتا ہے.
کثیر ٹائم فریم ورک میں ایکویٹی لائن حکمت عملی کا استعمال کرتے ہوئے سی سی آئی ، ایم اے سی ڈی اور اے ٹی آر کے تین بڑے اشارے کا مجموعہ ، زیادہ قابل اعتماد رجحانات کا فیصلہ اور موثر خطرے پر قابو پانے کے لئے۔ اس حکمت عملی میں رجحانات ، حرکیات اور اتار چڑھاؤ کی تین جہتوں کا مجموعی طور پر غور کیا گیا ہے ، جس میں سگنل کی اعلی درستگی ، مارکیٹ کی رفتار کو سمجھنے اور خطرے کو مؤثر طریقے سے کنٹرول کرنے کے فوائد ہیں۔ یقینا ، اس حکمت عملی میں ایک خاص پیرامیٹرز کی اصلاح کی جگہ ، محدود حساب کتاب کا بوجھ اور خطرے پر قابو پانے کے لئے اضافہ کرنے کے قابل ہے۔ مزید اشارے متعارف کرانے ، بہتر پیرامیٹرز کی اصلاح کے طریقوں کا استعمال کرنے اور زیادہ طاقتور خطرے پر قابو پانے والے ماڈیول کو ڈیزائن کرنے کے ذریعہ ، اس حکمت عملی کو مزید بہتر اور بہتر بنایا جاسکتا ہے۔
/*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)