وسائل لوڈ ہو رہے ہیں... لوڈنگ...

چلتی اوسط اور موم بتی کے نمونوں کے ساتھ رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-02 17:53:43
ٹیگز:

img

جائزہ

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

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

یہ حکمت عملی قیمت کے رجحان کا تعین کرنے کے لئے 10 دن کی سادہ چلتی اوسط کو اپناتی ہے۔ جب قیمت چلتی اوسط سے اوپر ہوتی ہے تو اسے اپ ٹرینڈ سمجھا جاتا ہے۔ جب قیمت چلتی اوسط سے نیچے ہوتی ہے تو اسے ڈاؤن ٹرینڈ سمجھا جاتا ہے۔

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

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

فوائد

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

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

خطرات

اس حکمت عملی کے اہم خطرات چلتی اوسط پیرامیٹر کی ترتیبات اور موم بتی پیٹرن کے فیصلے کی درستگی میں ہیں۔ اگر چلتی اوسط مدت غلط طریقے سے طے کی جاتی ہے تو ، اس سے غلط رجحان کا تعین ہوگا؛ اگر موم بتی پیٹرن کے فیصلے میں غلطیاں ہیں تو ، اس سے غلط تجارتی فیصلے بھی ہوں گے۔

اس کے علاوہ ، الٹ پلٹ موم بتی کے پیٹرن 100٪ یقین کے ساتھ رجحان کی الٹ کی ضمانت نہیں دے سکتے ہیں ، لہذا حکمت عملی میں ابھی بھی کچھ خطرات موجود ہیں۔ جب مارکیٹ بڑی الٹ دیکھتی ہے تو ، یہ حکمت عملی میں زیادہ نقصانات لا سکتی ہے۔

اصلاح کی ہدایات

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

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

نتیجہ

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following Strategy with Candlestick Patterns", overlay=true)

// Moving Average
ma_period = input(10, title="Moving Average Period")
moving_average = ta.sma(close, ma_period)

// Candlestick Patterns
// Custom Function
abs(x) => x >= 0 ? x : -x

// Candlestick Patterns
isDoji() =>
    (close - open) <= (high - low) * 0.1

isMarubozuWhite() =>
    close == high and open == low and close > open

isHammer() =>
    (high - low) >= 3 * abs(open - close) and (close - low) / (0.001 + high - low) > 0.6 and (open - low) / (0.001 + high - low) > 0.6

isInvertedHammer() =>
    (high - low) >= 3 * abs(open - close) and (high - close) / (0.001 + high - low) > 0.6 and (high - open) / (0.001 + high - low) > 0.6

isLongLowerShadow() =>
    (low - close) > 2 * abs(open - close) and (low - open) / (0.001 + high - low) > 0.6

isUpsideTasukiGap() =>
    close[1] < open[1] and open > close and open > close[1] and close < open[1]

isRisingWindow() =>
    high[1] < low and close > open

isPiercing() =>
    close[1] < open[1] and close > open and close > ((open + low) / 2) and close < open[1] and open < close[1]

isBullishEngulfing() =>
    close[1] < open[1] and close > open and high > high[1] and low < low[1]

isTweezerBottom() =>
    low == ta.valuewhen(low == ta.lowest(low, 10), low, 0) and low == ta.valuewhen(low == ta.lowest(low, 20), low, 0)

isBullishAbandonedBaby() =>
    close[2] < open[2] and close[1] > open[1] and low[1] > ta.valuewhen(high == ta.highest(high, 2), high, 0) and open > close and close > ta.valuewhen(high == ta.highest(high, 2), high, 0)

isMorningStar() =>
    close[2] < open[2] and close[1] < open[1] and close > open[1] and open < close[2] and open > close[1]

isMorningDojiStar() =>
    close[2] < open[2] and close[1] < open[1] and isDoji() and close > open[1] and open < close[2] and open > close[1]

isDragonflyDoji() =>
    isDoji() and (high - close) / (0.001 + high - low) < 0.1 and (open - low) / (0.001 + high - low) > 0.6

isThreeWhiteSoldiers() =>
    close[2] < open[2] and close[1] < open[1] and close > open and open < close[2] and open < close[1] and close > open[1]

isRisingThreeMethods() =>
    close[4] < open[4] and close[1] < open[1] and close > open and open < close[4] and open < close[1] and close > open[1]

isMarubozuBlack() =>
    close == low and open == high and open > close

isGravestoneDoji() =>
    isDoji() and (close - low) / (0.001 + high - low) < 0.1 and (high - open) / (0.001 + high - low) > 0.6

isHangingMan() =>
    (high - low) >= 4 * abs(open - close) and (open - close) / (0.001 + high - low) > 0.6 and (high - open) / (0.001 + high - low) > 0.6

isLongUpperShadow() =>
    (high - open) > 2 * abs(open - close) and (high - close) / (0.001 + high - low) > 0.6

isDownsideTasukiGap() =>
    close[1] > open[1] and open < close and open < close[1] and close > open[1]

isFallingWindow() =>
    low[1] > high and close < open

isDarkCloudCover() =>
    close[1] > open[1] and close < open and close < ((open + high) / 2) and close > open[1] and open > close[1]

isBearishEngulfing() =>
    close[1] > open[1] and close < open and high > high[1] and low < low[1]

isTweezerTop() =>
    high == ta.valuewhen(high == ta.highest(high, 10), high, 0) and high == ta.valuewhen(high == ta.highest(high, 20), high, 0)

