موافقت پذیر چلتی اوسط کے ساتھ ایک کثیر عوامل کے مجموعہ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-15 11:30:09
ٹیگز:

img

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

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

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

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

خاص طور پر حکمت عملی میں استعمال ہونے والے چار اہم تکنیکی اشارے میں شامل ہیں:

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

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

  3. اسٹوکاسٹک اشارے۔ یہ اشارے تیزی اور کمی کے کراس اوور کے وقت کا تعین کرتا ہے۔ جب %K لائن نیچے سے %D لائن کو توڑتی ہے تو ، یہ خرید سگنل دیتی ہے۔ اور جب %K اوپر سے %D کو توڑتی ہے تو ، یہ فروخت سگنل دیتی ہے۔

  4. میچنگ اسکور میکانزم۔ مذکورہ بالا عوامل کے میچنگ کے مطابق ، حکمت عملی اسکورنگ میکانزم کو اپناتی ہے۔ زیادہ مماثل عوامل ، اسی کے مطابق تجارتی سگنل زیادہ مضبوط ہوتا ہے۔

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

III. فوائد

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

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

IV. خطرات

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

اس کے علاوہ ، ریڑھ کی ہڈی کی مارکیٹوں کے دوران ، انعقاد کا وقت بہت لمبا ہوسکتا ہے۔ یہاں تک کہ اسٹاپ نقصان کے ساتھ بھی ، اب بھی اہم نقصانات ہوسکتے ہیں۔

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

V. بہتری کے خیالات

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

  1. بہترین مجموعہ تلاش کرنے کے لئے ہر اشارے کی پیرامیٹر کی ترتیبات کو بہتر بنائیں.

  2. ماڈل ٹریننگ اور ریئل ٹائم پیرامیٹر کی اصلاح کے لئے انکولی پیرامیٹر ماڈیول شامل کریں.

  3. زیادہ سے زیادہ واپسی کو کم کرنے کے لئے سٹاپ نقصان کی حکمت عملی شامل کریں.

  4. پوزیشن کنٹرول ماڈیولز کو مارکیٹ کے حالات کی بنیاد پر پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنے کے لئے شامل کریں.

  5. ملٹی فیکٹر اسکورنگ سسٹم کے لئے نیورل نیٹ ورک ماڈل بنانے کے لئے مشین لرننگ الگورتھم شامل کریں۔

VI. نتیجہ

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


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © cyrule
//@version=4
strategy("2nd Grade Strategy", overlay=true, shorttitle="2GTS", max_lines_count = 500, max_labels_count = 500, calc_on_every_tick = true, calc_on_order_fills = true, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 10)

source = input(close, title = "Source")

// **********************
// * Heikin-Ahshi       *
// * kudos to garethyeo *
// **********************
showHA   = input(true, title = "Show Heikin Ashi?", group = "Heikin Ashi")
ha_open  = security(heikinashi(syminfo.tickerid), timeframe.period, open)
ha_high  = security(heikinashi(syminfo.tickerid), timeframe.period, high)
ha_low   = security(heikinashi(syminfo.tickerid), timeframe.period, low)
ha_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)

