
یہ حکمت عملی متعدد وقت کی مدت کے لئے متحرک اوسط ((ما) کی طاقت اور کمزوری کا حساب لگاتی ہے ، مارکیٹ کے رجحان کی طاقت اور کمزوری کا اندازہ لگاتی ہے ، رجحانات کا فیصلہ کرنے اور اس کی پیروی کرنے کے لئے۔ جب قلیل مدتی ایم اے اشارے مسلسل بڑھتے ہیں تو ، اعلی اسکور کرتے ہیں ، اور ایک پوائنٹ ایم اے کی طاقت کا پوائنٹ بناتے ہیں۔ جب یہ اشارے اپنے طویل مدتی ایم اے سے زیادہ ہوتا ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔ حکمت عملی طویل مدتی ایم اے کے جوڑے کو تشکیل دے سکتی ہے ، اور مختلف رجحانات کا پیچھا کرتی ہے۔
یہ حکمت عملی بنیادی طور پر اوسط اشارے کی کثرت کا تعین کرتی ہے ، اور اوسط اشارے کے ذریعہ ایم اے لائن گروپ کی اوسط طاقت کا جواب دیتی ہے۔ ایم اے لائن گروپ رجحان کی سمت اور طاقت کا فیصلہ کرنے کے لئے مرکوز ہے ، اور اوسط اشارے اس کی تسلسل کا فیصلہ کرتے ہیں۔
اس حکمت عملی میں قیمتوں کے رجحانات کا اندازہ لگانے کے لئے ایم اے کی طاقت کے اشارے کا حساب لگایا جاتا ہے ، اور سگنل کے ذریعہ مساوی لائن کراسنگ کے ساتھ رجحانات کی پیروی کی جاتی ہے۔ حکمت عملی کا فائدہ یہ ہے کہ رجحان کی طاقت کا درست اندازہ لگایا جاسکتا ہے ، اعلی وشوسنییتا ہے۔ اس کا بنیادی خطرہ رجحان کی تبدیلی اور پیرامیٹرز کی ایڈجسٹمنٹ میں ہے۔
/*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)