ہل موونگ ایوریج بیلنس ٹریکنگ حکمت عملی کا استعمال


تخلیق کی تاریخ: 2023-12-29 16:26:49 آخر میں ترمیم کریں: 2023-12-29 16:26:49
کاپی: 2 کلکس کی تعداد: 589
1
پر توجہ دیں
1621
پیروکار

ہل موونگ ایوریج بیلنس ٹریکنگ حکمت عملی کا استعمال

جائزہ

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

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

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

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

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

طاقت کا تجزیہ

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

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

خطرے کا تجزیہ

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

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

اصلاح کی سمت

مساوات سے باخبر رہنے کی حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Milleman
//@version=4
strategy("MilleMachine", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.06)


// Additional settings
Mode = input(title="Mode", defval="LongShort", options=["LongShort", "OnlyLong", "OnlyShort","Indicator Mode"])
UseTP = false                               //input(false, title="Use Take Profit?")
QuickSwitch = true                          //input(true, title="Quickswitch")
UseTC = true                                //input(true, title="Use Trendchange?")

// Risk management settings
//Spacer2 = input(false, title="======= Risk management settings =======")
Risk = input(1.0, title="% Risk",minval=0)/100
RRR = 2                                     //input(2,title="Risk Reward Ratio",step=0.1,minval=0,maxval=20)
SL_Mode = false                             // input(true, title="ON = Fixed SL / OFF = Dynamic SL (ATR)")
SL_Fix = 3                                  //input(3,title="StopLoss %",step=0.25, minval=0)/100
ATR = atr(14)                               //input(14,title="Periode ATR"))
Mul = input(2,title="ATR Multiplier",step=0.1)
xATR = ATR * Mul
SL = SL_Mode ? SL_Fix : (1 - close/(close+xATR))

// INDICATORS  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ind(type, src, len) =>
    float result = 0
    if type=="McGinley"
        result := na(result[1]) ? ema(src, len) : result[1] + (src - result[1]) / (len * pow(src/result[1], 4))
    if type=="HMA"
        result := wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    if type=="EHMA"
        result := ema(2*ema(src, len/2)-ema(src, len), round(sqrt(len)))
    if type=="THMA"
        lend = len/2
        result := wma(wma(src, lend/3)*3-wma(src, lend/2)-wma(src,lend), lend)
    if type=="SMA" // Simple
        result := sma(src, len)
    if type=="EMA" // Exponential
        result := ema(src, len)
    if type=="DEMA" // Double Exponential
        e = ema(src, len)
        result := 2 * e - ema(e, len)
    if type=="TEMA" // Triple Exponential
        e = ema(src, len)
        result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)
    if type=="WMA" // Weighted
        result := wma(src, len)
    if type=="VWMA" // Volume Weighted
        result := vwma(src, len) 
    if type=="SMMA" // Smoothed
        w = wma(src, len)
        result := (w[1] * (len - 1) + src) / len
    if type == "RMA"
        result := rma(src, len)
    if type=="LSMA" // Least Squares
        result := linreg(src, len, 0)
    if type=="ALMA" // Arnaud Legoux
        result := alma(src, len, 0.85, 6)
    if type=="Kijun" //Kijun-sen
        kijun = avg(lowest(len), highest(len))
        result :=kijun
    if type=="WWSA" // Welles Wilder Smoothed Moving Average
        result := nz(result[1]) + (close -nz(result[1]))/len
    result

