ملٹی فیکٹر مجموعہ انکولی حرکت پذیر اوسط حکمت عملی


تخلیق کی تاریخ: 2023-12-15 11:30:09 آخر میں ترمیم کریں: 2023-12-15 11:30:09
کاپی: 0 کلکس کی تعداد: 622
1
پر توجہ دیں
1621
پیروکار

ملٹی فیکٹر مجموعہ انکولی حرکت پذیر اوسط حکمت عملی

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

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

2. حکمت عملی کے اصول

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

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

  1. دن کی لکیر۔ حکمت عملی قیمت کے رجحان کا تعین کرنے کے لئے دن کی لکیر کے رنگ کا استعمال کرتی ہے ، دو مسلسل سبز ہستی HA اوسط لائن خریدنے کا اشارہ ہے ، دو مسلسل سرخ خالی دل HA اوسط لائن خالی سر کا اشارہ ہے۔

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

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

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

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

تیسرا، حکمت عملی کا فائدہ

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

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

چار، حکمت عملی کا خطرہ

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

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

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

پانچواں: حکمت عملی کو بہتر بنانے کی سمت

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

  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))