
یہ حکمت عملی چینل اور متحرک اشارے کا حساب کتاب کرکے رجحان کی شکل کی نشاندہی کرتی ہے ، اور رجحان سے باخبر رہنے کے لئے تجارت کرتی ہے۔ خاص طور پر ، یہ متحرک اشارے اور توازن چینل کے اشارے کو جوڑتا ہے ، اور دونوں کا استعمال کرتے ہوئے ، طویل مدتی رجحانات میں مداخلت کرتے ہوئے ، توازن چینل کا استعمال کرتے ہوئے کثیر منافع بخش علاقوں کو مقفل کرتا ہے۔
اس حکمت عملی میں بنیادی طور پر مندرجہ ذیل دو اشارے استعمال کیے گئے ہیں:
متحرک اشارے ((ڈی ایم آئی): مارکیٹ کے زیادہ خالی رجحان کا فیصلہ کرنے کے لئے ، اشارے حد سے زیادہ قیمت پر ٹریڈنگ سگنل پیدا کرتے ہیں۔
متوازن چینل (Keltner Channel): رجحان کے علاقے کا فیصلہ کرنے کے لئے ، قیمت کے ٹریک کو توڑنے پر خریدنے کا وقت ، قیمت کے وسط ٹریک کو گرنے پر فلیٹ پوزیشن سگنل۔
مخصوص ٹریڈنگ منطق یہ ہے کہ: جب + ڈی آئی انڈیکس سیٹ کی حد سے زیادہ ہے (ڈیفالٹ 32) ، اس کا فیصلہ کثیر جہتی رجحان کی تشکیل کے طور پر کیا جاتا ہے ، اس وقت جیسے قیمت توازن چینل کو توڑنے کے لئے کھینچتی ہے ، خریدنے کا اشارہ پیدا کرتی ہے۔ اس کے بعد توازن چینل کے وسط میں کھینچنے کو روکنے کے لئے ، اسٹاپ نقصان کو ٹریک کرنے اور منافع کی حفاظت کے لئے استعمال کیا جاتا ہے۔
اس حکمت عملی میں دونوں اشارے کا فائدہ اٹھایا گیا ہے ، جس میں رجحان کی سمت کا تعین کرنے کے لئے حرکیات کے اشارے کا استعمال کیا گیا ہے ، اور داخلہ کے وقت اور اسٹاپ زون کا تعین کرنے کے لئے متوازن چینل کا استعمال کیا گیا ہے۔ دوہری اشارے کا مجموعہ حکمت عملی کو اس قابل بناتا ہے کہ وہ رجحان کا پتہ لگانے کے لئے ابتدائی طور پر موثر طریقے سے داخل ہو سکے ، جبکہ چینل اشارے کا استعمال کرتے ہوئے منافع اور نقصان کو روک سکے۔
حکمت عملی مارکیٹ کے رجحانات کا اندازہ لگانے کے لئے متحرک اشارے کا استعمال کرتی ہے ، جو سادہ حرکت پذیری اوسط جیسے پیچھے رہ جانے والے اشارے سے کہیں زیادہ موثر ہے۔
ایک متوازن چینل کا استعمال کرتے ہوئے ، آپ کو منافع بخش علاقوں کو مؤثر طریقے سے بند کرنے کے لئے مخصوص تجارتی علاقوں کا تعین کرنے کی اجازت دیتا ہے۔
انڈیکس پیرامیٹرز اور ٹریڈنگ کے قواعد سخت اور معقول ہیں ، ریٹرننگ ڈیٹا نے اچھی کارکردگی کا مظاہرہ کیا ہے ، اور اس کی عملی جانچ پڑتال کی گئی ہے۔
حکمت عملی بہت سادہ اور واضح ہے ، اس کو سمجھنے میں آسان ہے ، اور اس کو سیکھنے کے لئے کافی ہے
حکمت عملی کا خطرہ قابل کنٹرول ہے ، درمیانی ریل کی یکساں لکیری متحرک اسٹاپ نقصان کو اپنایا گیا ہے ، جس سے واحد نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔
حکمت عملی صرف رجحان سازی کے لئے لاگو ہوتی ہے ، اتار چڑھاؤ والی مارکیٹوں کو ختم کرنے کے لئے نہیں ، جیسے QtCore چینل میں اضافہ ہوتا ہے ، اور درمیانی سڑک کا نقصان بہت زیادہ نرمی سے ہوتا ہے ، نقصان کو کنٹرول نہیں کیا جاسکتا ہے۔
ڈی ایم آئی اشارے میں کچھ تاخیر ہے ، رجحان کی تصدیق کا تعین نہیں کیا جاسکتا ہے ، اور اس رجحان میں جلد مداخلت سے نقصان ہوسکتا ہے۔
ایک مقررہ فیصد اسٹاپ کا خطرہ ہے کہ بڑے پیمانے پر جھٹکے کے بعد رجحان میں دوبارہ مداخلت نہیں کی جاسکتی ہے ، اور اس کے بعد کی صورتحال سے محروم ہوجاتی ہے۔
ریٹرننگ کے اعداد و شمار کافی ہیں، لیکن اس بات کی تصدیق کرنے کے لئے کہ پیرامیٹرز کی استحکام کو ثابت کرنے کے لئے طویل عرصہ تک چلنے کی ضرورت ہے.
مختلف سٹاپ طریقوں کو ٹیسٹ کیا جا سکتا ہے، جیسے اے ٹی آر سٹاپ، موبائل سٹاپ وغیرہ کی بجائے فکسڈ فیصد سٹاپ۔
رجحانات کی تصدیق کے بعد داخلے کو یقینی بنانے کے لئے ، ٹرانزیکشن میں اضافے جیسے ذیلی تصدیق کے اشارے شامل کیے جاسکتے ہیں۔
مختلف پیرامیٹرز کے مجموعے کو بہتر بنانے کی جانچ کی جاسکتی ہے ، بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔
پیرامیٹرز کی استحکام کو قدم بہ قدم اصلاح اور متحرک ردعمل کی جانچ پڑتال کے ذریعے جانچ پڑتال کی جاسکتی ہے۔
اس حکمت عملی میں دوہری اشارے کا فیصلہ استعمال کیا گیا ہے ، جس سے رجحان کی صورتحال کو موثر انداز میں گرفت میں لایا جاسکتا ہے۔ حکمت عملی نسبتا simple آسان ، بدیہی ، منطقی طور پر واضح ہے ، اس کی جانچ پڑتال کی کارکردگی اچھی ہے ، اور یہ مقدار کی تجارت میں داخلے کی حکمت عملی میں سے ایک کے طور پر استعمال کیا جاسکتا ہے۔ تاہم ، ابھی بھی ریل اسٹیٹ کے اعداد و شمار اور اصلاحی پیرامیٹرز کی مکمل تصدیق کی ضرورت ہے ، اور ریل اسٹیٹ سے باہر نکلنے کے خطرے کو کم کرنا مستقبل کی توجہ کا مرکز ہوگا۔
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Original Idea by: @Wunderbit
//@version=4
strategy("Keltner Channel [LINKUSDT] 1H", overlay=true, initial_capital=3000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent,commission_value=0.1)
/// TREND
trend_cond = input(true, title="Enable Ribbon Filter")
ribbon_period = input(30, "Ribbon Period", step=1)
leadLine1 = ema(close, ribbon_period)
leadLine2 = sma(close, ribbon_period)
// p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
// p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
// fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)
//Upward Trend
UT=leadLine2 < leadLine1
DT=leadLine2 > leadLine1
///////////////////////////////////////INDICATORS
// KELTNER //
source = close
useTrueRange = input(true)
length = input(80, "KELTNER Period", step=1, minval=1)
mult = input(3.0,"KELTNER Multiple", step=0.1)
// Calculate Keltner Channel
ma = ema(source, length)
range = useTrueRange ? tr : high - low
rangema = ema(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
plot(ma, title="Middle", color=color.orange)
p1=plot(upper, title="Upper", color=color.orange)
p2=plot(lower, title="Lower", color=color.orange)
fill(p1,p2)
// DMI INDICATOR //
lensig = input(14, title="ADX Smoothing", minval=1, maxval=50)
len = input(14, minval=1, title="DI Length")
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / trur)
minus = fixnan(100 * rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
trig_level=input(title="+DI Trigger Level", defval=32, minval=1,step=1)
//trig_level_adx=input(title="ADX Trigger Level", defval=30, minval=1,step=1)
//plot(adx, color=#FF006E, title="ADX")
//plot(plus, color=#0094FF, title="+DI")
//plot(minus, color=#FF6A00, title="-DI")
// plot(trig_level, color=color.white, title="Key Level")
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////Component Code Start
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
///// Component Code Stop //////////////////////////////////////////
//////////////// STRATEGY EXECUTION //////////////////////////
// STRATEGY CONDITION
// LONG
long = ((open > lower and open < upper) and close > upper) and plus > minus and plus > trig_level and volume[0] > volume[1]
entry_long = trend_cond ? long and UT : long
exit_long = (close < ma) //or low < SL_long
//LONG SET UP
// Take Profit / Stop Loss
entry_price_long=valuewhen(entry_long,close,0)
//SL_long = entry_price_long * (1 - long_sl_inp)
long_tp1_inp = input(8, title='Long Take Profit 1 Target %', step=0.1)/100
long_tp1_qty = input(20, title="Long Take Profit 1 Qty %", step=1)
long_tp2_inp = input(16, title='Long Take Profit 2 Target %', step=0.1)/100
long_tp2_qty = input(30, title="Long Take Profit 2 Qty %", step=1)
long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)
//long_sl_inp = input(4, title='Long Stop Loss %', step=0.1)/100
//long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
// STRATEGY EXECUTION
if testPeriod()
// LONG
strategy.entry(id="Long", long=true, when=entry_long, comment = "INSERT ENTRY LONG COMMAND")
strategy.exit("TP1","Long", qty_percent=long_tp1_qty, limit=long_take_level_1) // PLACE TAKE PROFIT IN WBT BOT SETTINGS
strategy.exit("TP2","Long", qty_percent=long_tp2_qty, limit=long_take_level_2) // PLACE TAKE PROFIT IN WBT BOT SETTINGS
strategy.close(id="Long", when=exit_long, comment= "INSERT EXIT LONG COMMAND")
//PLOT FIXED SLTP LINE
// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
//plot(strategy.position_size > 0 ? long_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")