// Baseline : Switch from Long to Short and vice versa
BL_Act = input(true, title="====== Activate Baseline - Switch L/S ======")
BL_type = input(title="Baseline Type", defval="McGinley", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
BL_src = input(close, title="BL source")
BL_len = input(50, title="BL length", minval=1)
BL = Ind(BL_type,BL_src, BL_len)

// Confirmation indicator
C1_Act = input(false, title="===== Activate Confirmation indicator =====")
C1_type = input(title="C1 Entry indicator", defval="SMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
C1_src = input(close, title="Source")
C1_len = input(5,title="Length", minval=1)
C1 = Ind(C1_type,C1_src,C1_len)

// Entry indicator : Hull Moving Average
Spacer5 = input(true, title="====== ENTRY indicator =======")
EI_type = input(title="EI Entry indicator", defval="HMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
EI_src = input(close, title="Source")
EI_Len = input(46,title="Length", minval=1)
EI = Ind(EI_type,EI_src,EI_Len)

// Trail stop settings
TrailActivation = input(true, title="===== Activate Trailing Stop =====")
TS_type = input(title="TS Traling Stop Type", defval="EMA", options=["McGinley","HMA","EHMA","THMA","SMA","EMA","DEMA","TEMA","WMA","VWMA","SMMA","RMA","LSMA","ALMA","Kijun","WWSA"])
TrailSLScaling = 1 //input(100, title="SL Scaling", minval=0, step=5)/100
TrailingSourceLong = Ind(TS_type,low,input(5,"Smoothing Trail Long EMA", minval=1))
TrailingSourceShort = Ind(TS_type,high,input(2,"Smoothing Trail Short EMA", minval=1))

//VARIABLES MANAGEMENT
TriggerPrice = 0.0, TriggerPrice := TriggerPrice[1]
TriggerSL = 0.0, TriggerSL := TriggerSL[1]
SLPrice = 0.0, SLPrice := SLPrice[1], TPPrice = 0.0, TPPrice := TPPrice[1]
isLong = false, isLong := isLong[1], isShort = false, isShort := isShort[1]

//LOGIC
GoLong = crossover(EI,EI[1]) and (strategy.position_size == 0.0 and QuickSwitch) and (not BL_Act or BL/BL[1] > 1) and (not C1_Act or C1>C1[1]) and (Mode == "LongShort" or Mode == "OnlyLong")
GoShort = crossunder(EI,EI[1]) and (strategy.position_size == 0.0 and QuickSwitch) and (not BL_Act or BL/BL[1] < 1) and (not C1_Act or C1<C1[1]) and (Mode == "LongShort" or Mode == "OnlyShort")
ExitLong = isLong and crossunder(EI,EI[1]) and UseTC
ExitShort = isShort and crossover(EI,EI[1]) and UseTC

//FRAMEWORK
//Reset Long-Short memory
if isLong and strategy.position_size == 0.0
    isLong := false
if isShort and strategy.position_size == 0.0
    isShort := false
//Long
if GoLong
    isLong := true, TriggerPrice := close, TriggerSL := SL
    TPPrice := UseTP? TriggerPrice * (1 + (TriggerSL * RRR)) : na
    SLPrice := TriggerPrice * (1-TriggerSL)
    Entry_Contracts = strategy.equity * Risk / ((TriggerPrice-SLPrice)/TriggerPrice) / TriggerPrice
    strategy.entry("Long", strategy.long, comment=tostring(round((TriggerSL/TriggerPrice)*1000)), qty=Entry_Contracts)
    strategy.exit("TPSL","Long", limit=TPPrice, stop=SLPrice)
if isLong
    NewValSL = TrailingSourceLong * (1 - (SL*TrailSLScaling))
    if TrailActivation and NewValSL > SLPrice
        SLPrice := NewValSL
    strategy.exit("TPSL","Long", limit=TPPrice, stop=SLPrice)
if ExitLong
    strategy.close_all(comment="TrendChange")
    isLong := false

//Short
if GoShort
    isShort := true, TriggerPrice := close, TriggerSL := SL
    TPPrice := UseTP? TriggerPrice * (1 - (TriggerSL * RRR)) : na
    SLPrice := TriggerPrice * (1 + TriggerSL)
    Entry_Contracts = strategy.equity * Risk / ((SLPrice-TriggerPrice)/TriggerPrice) / TriggerPrice
    strategy.entry("Short", strategy.short, comment=tostring(round((TriggerSL/TriggerPrice)*1000)), qty=Entry_Contracts)
    strategy.exit("TPSL","Short", limit=TPPrice, stop=SLPrice)
if isShort
    NewValSL = TrailingSourceShort * (1 + (SL*TrailSLScaling))
    if TrailActivation and NewValSL < SLPrice
        SLPrice := NewValSL
    strategy.exit("TPSL","Short", limit=TPPrice, stop=SLPrice)
if ExitShort
    strategy.close_all(comment="TrendChange")
    isShort := false

//VISUALISATION
plot(BL_Act?BL:na, color=color.blue,title="Baseline")
plot(C1_Act?C1:na, color=color.yellow,title="confirmation Indicator")
EIColor = EI>EI[1] ? color.green : color.red
Fill_EI = plot(EI, color=EIColor, linewidth=1, transp=40, title="Entry Indicator EI")
Fill_EID = plot(EI[1], color=EIColor, linewidth=1, transp=40, title="Entry Indicator EID")
fill(Fill_EI,Fill_EID, title="EI_Fill", color=EIColor,transp=50)

plot(strategy.position_size != 0.0 and (isLong or isShort) ? TriggerPrice : na, title="TriggerPrice", color=color.yellow, style=plot.style_linebr)
plot(strategy.position_size != 0.0 and (isLong or isShort) ? TPPrice : na, title="TakeProfit", color=color.green, style=plot.style_linebr)
plot(strategy.position_size != 0.0 and (isLong or isShort) ? SLPrice : na, title="StopLoss", color=color.red, style=plot.style_linebr)
bgcolor(isLong[1] and cross(low,SLPrice) and low[1] > SLPrice and TriggerPrice>SLPrice ? color.yellow : na, transp=75, title="SL Long")
bgcolor(isShort[1] and cross(high,SLPrice) and high[1] < SLPrice and TriggerPrice<SLPrice ? color.yellow : na, transp=75, title="SL Short")