isAbandonedBaby() =>
    close[2] > open[2] and close[1] < open[1] and high[1] < ta.valuewhen(low == ta.lowest(low, 2), low, 0) and open < close and close < ta.valuewhen(low == ta.lowest(low, 2), low, 0)

isEveningDojiStar() =>
    close[2] > open[2] and close[1] > open[1] and isDoji() and close < open[1] and open > close[2] and open < close[1]

isEveningStar() =>
    close[2] > open[2] and close[1] > open[1] and close < open[1] and open > close[2] and open < close[1]

isThreeBlackCrows() =>
    close[2] > open[2] and close[1] > open[1] and close < open and open > close[2] and open > close[1] and close < open[1]

isFallingThreeMethods() =>
    close[4] > open[4] and close[1] > open

isShootingStar() =>
    (high - low) >= 3 * abs(open - close) and (high - close) / (0.001 + high - low) > 0.6 and (high - open) / (0.001 + high - low) > 0.6

doji = isDoji()
marubozuWhite = isMarubozuWhite()
hammer = isHammer()
invertedHammer = isInvertedHammer()
longLowerShadow = isLongLowerShadow()
upsideTasukiGap = isUpsideTasukiGap()
risingWindow = isRisingWindow()
piercing = isPiercing()
bullishEngulfing = isBullishEngulfing()
tweezerBottom = isTweezerBottom()
bullishAbandonedBaby = isBullishAbandonedBaby()
morningStar = isMorningStar()
morningDojiStar = isMorningDojiStar()
dragonflyDoji = isDragonflyDoji()
threeWhiteSoldiers = isThreeWhiteSoldiers()
risingThreeMethods = isRisingThreeMethods()
marubozuBlack = isMarubozuBlack()
gravestoneDoji = isGravestoneDoji()
hangingMan = isHangingMan()
longUpperShadow = isLongUpperShadow()
downsideTasukiGap = isDownsideTasukiGap()
fallingWindow = isFallingWindow()
darkCloudCover = isDarkCloudCover()
bearishEngulfing = isBearishEngulfing()
tweezerTop = isTweezerTop()
abandonedBaby = isAbandonedBaby()
eveningDojiStar = isEveningDojiStar()
eveningStar = isEveningStar()
threeBlackCrows = isThreeBlackCrows()
fallingThreeMethods = isFallingThreeMethods()
shootingStar = isShootingStar()
isBullishPattern() =>
    (isMarubozuWhite() or isHammer() or isInvertedHammer() or isDoji() or isMorningStar() or isBullishEngulfing() or isThreeWhiteSoldiers() or isMarubozuBlack() or isHangingMan() or isDownsideTasukiGap() or isDarkCloudCover())

isBearishPattern() =>
    (isMarubozuBlack() or isInvertedHammer() or isLongUpperShadow() or isTweezerTop() or isGravestoneDoji() or isEveningStar() or isBearishEngulfing() or isThreeBlackCrows() or isShootingStar())

isBullishCandle = isBullishPattern()
isBearishCandle = isBearishPattern()

// Calculate Pivot Points
pivotPoint(high, low, close) =>
    (high + low + close) / 3

r1 = pivotPoint(high[1], low[1], close[1]) * 2 - low[1]
s1 = pivotPoint(high[1], low[1], close[1]) * 2 - high[1]

r2 = pivotPoint(high[1], low[1], close[1]) + (high[1] - low[1])
s2 = pivotPoint(high[1], low[1], close[1]) - (high[1] - low[1])

r3 = high[1] + 2 * (pivotPoint(high[1], low[1], close[1]) - low[1])
s3 = low[1] - 2 * (high[1] - pivotPoint(high[1], low[1], close[1]))
// Trend Identification
is_uptrend = close > moving_average
is_downtrend = close < moving_average
// Entry and Exit Conditions with Trend Identification
enterLong = is_uptrend and isBullishCandle and close > r1
exitLong = is_uptrend and (bearishEngulfing or doji or close < s1)

enterShort = is_downtrend and isBearishCandle and close < s1
exitShort = is_downtrend and (bullishEngulfing or doji or close > r1)



// Strategy Execution
if enterLong and strategy.position_size == 0 and strategy.position_size[1] == 0 and close > r1
    strategy.entry("Buy", strategy.long, qty=1)

if exitLong and strategy.position_size > 0
    strategy.close("Buy")

if enterShort and strategy.position_size == 0 and close < s1
    strategy.entry("Sell", strategy.short, qty=1)

if exitShort and strategy.position_size < 0
    strategy.close("Sell")


// Stop-Loss and Trailing Stop-Loss
stop_loss_pct = input(2.0, title="Stop Loss Percentage")
trailing_stop_loss_pct = input(1.0, title="Trailing Stop Loss Percentage")
trailing_stop_loss_active = input(true, title="Trailing Stop Loss Active")

// Stop-Loss
stop_loss_level = strategy.position_avg_price * (1 - stop_loss_pct / 100)
strategy.exit("Stop Loss", "Buy", loss=stop_loss_level)

// Trailing Stop-Loss


// Plotting Moving Average
plot(moving_average, color=color.blue, title="Moving Average", linewidth=2)

// Plotting Candlestick Patterns
plotshape(isBullishCandle, title="Bullish Candle", location=location.belowbar, color=color.green, style=shape.labelup)
plotshape(isBearishCandle, title="Bearish Candle", location=location.abovebar, color=color.red, style=shape.labeldown)

// Plotting Support and Resistance Levels
//hline(r1, "Resistance Level 1", color=color.red, linestyle=hline.style_dotted)
//hline(s1, "Support Level 1", color=color.green, linestyle=hline.style_dotted)


مزید