متحرک ڈھلوان ٹرینڈ لائن ٹریڈنگ کی حکمت عملی


تخلیق کی تاریخ: 2024-02-06 11:51:14 آخر میں ترمیم کریں: 2024-02-06 11:51:14
کاپی: 10 کلکس کی تعداد: 754
1
پر توجہ دیں
1617
پیروکار

متحرک ڈھلوان ٹرینڈ لائن ٹریڈنگ کی حکمت عملی

جائزہ

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

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

اس حکمت عملی میں مندرجہ ذیل اہم اقدامات شامل ہیں:

  1. اعلی ترین اور کم ترین قیمتوں کا تعین: ایک مخصوص دورانیے میں اعلی ترین اور کم ترین قیمتوں کا تعین کریں (جیسے 20 K لائن) ، یہ فیصلہ کرنے کے لئے کہ آیا یہ ایک اعلی یا نئی کم ہے

  2. متحرک سلائڈ کا حساب لگائیں: جدت طرازی کی اونچائی یا نئی کم کی K لائن نمبرنگ کو ریکارڈ کریں ، جدت طرازی کی اونچائی یا کم سے ایک خاص دورانیے (جیسے 9 K لائن) کے بعد اونچائی یا کم کے متحرک سلائڈ کا حساب لگائیں

  3. ٹرینڈ لائنز کا نقشہ: متحرک سلپ کے مطابق اوپر اور نیچے کی ٹرینڈ لائنز کا نقشہ

  4. ٹرینڈ لائن کی توسیع اور تازہ کاری: جب قیمت ٹرینڈ لائن کو توڑتی ہے تو ٹرینڈ لائن کی توسیع اور تازہ کاری ہوتی ہے

  5. ٹریڈنگ سگنل: قیمتوں میں رجحان لائنوں کو توڑنے کے ساتھ ، اوور اور ڈور سگنل کا فیصلہ کرنا

اسٹریٹجک فوائد

اس حکمت عملی کے درج ذیل فوائد ہیں:

  1. رجحان کی سمت کا تعین کرنے کے لئے متحرک ، مارکیٹ میں تبدیلیوں کے لئے لچکدار

  2. معقول کنٹرول روکنے کے نقصانات، چھوٹا سا واپس لینے

  3. بریک ٹریڈنگ سگنل واضح اور آسان ہے

  4. اپنی مرضی کے مطابق پیرامیٹرز، لچکدار

  5. واضح کوڈ کی ساخت، آسانی سے سمجھنے اور دوبارہ استعمال کرنے کے لئے

خطرات اور حل

اس حکمت عملی کے کچھ خطرات بھی ہیں:

  1. رجحانات کے دوران فلٹرنگ کی شرائط شامل کرنے کی سفارش کی جاتی ہے

  2. زیادہ ممکنہ طور پر جعلی سگنل کو توڑنا ، پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کرنا یا فلٹرنگ کی شرائط شامل کرنا

  3. اسٹاپ نقصان کا خطرہ ، جس سے معاملات میں تیزی سے تبدیلی کا خطرہ بڑھ سکتا ہے

  4. محدود اصلاح کی گنجائش ، مختصر لائن تجارت کے لئے محدود منافع بخش

اصلاح کی سمت

اس حکمت عملی میں بہتری لانے کے لیے کچھ نکات یہ ہیں:

  1. مزید تکنیکی اشارے شامل کریں تاکہ فلٹرنگ سگنل کا اندازہ لگایا جا سکے۔

  2. پیرامیٹرز کے مجموعے کو بہتر بنانے کے لئے، بہترین پیرامیٹرز تلاش کریں

  3. نقصانات کو روکنے کے لئے حکمت عملی کو بہتر بنانے اور خطرے کو کم کرنے کی کوشش

  4. خود کار طریقے سے انٹری کی شدت کو ایڈجسٹ کرنے کے لئے شامل کریں

  5. دیگر حکمت عملیوں کے ساتھ مل کر مزید مواقع تلاش کرنے کی کوشش کریں

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-06 00:00:00
end: 2024-01-19 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/
// © pune3tghai

//Originally posted by matsu_bitmex

//tried adding alerts on plots and cleared the chart for a cleaner view.
//Publishing the script in hope of getting it improved by someone else.

//Added strategy code for easier calculations

//Needs work on TP and SL part.

//P.S - THE ORIGINAL CODE IS MUCH BETTER BUT I have tried to be more usable and understandable.

//@version=4
strategy("TrendLines with Alerts", overlay=true)     //study("TrendLines with Alerts", overlay=true)
//update

length1 = input(20)
check = input(9)
//length2 = input(200)


u=0.0
u := u[1]