bgcolor(iff(showHA and ha_open < ha_close , color.new(#53b987, transp = 92.5), na), title = 'Green HA')
bgcolor(iff(showHA and ha_open >= ha_close, color.new(#eb4d5c, transp = 92.5), na), title = 'Red HA'  )


// ******************
// * Moving Average *
// ******************
// MA Settings
showMA         = input(true, title = "Show Moving Averages?", group = "Moving Averages")
fastMALength   = input(title = "Fast MA Length", minval = 1, step = 1, defval = 20, group = "Moving Averages")
slowMALength   = input(title = "Slow MA Length", minval = 1, step = 1, defval = 50, group = "Moving Averages")
maType         = input(title = "Moving Average Type", defval = "SMA", options = ["SMA", "EMA", "RMA", "WMA", "VWMA"], group = "Moving Averages")
filterMALength = input(title = "Filter MA Length", minval = 1, step = 1, defval = 200, group = "Moving Averages")
filterMAType   = input(title = "Filter MA Type", defval = "EMA", options = ["SMA", "EMA", "RMA", "WMA", "VWMA"], group = "Moving Averages")

// Calculate MA
var float maFast   = na
var float maSlow   = na
var float maFilter = na

if (maType   == "SMA")
    maFast   := sma(source, fastMALength)
    maSlow   := sma(source, slowMALength)
if (maType   == "EMA")
    maFast   := ema(source, fastMALength)
    maSlow   := ema(source, slowMALength)
if (maType   == "RMA")
    maFast   := rma(source, fastMALength)
    maSlow   := rma(source, slowMALength)
    maFilter := rma(source, filterMALength)
if (maType   == "WMA")
    maFast   := wma(source, fastMALength)
    maSlow   := wma(source, slowMALength)
if (maType   == "VWMA")
    maFast   := vwma(source, fastMALength)
    maSlow   := vwma(source, slowMALength)

if (filterMAType == "SMA")
    maFilter     := sma(source, filterMALength)
if (filterMAType == "EMA")
    maFilter     := ema(source, filterMALength)
if (filterMAType == "RMA")
    maFilter     := rma(source, filterMALength)
if (filterMAType == "WMA")
    maFilter     := wma(source, filterMALength)
if (filterMAType == "VWMA")
    maFilter     := vwma(source, filterMALength)

BiruAtasMerah = (maFast >= maSlow) and (maSlow >= maFilter)
MerahAtasBiru = (maFast <= maSlow) and (maSlow <= maFilter)

// Lukis MA
plot(series = showMA ? maFast   : na, color = color.blue, title = "MA Fast")
plot(series = showMA ? maSlow   : na, color = color.red,  title = "MA Slow")
plot(series = showMA ? maFilter : na, color = #FFCC00,    title = "MA Filter")


// **************
// * Stochastic *
// **************
// Stochastic Settings
showSSC = input(true, title = "Show Stochastic Crossovers?", group = "Stochastic")
Length = input (10, minval = 1, title = "%K Length", group = "Stochastic")
SmoothK = input (3, minval = 1, title = "%K Smoothing", group = "Stochastic")
SmoothD = input (3, minval = 1, title = "%D Smoothing", group = "Stochastic")

// Calculate Stochastic
var float K = na
var float D = na

if (maType ==  "SMA")
	K      := sma(stoch(source, high, low, Length), SmoothK)
	D      := sma(K, SmoothD)
if (maType ==  "EMA")
	K      := ema(stoch(source, high, low, Length), SmoothK)
	D      := ema(K, SmoothD)
if (maType ==  "RMA")
	K      := rma(stoch(source, high, low, Length), SmoothK)
	D      := rma(K, SmoothD)
if (maType ==  "WMA")
	K      := wma(stoch(source, high, low, Length), SmoothK)
	D      := wma(K, SmoothD)
if (maType ==  "VWMA")
	K      := vwma(stoch(source, high, low, Length), SmoothK)
	D      := vwma(K, SmoothD)

StochasticCrossOver  = crossover(K, D)
StochasticCrossUnder = crossunder(K, D)

// Lukis SS
plotshape(showSSC and StochasticCrossOver  and K <=  20            ? K : na, text = "Golden\nCrossover",  color = color.new(color.green, transp = 25), location = location.belowbar, size = size.tiny, title = "Golden Crossover" )
plotshape(showSSC and StochasticCrossUnder and K >=  80            ? D : na, text = "Deadly\nCrossover",  color = color.new(color.red, transp = 25),   location = location.belowbar, size = size.tiny, title = "Deadly Crossover" )
plotshape(showSSC and StochasticCrossOver  and K <=  80 and K > 20 ? K : na, text = "Bullish\nCrossover", color = color.new(color.green, transp = 50), location = location.belowbar, size = size.tiny, title = "Bullish Crossover")
plotshape(showSSC and StochasticCrossUnder and K >=  20 and K < 80 ? D : na, text = "Bearish\nCrossover", color = color.new(color.red, transp = 50),   location = location.belowbar, size = size.tiny, title = "Bearish Crossover")

showBull = input(true, title = "Show Bullish Signal?", group = "Signal")
showBear = input(false, title = "Show Bearish Signal?", group = "Signal")

bullishCriteria = 0
if (ha_open < ha_close) and (ha_open[1] < ha_close[1]) and (ha_open[2] >= ha_close[2])
    bullishCriteria := bullishCriteria + 1
if (maFast > maSlow) and (maSlow > maFilter)
    bullishCriteria := bullishCriteria + 1
if (K > D) and (K > K[1]) and (D > D[1])
    bullishCriteria := bullishCriteria + 1

bearishCriteria = 0
if (ha_open >= ha_close) and (ha_open[1] >= ha_close[1]) and (ha_open[2] < ha_close[2])
    bearishCriteria := bearishCriteria + 1
if (maFast < maSlow) and (maSlow < maFilter)
    bearishCriteria := bearishCriteria + 1
if (K < D) and (K < K[1]) and (D < D[1])
    bearishCriteria := bearishCriteria + 1

signal = color.new(color.white, transp = 0)
if bearishCriteria == 2
    signal := color.new(color.orange, transp = 50)
if bearishCriteria == 3
    signal := color.new(color.red, transp = 50)
if bullishCriteria == 2
    signal := color.new(color.aqua, transp = 50)
if bullishCriteria == 3
    signal := color.new(color.green, transp = 50)

bullishCriteria := showBull ? bullishCriteria : 0
bearishCriteria := showBear ? bearishCriteria : 0

bgcolor(iff(bullishCriteria > 1, signal, na), title = 'Bullish Signal')
bgcolor(iff(bearishCriteria > 1, signal, na), title = 'Bearish Signal')

longTPPerc  = input(title = "Take Profit Threshold (%)"            , minval = 0.0, step = 0.5, defval = 2.5, group = "Trading") / 100
profitRatio = input(title = "Profit-to-Loss ratio (risk tolerance)", minval = 1.0, step = 0.1, defval = 1.4, group = "Trading")
longSLPerc  = longTPPerc / profitRatio
takeProfit  = strategy.position_avg_price * (1 + longTPPerc)
stopLoss    = strategy.position_avg_price * (1 - longSLPerc)
strategy.initial_capital = 50000
strategy.entry("Long" , strategy.long , floor(strategy.initial_capital*.1/close), stop = strategy.position_avg_price * 1.25, when = bullishCriteria > 1)
strategy.entry("Short", strategy.short, floor(strategy.initial_capital*.1/close), stop = strategy.position_avg_price * 1.25, when = bearishCriteria > 1)
strategy.close("Long" , when = (open >= takeProfit) or (open <= stopLoss) or (high >= takeProfit) or (low <= stopLoss))
strategy.close("Short", when = (open >= takeProfit) or (open <= stopLoss) or (high >= takeProfit) or (low <= stopLoss))

plotshape(bullishCriteria, location = location.belowbar, color = color.new(color.black, transp = 100))
plotshape(bearishCriteria, location = location.belowbar, color = color.new(color.black, transp = 100))

مزید