ہیکن آشی پر مبنی سپر ٹرینڈ ٹریلنگ اسٹاپ حکمت عملی

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

img

حکمت عملی کا جائزہ

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

حکمت عملی منطق

  1. ہیکن آشی موم بتیوں کا حساب لگائیں: کھلی، بند، اعلی، کم قیمتیں.
  2. سپر ٹرینڈ اشارے کا حساب لگائیں: اوپری بینڈ اور نچلی بینڈ اے ٹی آر اور قیمت کی بنیاد پر۔
  3. ہیکن آشھی بند اور سپر ٹرینڈ بینڈ کو ملا کر رجحان کی سمت کا تعین کریں۔
  4. جب ہیکن آشی بند سپر ٹرینڈ کے اوپری بینڈ کے قریب آتا ہے تو ، یہ ایک اپ ٹرینڈ کا اشارہ کرتا ہے۔ جب ہیکن آشی بند سپر ٹرینڈ کے نچلے بینڈ کے قریب آتا ہے تو ، یہ ایک ڈاؤن ٹرینڈ کا اشارہ کرتا ہے۔
  5. اپ ٹرینڈز میں سپر ٹرینڈ اوپری بینڈ کو پیچھے چھوڑنے والے اسٹاپ نقصان کے طور پر استعمال کریں ، اور ڈاؤن ٹرینڈز میں نچلے بینڈ کا استعمال کریں۔

فوائد

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

خطرات

  1. رجحان کے الٹ جانے پر روکنے کے لئے تیار ہے۔ نقصان کو کم کرنے کے لئے اسٹاپ نقصان کو نرم کرسکتے ہیں۔
  2. سپر ٹرینڈ پیرامیٹرز کی غلط ترتیب سے اسٹاپ نقصان بہت وسیع یا بہت تنگ ہوسکتا ہے۔ پیرامیٹرز کی مکمل جانچ کی ضرورت ہے۔
  3. پوزیشن سائزنگ کو نظر انداز کرتا ہے۔ مناسب شرط سائز کنٹرول مقرر کرنا چاہئے.
  4. تجارت کے اخراجات کو نظر انداز کرتا ہے۔ اخراجات کا حساب لگانا چاہئے۔

بہتر مواقع

  1. بہترین کارکردگی کے لئے سپر ٹرینڈ پیرامیٹرز کو بہتر بنائیں.
  2. پوزیشن سائزنگ کنٹرول شامل کریں.
  3. کمیشن اور سلائڈ جیسے اخراجات کا حساب لگائیں۔
  4. رجحان کی طاقت کی بنیاد پر سٹاپ نقصان کو لچکدار طریقے سے ایڈجسٹ کریں۔
  5. داخلہ سگنلز کے لئے دوسرے اشارے کے ساتھ فلٹرز شامل کریں.

نتیجہ

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


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 4h
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/
// © ringashish

//@version=4
strategy("sa-strategy with HTF-TSL", overlay=true)


Pd = input(title="ATR Period", type=input.integer, defval=4)
Factor = input(title="ATR Multiplier", type=input.float, step=0.1, defval=2)
ST= supertrend(Factor, Pd)

heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_low = security(heikinashi(syminfo.tickerid), timeframe.period, low)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_high = security(heikinashi(syminfo.tickerid), timeframe.period, high)

heikinashi_close30 = security(heikinashi(syminfo.tickerid), "30", close)
//res1 = input("30", type=input.resolution, title="higher Timeframe")


//CCI TSL

res = input("240",type=input.resolution,title = "Higher Time Frame")
CCI = input(20)
ATR = input(5)
Multiplier=input(1,title='ATR Multiplier')
original=input(false,title='original coloring')
thisCCI = cci(close, CCI)
lastCCI = nz(thisCCI[1])


calcx()=> 
    bufferDn= high + Multiplier * sma(tr,ATR)
    bufferUp= low - Multiplier * sma(tr,ATR)
    if (thisCCI >= 0 and lastCCI < 0) 
        bufferUp := bufferDn[1]
    if (thisCCI <= 0 and lastCCI > 0) 
        bufferDn := bufferUp[1]

    if (thisCCI >= 0)
        if (bufferUp < bufferUp[1])
            bufferUp := bufferUp[1]
    else
        if (thisCCI <= 0)
            if (bufferDn > bufferDn[1])
                bufferDn := bufferDn[1]

   
    x = 0.0
    x := thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
    x

tempx = calcx()

calcswap() =>
    swap = 0.0
    swap := tempx>tempx[1]?1:tempx<tempx[1]?-1:swap[1]
    swap

tempswap = calcswap()

swap2=tempswap==1?color.blue:color.orange
swap3=thisCCI >=0 ?color.blue:color.orange
swap4=original?swap3:swap2

//display current timeframe's Trend

plot(tempx,"CTF",color=swap4,transp=0,linewidth=2, style = plot.style_stepline)


htfx = security(syminfo.tickerid,res,tempx[1],lookahead = barmerge.lookahead_on)
htfswap4 = security(syminfo.tickerid,res,swap4[1],lookahead = barmerge.lookahead_on)

plot(htfx,"HTF",color=htfswap4,transp=0,linewidth=3,style = plot.style_stepline)









