
اس حکمت عملی کا استعمال مستقبل کی قیمتوں کی نقل و حرکت کا اندازہ لگانے کے لئے قیمتوں کے اندرونی چینل کا استعمال کرتا ہے۔ یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے۔ جب قیمتوں میں اندرونی قیمتوں کے اتار چڑھاؤ کے چینل کی ایک خاص تعداد بنتی ہے تو ، اس کو رجحان میں تبدیلی کا اشارہ سمجھا جاتا ہے ، خریدنے یا فروخت کرنے کا آپریشن۔ اس کے ساتھ ساتھ ایک متحرک اوسط فلٹرنگ اور اسٹاپ نقصان کی روک تھام کی ترتیب کو لاک کرنے کے لئے منافع کو لاک کرنے کے لئے ، یہ ایک عام مقدار کی تجارت کی حکمت عملی ہے۔
اس حکمت عملی کا فیصلہ اندرونی چینل کی تشکیل کی بنیاد پر کیا جاتا ہے کہ اگلی اور پچھلی دو K لائنوں کی اعلی ترین قیمت اور کم سے کم قیمت کے درمیان کیا تعلق ہے۔ جب K لائنوں کی ایک خاص تعداد اس شرط کو پورا کرتی ہے کہ اعلی ترین قیمت پچھلی K لائن کی اعلی ترین قیمت سے کم ہے اور کم سے کم قیمت پچھلی K لائن کی کم سے کم قیمت سے زیادہ ہے۔
قیمت کی اندرونی چینل کی تشکیل کا تعین کرتے ہوئے ، حکمت عملی اس اندرونی چینل کی سمت کا بھی تعین کرتی ہے۔ اگر یہ باؤنس اندرونی چینل ہے تو ، اس سے خریدنے کا اشارہ ملتا ہے۔ اگر یہ نیچے کی اندرونی چینل ہے تو ، اس سے فروخت کا اشارہ ملتا ہے۔ لہذا ، یہ حکمت عملی دو طرفہ تجارت کی حکمت عملی ہے۔
جعلی سگنلوں کو فلٹر کرنے کے لئے ، اس حکمت عملی میں ایک چلتی اوسط اشارے بھی متعارف کرایا گیا ہے۔ اصل تجارتی سگنل صرف اس وقت پیدا ہوتا ہے جب قیمت اوپر یا نیچے چلتی اوسط سے اوپر ہو۔ اس سے مارکیٹ کو درست کرنے میں کسی حد تک غلط تجارت سے بچا جاسکتا ہے۔
داخلے کے بعد ، حکمت عملی صارف کے انتخاب کے مطابق ، اسٹاپ نقصان کی روک تھام کو بھی ترتیب دے گی۔ آپ کو روکنے کے تین طریقے ہیں: فکسڈ پوائنٹ اسٹاپ ، اے ٹی آر اسٹاپ ، پہلے سے زیادہ کم سے کم پوائنٹ اسٹاپ۔ اسٹاپ سیٹنگ خطرے سے واپسی کے تناسب کی روک تھام ہے۔ یہ منافع کو کسی حد تک بند کرسکتا ہے ، خطرے کو کنٹرول کرسکتا ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں ٹرینڈ ٹرن آؤٹ پوائنٹس کی شناخت کی مضبوط صلاحیت ہے۔ جب قیمتوں میں ایک خاص تعداد میں اندرونی راستے بنتے ہیں تو ، یہ اکثر بڑے پیمانے پر گرنے کا اشارہ کرتا ہے۔ یہ فیصلہ روایتی تکنیکی تجزیہ کی تھیوری کے ساتھ انتہائی مطابقت رکھتا ہے۔
اس کے علاوہ ، حکمت عملی خود بھی انتہائی قابل تخصیص ہے۔ صارفین کو اندرونی چینلز کی تعداد ، متحرک اوسط کی مدت ، اسٹاپ نقصان کی روک تھام کے طریقوں اور اسی طرح کے پیرامیٹرز کو آزادانہ طور پر منتخب کرنے کی اجازت ہے۔ یہ مختلف اقسام اور مختلف تجارتی طرزوں کے لئے بہت زیادہ لچک فراہم کرتا ہے۔
آخر میں ، حکمت عملی میں شامل چلتی اوسط فلٹرنگ اور اسٹاپ نقصان کی روک تھام کی ترتیبات بھی تجارت کے خطرے کو کم کرتی ہیں۔ حکمت عملی کو مختلف قسم کے مارکیٹ کے ماحول میں تجارت کے لئے موزوں بناتی ہے۔
اس حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ رجحان کی تشخیص میں غلطی کا امکان زیادہ ہے۔ اندرونی چینل قیمتوں کے الٹ کو مکمل طور پر طے نہیں کرسکتے ہیں ، اور اس میں غلطی کا امکان موجود ہے۔ اگر طے شدہ تعداد کم ہے تو ، غلط سگنل کی صورتحال پیدا ہوسکتی ہے۔
مزید برآں ، یہ حکمت عملی مکمل طور پر مستحکم یا اتار چڑھاؤ والے بازاروں میں لاگو نہیں ہوتی ہے۔ جب قیمتوں میں اتار چڑھاؤ ہوتا ہے لیکن کوئی رجحان قائم نہیں ہوتا ہے تو یہ حکمت عملی مسلسل غلط سگنل پیدا کرے گی۔ یہ حکمت عملی کے طریقہ کار کی وجہ سے طے شدہ ہے۔
آخر میں ، اسٹاپ نقصان کی ترتیب بہت زیادہ محافظ ہے ، جس کی وجہ سے حکمت عملی کافی لمبے عرصے تک نہیں رہ سکتی ہے اور بڑے رجحانات میں منافع کو نہیں پکڑ سکتی ہے۔ اس کے لئے صارف کو اپنے آپ کو متوازن کرنے کی ضرورت ہے۔
اس حکمت عملی میں بہتری کی گنجائش ہے۔ کچھ ممکنہ اصلاحات میں شامل ہیں:
اندرونی چینلز کی تعداد اور شکل کو بہتر بنائیں۔ مختلف تعداد میں یا مختلف ترتیب کے مجموعے کے تحت ٹرانزیکشن کی تاثیر کی جانچ کی جاسکتی ہے۔
حرکت پذیر اوسط کی مدت کے پیرامیٹرز کو بہتر بنائیں تاکہ اس سے رجحانات کی سمت کا بہتر اندازہ لگایا جاسکے۔ موجودہ ڈیفالٹ مدت شاید تمام اقسام کے لئے موزوں نہ ہو۔
دوسرے اشارے کے فلٹر شامل کریں۔ مثال کے طور پر ، برین بینڈ متعارف کرایا گیا ، صرف اس وقت ٹریڈنگ سگنل پیدا ہوتا ہے جب قیمت برین بینڈ کو ٹریک یا ٹریک سے ٹکرائے۔
اسٹاپ نقصان کی روک تھام کے پیرامیٹرز کو بہتر بنانا تاکہ حکمت عملی طویل عرصے تک پوزیشن رکھ سکے۔ اس طرح سپر ٹرینڈ میں منافع کو پکڑیں۔
مجموعی طور پر ، اس حکمت عملی کا وجود اس کی رجحانات کے فیصلے کی درستگی پر ہے۔ جب تک کہ فیصلے کی درستگی کو یقینی بنایا جاسکے ، اور مناسب خطرے کے انتظام کی ترتیبات کے ساتھ ، بہتر کارکردگی کا آلگورتھم ٹریڈنگ ممکن ہے۔
یہ حکمت عملی مجموعی طور پر قیمت کے اندرونی چینل کی بنیاد پر مستقبل کی قیمتوں کے رجحانات کا تعین کرنے والی ایک مقداری تجارت کی حکمت عملی ہے۔ اس میں رجحان کی پیروی اور رجحان کے الٹ جانے کے دو طریقوں کا امتزاج کیا گیا ہے ، جس میں کچھ فوائد ہیں۔ لیکن اس میں کچھ اصلاح کی گنجائش بھی موجود ہے ، سرمایہ کار اپنی ضروریات کے مطابق اس کو ایڈجسٹ کرسکتے ہیں تاکہ وہ مخصوص قسم اور تجارتی ماحول کے مطابق ہو۔ پیرامیٹرز کی اصلاح کے بعد ، یہ حکمت عملی ایک بہت ہی مثالی مقداری تجارت کی حکمت عملی میں سے ایک ہوسکتی ہے۔
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 3m
basePeriod: 1m
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/
// From "Day Trading Cryptocurrency
// Strategies, Tactics, Mindset, and Tools Required To Build Your
// New Income Stream"
// by Phil C. Senior
// "Inside bars are a two -bar pattern. They can indicate either a continuation of the
// existing move or a reversal. A continuation occurs when there is no significant
// support or resistance level in sight, while a reversal occurs close to a strong sup-
// port or resistance level...
// ...A lot of traders are aware of inside bars but few manage to make money with
// them. Why is this so? It goes back to interpreting price action. A lot of traders look
// to trade in geometric ways. What I mean is that they search for fancy shapes on a
// chart and think that this is what represents true price action.
// This is not the case. A shape is just a shape. The formation by itself means
// nothing unless underlying order flow backs it up. This is why it’s extremely impor-
// tant that you look for inside bars when a trend is already in place. The best place to
// look for them is in the beginning of trends."
// © tweakerID
//@version=4
strategy("Inside Bar Strategy w/ SL",
overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
initial_capital=10000,
commission_value=0.04,
calc_on_every_tick=false,
slippage=0)
direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
/////////////////////// STRATEGY INPUTS ////////////////////////////////////////
title1=input(true, "-----------------Strategy Inputs-------------------")
i_NBars = input(defval=1, type=input.integer, title="# Of Inside Bars in pattern", options=[1, 2, 3, 4])
i_BarsDirection = input(false, title="Only trade using complete bullish or bearish patterns")
i_MAFilter = input(true, title="Use MA Trend Filter")
i_MALen = input(65, title="MA Length")
/////////////////////// BACKTESTER /////////////////////////////////////////////
title2=input(true, "-----------------General Inputs-------------------")
// Backtester General Inputs
i_SL=input(true, title="Use Stop Loss and Take Profit")
i_SLType=input(defval="ATR Stop", title="Type Of Stop", options=["Strategy Stop", "Swing Lo/Hi", "ATR Stop"])
i_SPL=input(defval=10, title="Swing Point Lookback")
i_PercIncrement=input(defval=1, step=.1, title="Swing Point SL Perc Increment")*0.01
i_ATR = input(14, title="ATR Length")
i_ATRMult = input(5, step=.1, title="ATR Multiple")
i_TPRRR = input(2, step=.1, title="Take Profit Risk Reward Ratio")
TS=input(false, title="Trailing Stop")
// Bought and Sold Boolean Signal
bought = strategy.position_size > strategy.position_size[1]
or strategy.position_size < strategy.position_size[1]
// Price Action Stop and Take Profit
LL=(lowest(i_SPL))*(1-i_PercIncrement)
HH=(highest(i_SPL))*(1+i_PercIncrement)
LL_price = valuewhen(bought, LL, 0)
HH_price = valuewhen(bought, HH, 0)
entry_LL_price = strategy.position_size > 0 ? LL_price : na
entry_HH_price = strategy.position_size < 0 ? HH_price : na
tp=strategy.position_avg_price + (strategy.position_avg_price - entry_LL_price)*i_TPRRR
stp=strategy.position_avg_price - (entry_HH_price - strategy.position_avg_price)*i_TPRRR
// ATR Stop
ATR=atr(i_ATR)*i_ATRMult
ATRLong = ohlc4 - ATR
ATRShort = ohlc4 + ATR
ATRLongStop = valuewhen(bought, ATRLong, 0)
ATRShortStop = valuewhen(bought, ATRShort, 0)
LongSL_ATR_price = strategy.position_size > 0 ? ATRLongStop : na
ShortSL_ATR_price = strategy.position_size < 0 ? ATRShortStop : na
ATRtp=strategy.position_avg_price + (strategy.position_avg_price - LongSL_ATR_price)*i_TPRRR
ATRstp=strategy.position_avg_price - (ShortSL_ATR_price - strategy.position_avg_price)*i_TPRRR
// Strategy Stop
float LongStop = valuewhen(bought,low[1],0)*(1-i_PercIncrement)
float ShortStop = valuewhen(bought,high[1],0)*(1+i_PercIncrement)
float StratTP = na
float StratSTP = na
/////////////////////// STRATEGY LOGIC /////////////////////////////////////////
MAFilter=close > sma(close, i_MALen)
plot(i_MAFilter ? sma(close, i_MALen) : na)
bullBar=close > open
bearBar=close < open
contbullBar=barssince(not bullBar) >= (i_NBars+1)
contbearBar=barssince(not bearBar) >= (i_NBars+1)
InsideBar(NBars) =>
Inside1Bar=high < high[1] and low > low[1]
Inside2Bar=high < high[2] and low > low[2] and Inside1Bar
Inside3Bar=high < high[3] and low > low[3] and Inside1Bar and Inside2Bar
Inside4Bar=high < high[4] and low > low[4] and Inside1Bar and Inside2Bar and Inside3Bar
if NBars == 1
inside1Bar=Inside1Bar
[inside1Bar]
else if NBars == 2
inside2Bar=Inside2Bar
[inside2Bar]
else if NBars == 3
inside3Bar=Inside3Bar
[inside3Bar]
else if NBars == 4
inside4Bar=Inside4Bar
[inside4Bar]
else
[na]
[insideBar] = InsideBar(i_NBars)
bullInsideBar=bar_index > 40 and insideBar and bullBar
and (i_BarsDirection ? contbullBar : true) and (i_MAFilter ? MAFilter : true)
bearInsideBar=bar_index > 40 and insideBar and bearBar
and (i_BarsDirection ? contbearBar : true) and (i_MAFilter ? not MAFilter : true)
BUY = bullInsideBar
SELL = bearInsideBar
//Debugging Plots
plot(contbullBar ? 1:0, transp=100, title="contbullBar")
plot(contbearBar ? 1:0, transp=100, title="contbearBar")
//Trading Inputs
DPR=input(true, "Allow Direct Position Reverse")
reverse=input(false, "Reverse Trades")
// Entries
if reverse
if not DPR
strategy.entry("long", strategy.long, when=SELL and strategy.position_size == 0)
strategy.entry("short", strategy.short, when=BUY and strategy.position_size == 0)
else
strategy.entry("long", strategy.long, when=SELL)
strategy.entry("short", strategy.short, when=BUY)
else
if not DPR
strategy.entry("long", strategy.long, when=BUY and strategy.position_size == 0)
strategy.entry("short", strategy.short, when=SELL and strategy.position_size == 0)
else
strategy.entry("long", strategy.long, when=BUY)
strategy.entry("short", strategy.short, when=SELL)
SL= i_SLType == "Swing Lo/Hi" ? entry_LL_price : i_SLType == "ATR Stop" ? LongSL_ATR_price : LongStop
SSL= i_SLType == "Swing Lo/Hi" ? entry_HH_price : i_SLType == "ATR Stop" ? ShortSL_ATR_price : ShortStop
TP= i_SLType == "Swing Lo/Hi" ? tp : i_SLType == "ATR Stop" ? ATRtp : StratTP
STP= i_SLType == "Swing Lo/Hi" ? stp : i_SLType == "ATR Stop" ? ATRstp : StratSTP
//TrailingStop
dif=(valuewhen(strategy.position_size>0 and strategy.position_size[1]<=0, high,0))
-strategy.position_avg_price
trailOffset = strategy.position_avg_price - SL
var tstop = float(na)
if strategy.position_size > 0
tstop := high- trailOffset - dif
if tstop<tstop[1]
tstop:=tstop[1]
else
tstop := na
StrailOffset = SSL - strategy.position_avg_price
var Ststop = float(na)
Sdif=strategy.position_avg_price-(valuewhen(strategy.position_size<0
and strategy.position_size[1]>=0, low,0))
if strategy.position_size < 0
Ststop := low+ StrailOffset + Sdif
if Ststop>Ststop[1]
Ststop:=Ststop[1]
else
Ststop := na
strategy.exit("TP & SL", "long", limit=TP, stop=TS? tstop : SL, when=i_SL)
strategy.exit("TP & SL", "short", limit=STP, stop=TS? Ststop : SSL, when=i_SL)
/////////////////////// PLOTS //////////////////////////////////////////////////
plot(i_SL and strategy.position_size > 0 and not TS ? SL : i_SL and strategy.position_size > 0 and TS ? tstop : na , title='SL', style=plot.style_cross, color=color.red)
plot(i_SL and strategy.position_size < 0 and not TS ? SSL : i_SL and strategy.position_size < 0 and TS ? Ststop : na , title='SSL', style=plot.style_cross, color=color.red)
plot(i_SL and strategy.position_size > 0 ? TP : na, title='TP', style=plot.style_cross, color=color.green)
plot(i_SL and strategy.position_size < 0 ? STP : na, title='STP', style=plot.style_cross, color=color.green)
// Draw price action setup arrows
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar,
color=color.green, title="Bullish Setup", size=size.auto)
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar,
color=color.red, title="Bearish Setup", size=size.auto)