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

مصنف:چاؤ ژانگ، تاریخ: 2024-02-06 11:51:14
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کے اہم اقدامات یہ ہیں:

  1. سب سے زیادہ اور سب سے کم قیمت کا فیصلہ کریں: کسی خاص سائیکل (مثال کے طور پر 20 بار) کے دوران سب سے زیادہ اور سب سے کم قیمتوں کا سراغ لگائیں تاکہ یہ معلوم کیا جاسکے کہ آیا نئی اعلی یا کم حد تک پہنچ گیا ہے۔

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

  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")

مزید