//supertrend
Supertrend(Factor, Pd) =>
    Up=hl2-(Factor*atr(Pd))
    Dn=hl2+(Factor*atr(Pd))
    
    TrendUp = 0.0
    TrendUp := heikinashi_close[1]>TrendUp[1] ? max(Up,TrendUp[1]) : Up
    TrendDown = 0.0
    TrendDown := heikinashi_close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
    Trend = 0.0
    Trend := heikinashi_close > TrendDown[1] ? 1: heikinashi_close< TrendUp[1]? -1: nz(Trend[1],1)
    Tsl = Trend==1? TrendUp: TrendDown
    
    S_Buy = Trend == 1 ? 1 : 0
    S_Sell = Trend != 1 ? 1 : 0
    
    [Trend, Tsl]

[Trend,Tsl] = Supertrend(Factor, Pd)
// Security
//ST1_Trend_MTF = security(syminfo.tickerid, res1, Tsl,barmerge.lookahead_on)
//plot(ST1_Trend_MTF, "higher ST") 

crossdn = crossunder(heikinashi_close,Tsl) or crossunder(heikinashi_close[1],Tsl) or crossunder(heikinashi_close[2],Tsl) or heikinashi_close < Tsl
crossup = crossover(heikinashi_close,Tsl) or crossover(heikinashi_close[1],Tsl) or crossover(heikinashi_close[2],Tsl) or heikinashi_close > Tsl
plot(Tsl,"ST",color = color.black,linewidth =2)
plot(ema(heikinashi_close,20),"EMA 20",color=color.red)
plot(hma(heikinashi_close,15),"HMA 15",color=color.green)
plot(ema(heikinashi_close,15),"EMA 15",color=color.black)

closedown = (heikinashi_close < hma(heikinashi_close,15) and heikinashi_high > hma(heikinashi_close,15)) or(heikinashi_close < ema(heikinashi_close,20) and heikinashi_high > ema(heikinashi_close,20))
closeup = (heikinashi_close > hma(heikinashi_close,15) and heikinashi_low < hma(heikinashi_close,15)) or (heikinashi_close > ema(heikinashi_close,20) and heikinashi_low < ema(heikinashi_close,20))

buy = heikinashi_open == heikinashi_low and closeup and crossup  and close > htfx
//buy = heikinashi_open == heikinashi_low and heikinashi_close > ema(close,20) and heikinashi_low < ema(close,20) and crossup
buyexit = cross(close,tempx) //heikinashi_open == heikinashi_high //and heikinashi_close < ema(close,15) and heikinashi_high > ema(close,15)

//if heikinashi_close30[1] < ST1_Trend_MTF
//sell = heikinashi_open == heikinashi_high and heikinashi_close < ema(close,20) and heikinashi_high > ema(close,20) and rsi(close,14)<60 and crossdn
sell = heikinashi_open == heikinashi_high and closedown and rsi(close,14)<55 and crossdn  and close < htfx
sellexit = cross(close,tempx) //heikinashi_open == heikinashi_low //and heikinashi_close > ema(close,15) and heikinashi_low < ema(close,15)

rg = 0
rg := buy ? 1 : buyexit ? 2 : nz(rg[1])

longLogic = rg != rg[1] and rg == 1 
longExit = rg != rg[1] and rg == 2 

//plotshape(longExit,"exit buy",style = shape.arrowup,location = location.belowbar,color = color.red, text ="buy exit", textcolor = color.red)
//plotshape(longLogic,"BUY",style = shape.arrowup,location = location.belowbar,color = color.green, text ="buy", textcolor= color.green)

nm = 0
nm := sell ? 1 : sellexit ? 2 : nz(nm[1])

shortLogic = nm != nm[1] and nm == 1 
shortExit = nm != nm[1] and nm == 2 

//plotshape(shortExit,"exit sell",style = shape.arrowup,location = location.belowbar,color = color.red, text ="sell exit", textcolor = color.red)
//plotshape(shortLogic,"SELL",style = shape.arrowup,location = location.belowbar,color = color.green, text ="sell", textcolor= color.green)


//Exit at particular time

ExitHour = input(title="Exit Hour Of Day", type=input.integer, defval=15, step = 5, maxval = 24, minval = 0)
ExitMint = input(title="Exit Minute Of Day", type=input.integer, defval=15, step = 5, maxval = 24, minval = 0)
bgc = input(title="Highlight Background Color?", type=input.bool, defval=true)
mRound(num,rem) => (floor(num/rem)*rem)
exitTime = (hour(time) >= ExitHour and (minute == mRound(ExitMint, timeframe.multiplier))) ? 1 : 0
exitTime := exitTime == 0 ? (hour(time) >= ExitHour and (minute + timeframe.multiplier >= ExitMint)) ? 1 : 0 : exitTime

MarketClose =  exitTime and not exitTime[1]

alertcondition(exitTime and not exitTime[1], title="Intraday Session Close Time", message="Close All Positions")
bgcolor(exitTime and not exitTime[1] and bgc ? #445566 : na, transp =40)



longCondition = longLogic
if (longCondition)
    strategy.entry("long", strategy.long)
 
    


shortCondition = shortLogic
if (shortCondition)
    strategy.entry("short", strategy.short)
    

strategy.close("short", when =cross(close,tempx)  or MarketClose)
strategy.close( "long", when =cross(close,tempx) or MarketClose ) 

مزید