شکل کی پیشن گوئی کی حکمت عملی مستقبل کی قیمتوں کے رجحانات کا اندازہ لگانے کے لئے چارٹ کی شکل کا استعمال کرتی ہے۔ یہ حکمت عملی تجارت میں وسیع پیمانے پر استعمال ہوتی ہے۔ یہ حکمت عملی دو سادہ شکلوں کی شناخت کے ذریعہ رجحانات کو تبدیل کرنے کے مواقع پر قبضہ کرتی ہے۔
یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اصولوں پر مبنی ہے۔
اے ٹی آر اشارے کا استعمال کرتے ہوئے رجحان کی طاقت اور کمزوری کی نشاندہی کریں ، اتار چڑھاؤ والی مارکیٹوں کو فلٹر کریں۔ اے ٹی آر کی قیمت سیٹ کی کم سے کم حد سے کم یا زیادہ سے زیادہ حد سے زیادہ ہونے پر ہی تجارت پر غور کیا جائے گا۔
موجودہ K لائن کی 33.3٪ فیبونیکی ریٹرو لائن کا حساب لگائیں۔ اگر بند ہونے والی قیمت اس لائن سے زیادہ ہے تو اسے ناریل کی لائن سمجھا جاتا ہے ، اور اگر بند ہونے والی قیمت اس لائن سے کم ہے تو اسے شوٹنگ اسٹار سمجھا جاتا ہے۔
شناخت شدہ شکلوں کی اضافی تصدیق ، شکلوں کی تکمیل کی ضرورت ہے ((جسمانی حصہ کھلنے کی قیمت سے زیادہ یا کم ہے) ، اور غیر تصدیق شدہ کے لائنوں کے لئے۔
داخلے کے بعد اسٹاپ اور اسٹاپ سیٹ کریں ، اسٹاپ اے ٹی آر کے ایک خاص ضرب ہے ، اسٹاپ اسٹاپ نقصان کے خطرے سے متعلق منافع کا ضرب ہے۔
اس حکمت عملی میں اے ٹی آر اشارے اور فیبونیکی تکنیک کا استعمال کیا گیا ہے جس میں پیاز کی لکیروں اور فائرنگ کے ستاروں کی شکلوں کی شناخت کی گئی ہے ، جبکہ خطرے کو کنٹرول کرنے والے اشارے مرتب کیے گئے ہیں ، جو رجحانات کی تجارت کے عمومی اصولوں کے مطابق ہیں۔
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
اس کی بنیادی باتیں بہت سادہ ہیں اور اس کے نفاذ کو سمجھنے میں آسانی ہے۔
دن کے اندر مختصر مدت کی شکل کا استعمال کرتے ہوئے ، پوزیشن رکھنے کے لئے طویل انتظار کرنے کی ضرورت نہیں ، لچکدار۔
اے ٹی آر پیرامیٹرز کی ترتیب سے بہت زیادہ حالات کے خطرے پر قابو پایا جاسکتا ہے۔ مختلف اقسام کے لئے پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔
خطرہ کے منافع کے تناسب کے ساتھ ایک معقول اسٹاپ اسٹاپ نقصان کا تعین کرنے کے ساتھ ، خطرے کو کنٹرول کیا جاسکتا ہے۔
خود کار طریقے سے ٹریڈنگ سگنل براہ راست سٹاپ نقصانات کو صاف کرنے کے لئے منسلک ہیں، آپریشن آسان ہے.
مختلف اقسام کے لئے موزوں، عالمگیر
اس حکمت عملی کے کچھ خطرات بھی ہیں:
فارم ٹرانزیکشن میں ایک غلطی کی شرح موجود ہے اور اس پر مکمل طور پر انحصار نہیں کیا جاسکتا ہے۔
ٹرانزیکشن فیس کے بغیر، حقیقی منافع کم ہے.
ٹرانسمیشن کی شرح میں اضافے اور سلائڈ پوائنٹ کی قیمتوں میں اضافہ ہوسکتا ہے۔
اے ٹی آر پیرامیٹرز کی اصلاح تاریخی اعداد و شمار پر منحصر ہے ، اس بات کی ضمانت نہیں دی جاسکتی ہے کہ پیرامیٹرز ہمیشہ کے لئے لاگو ہوں گے۔
خود کار طریقے سے آرڈر کرنے کے لئے ، دوبارہ کوشش کرنے کا طریقہ کار ترتیب دیا جانا چاہئے۔
اسٹاپ نقصان کی غلط ترتیب سے زیادہ یا کم واپسی ہوسکتی ہے۔
اس حکمت عملی کو بہتر بنانے کے لئے مندرجہ ذیل نکات پر غور کیا جاسکتا ہے:
دیگر فلٹرنگ کے حالات کو شامل کریں ، جیسے ٹرانزیکشن حجم ، شکل کی کارکردگی کو بہتر بنائیں۔
ٹرانزیکشن فیس کی ترتیبات پر غور کریں اور سٹاپ نقصان کو بہتر بنائیں۔
متحرک طور پر اے ٹی آر پیرامیٹرز کو بہتر بنائیں تاکہ یہ مختلف حالات کے مطابق ہو۔
پیرامیٹرز کا اندازہ لگانا اور انفرادی پیرامیٹرز کو ترتیب دینا۔
خود کار طریقے سے دوبارہ جانچنے کے طریقہ کار کو بڑھانا اور انفرادی خطرے کو کم کرنا
مشین لرننگ سے شکل کی پہچان کی درستگی میں اضافہ۔
مزید منافع کو لاک کرنے کے لئے اسٹاپ نقصان کا سراغ لگانا شامل کریں۔
مجموعی طور پر ، اس تجارتی حکمت عملی میں عام طور پر استعمال ہونے والے تکنیکی اشارے ، اصولوں کو آسانی سے سمجھنے اور ان پر عمل درآمد کرنے کے لئے آسان ہے۔ پیرامیٹرز کی اصلاح اور خطرے پر قابو پانے کی صورت میں ، مستحکم منافع کی توقع کی جاسکتی ہے۔ تاہم ، تاجر کو خطرات سے آگاہ رہنے ، تجارت کی تعداد کو اعتدال پسند رکھنے اور ضرورت سے زیادہ شدت پسندی سے بچنے کی ضرورت ہے۔ یہ حکمت عملی بنیادی حکمت عملی ہے ، جس کی بنیاد پر توسیع کی جدت طرازی کی جاسکتی ہے ، جس سے تجارتی تاثیر کو ایک نئی اونچائی پر لے جایا جاسکتا ہے۔
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 2h
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/
// © ZenAndTheArtOfTrading / PineScriptMastery
// Last Updated: 28th April, 2021
// @version=4
strategy("Hammers & Stars Strategy [v1.0]", shorttitle="HSS[v1.0]", overlay=true)
// Get user input
atrMinFilterSize = input(title=">= ATR Filter", type=input.float, defval=0.0, minval=0.0, tooltip="Minimum size of entry candle compared to ATR", group="Strategy Settings")
atrMaxFilterSize = input(title="<= ATR Filter", type=input.float, defval=3.0, minval=0.0, tooltip="Maximum size of entry candle compared to ATR", group="Strategy Settings")
stopMultiplier = input(title="Stop Loss ATR", type=input.float, defval=1.0, tooltip="Stop loss multiplier (x ATR)", group="Strategy Settings")
rr = input(title="R:R", type=input.float, defval=1.0, tooltip="Risk:Reward profile", group="Strategy Settings")
fibLevel = input(title="Fib Level", type=input.float, defval=0.333, tooltip="Used to calculate upper/lower third of candle. (For example, setting it to 0.5 will mean hammers must close >= 50% mark of the total candle size)", group="Strategy Settings")
i_startTime = input(title="Start Date Filter", defval=timestamp("01 Jan 2000 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from", group="Strategy Settings")
i_endTime = input(title="End Date Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading", group="Strategy Settings")
oandaDemo = input(title="Use Oanda Demo?", type=input.bool, defval=false, tooltip="If turned on then oandapractice broker prefix will be used for AutoView alerts (demo account). If turned off then live account will be used", group="AutoView Oanda Settings")
limitOrder = input(title="Use Limit Order?", type=input.bool, defval=true, tooltip="If turned on then AutoView will use limit orders. If turned off then market orders will be used", group="AutoView Oanda Settings")
gtdOrder = input(title="Days To Leave Limit Order", type=input.integer, minval=0, defval=2, tooltip="This is your GTD setting (good til day)", group="AutoView Oanda Settings")
accountBalance = input(title="Account Balance", type=input.float, defval=1000.0, step=100, tooltip="Your account balance (used for calculating position size)", group="AutoView Oanda Settings")
accountCurrency = input(title="Account Currency", type=input.string, defval="USD", options=["AUD", "CAD", "CHF", "EUR", "GBP", "JPY", "NZD", "USD"], tooltip="Your account balance currency (used for calculating position size)", group="AutoView Oanda Settings")
riskPerTrade = input(title="Risk Per Trade %", type=input.float, defval=2.0, step=0.5, tooltip="Your risk per trade as a % of your account balance", group="AutoView Oanda Settings")
// Set up AutoView broker prefix
var broker = oandaDemo ? "oandapractice" : "oanda"
// See if this bar's time happened within date filter
dateFilter = true
// Get ATR
atr = atr(14)
// Check ATR filter
atrMinFilter = abs(high - low) >= (atrMinFilterSize * atr) or atrMinFilterSize == 0.0
atrMaxFilter = abs(high - low) <= (atrMaxFilterSize * atr) or atrMaxFilterSize == 0.0
atrFilter = atrMinFilter and atrMaxFilter
// Calculate 33.3% fibonacci level for current candle
bullFib = (low - high) * fibLevel + high
bearFib = (high - low) * fibLevel + low
// Determine which price source closes or opens highest/lowest
lowestBody = close < open ? close : open
highestBody = close > open ? close : open
// Determine if we have a valid setup
validHammer = lowestBody >= bullFib and atrFilter and close != open and not na(atr)
validStar = highestBody <= bearFib and atrFilter and close != open and not na(atr)
// Check if we have confirmation for our setup
validLong = validHammer and strategy.position_size == 0 and dateFilter and barstate.isconfirmed
validShort = validStar and strategy.position_size == 0 and dateFilter and barstate.isconfirmed
//------------- DETERMINE POSITION SIZE -------------//
// Get account inputs
var tradePositionSize = 0.0
var pair = syminfo.basecurrency + "/" + syminfo.currency
// Check if our account currency is the same as the base or quote currency (for risk $ conversion purposes)
accountSameAsCounterCurrency = accountCurrency == syminfo.currency
accountSameAsBaseCurrency = accountCurrency == syminfo.basecurrency
// Check if our account currency is neither the base or quote currency (for risk $ conversion purposes)
accountNeitherCurrency = not accountSameAsCounterCurrency and not accountSameAsBaseCurrency
// Get currency conversion rates if applicable
conversionCurrencyPair = accountSameAsCounterCurrency ? syminfo.tickerid : accountNeitherCurrency ? accountCurrency + syminfo.currency : accountCurrency + syminfo.currency
conversionCurrencyRate = security(symbol=syminfo.type == "forex" ? "BTC_USDT:swap" : "BTC_USDT:swap", resolution="D", expression=close)
// Calculate position size
getPositionSize(stopLossSizePoints) =>
riskAmount = (accountBalance * (riskPerTrade / 100)) * (accountSameAsBaseCurrency or accountNeitherCurrency ? conversionCurrencyRate : 1.0)
riskPerPoint = (stopLossSizePoints * syminfo.pointvalue)
positionSize = (riskAmount / riskPerPoint) / syminfo.mintick
round(positionSize)
// Custom function to convert pips into whole numbers
toWhole(number) =>
return = atr(14) < 1.0 ? (number / syminfo.mintick) / (10 / syminfo.pointvalue) : number
return := atr(14) >= 1.0 and atr(14) < 100.0 and syminfo.currency == "JPY" ? return * 100 : return
//------------- END POSITION SIZE CODE -------------//
// Calculate our stop distance & size for the current bar
stopSize = atr * stopMultiplier
longStopPrice = low < low[1] ? low - stopSize : low[1] - stopSize
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rr)
shortStopPrice = high > high[1] ? high + stopSize : high[1] + stopSize
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rr)
// Save trade stop & target & position size if a valid setup is detected
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
// Set up our GTD (good-til-day) order info
gtdTime = time + (gtdOrder * 1440 * 60 * 1000) // 86,400,000ms per day
gtdYear = year(gtdTime)
gtdMonth = month(gtdTime)
gtdDay = dayofmonth(gtdTime)
gtdString = " dt=" + tostring(gtdYear) + "-" + tostring(gtdMonth) + "-" + tostring(gtdDay)
// Detect valid long setups & trigger alert
if validLong
tradeStopPrice := longStopPrice
tradeTargetPrice := longTargetPrice
tradePositionSize := getPositionSize(toWhole(longStopDistance) * 10)
// Trigger AutoView long alert
alert(message="e=" + broker + " b=long q="
+ tostring(tradePositionSize)
+ " s=" + pair
+ " t=" + (limitOrder ? "limit fp=" + tostring(close) : "market")
+ " fsl=" + tostring(tradeStopPrice)
+ " ftp=" + tostring(tradeTargetPrice)
+ (gtdOrder != 0 and limitOrder ? gtdString : ""),
freq=alert.freq_once_per_bar_close)
// Detect valid short setups & trigger alert
if validShort
tradeStopPrice := shortStopPrice
tradeTargetPrice := shortTargetPrice
tradePositionSize := getPositionSize(toWhole(shortStopDistance) * 10)
// Trigger AutoView short alert
alert(message="e=" + broker + " b=short q="
+ tostring(tradePositionSize)
+ " s=" + pair
+ " t=" + (limitOrder ? "limit fp=" + tostring(close) : "market")
+ " fsl=" + tostring(tradeStopPrice)
+ " ftp=" + tostring(tradeTargetPrice)
+ (gtdOrder != 0 and limitOrder ? gtdString : ""),
freq=alert.freq_once_per_bar_close)
// Enter trades whenever a valid setup is detected
strategy.entry(id="Long", long=strategy.long, when=validLong)
strategy.entry(id="Short", long=strategy.short, when=validShort)
// Exit trades whenever our stop or target is hit
strategy.exit(id="Long Exit", from_entry="Long", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size < 0)
// Draw trade data
plot(strategy.position_size != 0 or validLong or validShort ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validLong or validShort ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validLong or validShort ? tradePositionSize : na, color=color.purple, transp=100, title="AutoView Position Size")
// Draw price action setup arrows
plotshape(validLong ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup")
plotshape(validShort ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")