l=0.0
l := l[1]

y=0.0
y := y[1]

yl=0.0
yl := yl[1]

angle = 0.0
angle := angle[1]

anglel = 0.0
anglel := anglel[1]

if (highest(length1) == high[check] and highest(length1) == highest(length1)[check] and barssince(barstate.isfirst) > check)
    u := high[check]

    
if (lowest(length1) == low[check] and lowest(length1) == lowest(length1)[check] and barssince(barstate.isfirst) > check)
    l := low[check]
    

    
p = round(barssince(u == high[check]))

pl = round(barssince(l == low[check]))

if p == 0 and barssince(barstate.isfirst) > check
    y := high[abs(p[1]+1+check)]
    
if pl == 0 and barssince(barstate.isfirst) > check
    yl := low[abs(pl[1]+1+check)]    
    

if p == 0
    angle := (u-y)/p[1]

if pl == 0
    anglel := (l-yl)/pl[1]

uppertrend = u+ (p * angle)

lowertrend = l+ (pl * anglel)

extendup = if barssince(barstate.isfirst) > check
    uppertrend[check] + angle[check] * check*2

extenddown = if barssince(barstate.isfirst) > check
    lowertrend[check] + anglel[check] * check*2




//plot(l[offset]-u,color=red)
//plot(u[offset]-l,color = green )
plot(lowertrend, color = color.green, transp=30,offset = -check)
plot(extenddown, color = color.green, transp=100)
plot(uppertrend, color = color.red, transp=30, offset = -check)
plot(extendup, color = color.red, transp=100)
//plot(l[offset], color = red)

l1 = lowertrend
l2 = extenddown
u1 = uppertrend
u2 = extendup



l2sell = crossunder(high, l2)
u2buy = crossover(low, u2)
buy1 = (low<=lowertrend) and open>lowertrend and high>lowertrend and close>lowertrend
buy2 = (low<=extenddown) and open>extenddown and high>extenddown and close>extenddown
buy = buy1 or buy2 or u2buy
plotshape(series=buy, title="Buy", style=shape.triangleup, size=size.tiny, color=color.lime, location=location.belowbar)
sell1 = (high>=uppertrend) and open<uppertrend and low<uppertrend and close<uppertrend
sell2 = (high>=extendup) and open<extendup and low<extendup and close<extendup
sell = sell1 or sell2 or l2sell
plotshape(series=sell, title="Sell", style=shape.triangledown, size=size.tiny, color=color.red, location=location.abovebar)

longCond = buy
shortCond = sell

tp = input(0.2, title="Take Profit")

tpbuyval = valuewhen(buy, close, 1) + (tp/100)*(valuewhen(buy, close, 1))
tpsellval = valuewhen(sell, close, 1) - (tp/100)*(valuewhen(sell, close, 1))


sl = input(0.2, title="Stop Loss")
slbuyval = valuewhen(buy, close, 0) - (sl/100)*(valuewhen(buy, close, 0))
slsellval = valuewhen(sell, close, 0) + (sl/100)*(valuewhen(sell, close, 0))
// === STRATEGY ===
tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

// stop loss
slPoints = input(defval=0, title="Initial Stop Loss Points (zero to disable)", minval=0)
tpPoints = input(defval=0, title="Initial Target Profit Points (zero for disable)", minval=0)

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//

testStartYear = input(2019, "Backtest Start Year", minval=1980)
testStartMonth = input(1, "Backtest Start Month", minval=1, maxval=12)
testStartDay = input(1, "Backtest Start Day", minval=1, maxval=31)
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, "Backtest Stop Year", minval=1980)
testStopMonth = input(12, "Backtest Stop Month", minval=1, maxval=12)
testStopDay = input(31, "Backtest Stop Day", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//

//
//set up exit parameters
TP = tpPoints > 0 ? tpPoints : na
SL = slPoints > 0 ? slPoints : na

// Make sure we are within the bar range, Set up entries and exit conditions
if testPeriod() and tradeType != "NONE"
    strategy.entry("long", strategy.long, when=longCond == true and tradeType != "SHORT")
    strategy.entry("short", strategy.short, when=shortCond == true and tradeType != "LONG")
    strategy.close("long", when=shortCond == true and tradeType == "LONG")
    strategy.close("short", when=longCond == true and tradeType == "SHORT")
    strategy.exit("XL", from_entry="long", profit=tpbuyval, loss=slbuyval)
    strategy.exit("XS", from_entry="short", profit=tpsellval, loss=slsellval)

// === /STRATEGY ===
//EOF


////ALERT SYNTEX
//alertcondition(longCond, title="Long", message="Killer Market")
//alertcondition(shortCond, title="Short", message="Poopy Market")