ایم اے کی طاقت کے رجحان کی پیچھا کرنے کی مقداری حکمت عملی

مصنف:چاؤ ژانگ
ٹیگز:

img

جائزہ

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

  1. صارفین سائیکل پیرامیٹرز کو تشکیل دے سکتے ہیں جیسے: قلیل مدتی ایم اے مجموعہ، طویل مدتی ایم اے مدت، داخلہ کی شرائط وغیرہ.

اس حکمت عملی کا بنیادی مقصد ایم اے اشارے کی لمبی / مختصر حالت کا تعین کرنا ہے ، جو ایم اے امتزاج کی اوسط طاقت کی عکاسی کرتا ہے۔ ایم اے امتزاج رجحان کا جامع اندازہ کرتا ہے ، جبکہ ایم اے اشارے مستقل مزاجی کا تعین کرتا ہے۔

فوائد کا تجزیہ

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

خطرے کا تجزیہ

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

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

نتیجہ


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("MA Strength Strategy", overlay=false, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)
MAType = input(title="Moving Average Type", defval="ema", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
LookbackPeriod = input(10, step=10)

IndexMAType = input(title="Moving Average Type", defval="hma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
IndexMAPeriod = input(200, step=10)

considerTrendDirection = input(true)
considerTrendDirectionForExit = input(true)
offset = input(1, step=1)
tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true

f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma
    

f_getMaAlignment(MAType, includePartiallyAligned)=>
    ma5 = f_getMovingAverage(close,MAType,5)
    ma10 = f_getMovingAverage(close,MAType,10)
    ma20 = f_getMovingAverage(close,MAType,20)
    ma30 = f_getMovingAverage(close,MAType,30)
    ma50 = f_getMovingAverage(close,MAType,50)
    ma100 = f_getMovingAverage(close,MAType,100)
    ma200 = f_getMovingAverage(close,MAType,200)

    upwardScore = 0.0
    upwardScore := close > ma5? upwardScore+1.10:upwardScore
    upwardScore := ma5 > ma10? upwardScore+1.10:upwardScore
    upwardScore := ma10 > ma20? upwardScore+1.10:upwardScore
    upwardScore := ma20 > ma30? upwardScore+1.10:upwardScore
    upwardScore := ma30 > ma50? upwardScore+1.15:upwardScore
    upwardScore := ma50 > ma100? upwardScore+1.20:upwardScore
    upwardScore := ma100 > ma200? upwardScore+1.25:upwardScore
    
    upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
    downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
    trendStrength = upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 6? 0.5: upwardScore < 2?-0.5:upwardScore>4?0.25:-0.25) : 0
    [trendStrength, upwardScore]
    
includePartiallyAligned = true
[trendStrength, upwardScore] = f_getMaAlignment(MAType, includePartiallyAligned)

upwardSum = sum(upwardScore, LookbackPeriod)

indexSma = f_getMovingAverage(upwardSum,IndexMAType,IndexMAPeriod)

plot(upwardSum, title="Moving Average Strength", color=color.green, linewidth=2, style=plot.style_linebr)
plot(indexSma, title="Strength MA", color=color.red, linewidth=1, style=plot.style_linebr)
buyCondition = crossover(upwardSum,indexSma) and (upwardSum > upwardSum[offset] or not considerTrendDirection) 
sellCondition = crossunder(upwardSum,indexSma) and (upwardSum < upwardSum[offset]  or not considerTrendDirection)

exitBuyCondition = crossunder(upwardSum,indexSma)
exitSellCondition = crossover(upwardSum,indexSma) 
strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when= inDateRange and buyCondition, oca_name="oca_buy")
strategy.close("Buy", when = considerTrendDirectionForExit? sellCondition : exitBuyCondition)
strategy.entry("Sell", strategy.short, when= inDateRange and sellCondition, oca_name="oca_sell")
strategy.close( "Sell", when = considerTrendDirectionForExit? buyCondition : exitSellCondition)


مزید