ملٹی فلٹر سپر ٹرینڈ ٹریڈنگ حکمت عملی


تخلیق کی تاریخ: 2023-09-15 16:19:57 آخر میں ترمیم کریں: 2023-09-15 16:19:57
کاپی: 1 کلکس کی تعداد: 1211
1
پر توجہ دیں
1617
پیروکار

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

حکمت عملی کیسے کام کرتی ہے:

  1. سپر ٹرینڈ اشارے کا حساب لگانا ، خرید و فروخت کے اشارے پیدا کرنا
  2. اگر MACD فلٹر کو چالو کیا گیا ہے تو ، خریدنے کا اشارہ صرف اس وقت پیدا ہوتا ہے جب MACD تیز رفتار لائن کے ساتھ ساتھ تیز رفتار لائن پر بھی گزرتا ہے۔ فروخت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب MACD تیز رفتار لائن کے ساتھ ساتھ تیز رفتار لائن کے نیچے بھی گزرتا ہے۔
  3. اگر ای ایم اے فلٹر کو چالو کیا جائے تو ، خریدنے کا اشارہ صرف اس وقت پیدا ہوتا ہے جب قیمت 200 دن کے ای ایم اے کو عبور کرتی ہے۔ فروخت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب قیمت 200 دن کے ای ایم اے کو عبور کرتی ہے۔
  4. اگر اسٹوکاسٹک آر ایس آئی فلٹر کو فعال کیا جائے تو ، صرف اس وقت خریدنے کا اشارہ پیدا ہوتا ہے جب اسٹوکاسٹک آر ایس آئی اوورلوڈ زون کے نیچے سے اوورلوڈ زون سے گزرتا ہے۔ صرف اس وقت فروخت کا اشارہ پیدا ہوتا ہے جب اسٹوکاسٹک آر ایس آئی اوورلوڈ زون سے اوورلوڈ زون سے گزرتا ہے۔
  5. اگر ایم ایف آئی فلٹر کو چالو کیا جائے تو ، خریدنے کا اشارہ صرف اس وقت پیدا ہوتا ہے جب ایم ایف آئی اپنے ای ایم اے کو پہنتا ہے۔ فروخت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب ایم ایف آئی اپنے ای ایم اے کو پہنتا ہے۔
  6. اگر سی سی آئی فلٹر کو چالو کیا گیا ہے تو ، خریدنے کا اشارہ صرف اس وقت پیدا ہوتا ہے جب قیمت سی سی آئی کی بنیاد کی لائن کو عبور کرتی ہے۔ فروخت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب قیمت سی سی آئی کی بنیاد کی لائن کو عبور کرتی ہے۔
  7. اے ٹی آر یا برن بینڈ کا استعمال کرتے ہوئے سٹاپ نقصان کی روک تھام کا حساب لگائیں۔

اس حکمت عملی کے فوائد:

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

اس حکمت عملی کے خطرات:

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 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/
// © mathlabel

//@version=5
strategy("My strategy", overlay=true, margin_long=100, margin_short=100)



atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
stopLossFactor = input(2.0, "Stop Loss Factor")
takeProfitFactor = input(1.5, "Take Profit Factor")
stochlenght= input(14,'stochlenght')
oversold_level = input(title = 'Oversold', defval = 20)
overbought_level = input(title = 'Overbought', defval = 80)
use_atr_exits=input.bool(false)
use_bollinger_exits=input.bool(false)
use_cci_filter=input.bool(false)


longLossPerc = input.float(title='Long Stop Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

shortLossPerc = input.float(title='Short Stop Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

longprofitPerc = input.float(title='Long profit (%)', minval=0.0, step=0.1, defval=1) * 0.01

shortprofitPerc = input.float(title='Short profit (%)', minval=0.0, step=0.1, defval=1) * 0.01



// Calculate ATR
atr = ta.atr(atrPeriod)
plotsuper=input.bool(false)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)


upTrend = plot(plotsuper? (direction < 0 ? supertrend : na) : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(plotsuper ? (direction < 0? na : supertrend):na, "Down Trend", color = color.red, style=plot.style_linebr)



long_supertrend_filter= (direction < 0 ? supertrend : na)
short_supertrend_filter= (direction < 0? na : supertrend)



//--trama--
lengths = input(99,title='Trama lenght')
src =(close)

ama = 0.
hh = math.max(math.sign(ta.change(ta.highest(lengths))), 0)
ll = math.max(math.sign(ta.change(ta.lowest(lengths)) * -1), 0)
tc = math.pow(ta.sma(hh or ll ? 1 : 0, lengths), 2)
ama := nz(ama[1] + tc * (src - ama[1]), src)

plottrama=input.bool(false, title="Show Lux TRAMA")
plot(plottrama?ama : na, 'Plot', color.new(#ff1100, 0), 2)

use_LUX_trama_filter=input.bool(false)
long_LUX_trama_filter= (close > ama)
short_LUX_trama_filter= (close < ama)

// highest high
highest = ta.highest(high, stochlenght)
// lowest low
lowest = ta.lowest(low, stochlenght)

// stochastic oscillator
stochastic_K = ((close - lowest) / (highest - lowest)) * 100
stochastic_D = ta.sma(stochastic_K, 3)

use_stochastic_filter = input.bool(false)
long_stoch_filter = stochastic_K > oversold_level and stochastic_K[1] < oversold_level
short_stoch_filter = stochastic_K < overbought_level and stochastic_K[1] > overbought_level

//Define a ATR band upline and bottome line.

upline = open + (atr* takeProfitFactor)
bottomline = open -(atr*stopLossFactor)

plot(use_atr_exits ? upline : na, color=color.white)
plot(use_atr_exits ? bottomline:na, color=color.white)

// Calculate stop loss and take profit levels
stopLoss = stopLossFactor * atr
takeProfit = takeProfitFactor * atr

//input macd
ma_fast=ta.sma(close,input(14,title='ma fast for macd filter'))
ma_slow=ta.sma(close,input(28, title='ma slowfor macd filter'))
use_macd_filter=input.bool(false)

[macdLine, signalLine, histLine]= ta.macd(close,12,26,9)
long_macd_filter= (macdLine > signalLine) and ta.crossover(ma_fast,ma_slow)
short_macd_filter= (macdLine < signalLine) and ta.crossunder(ma_fast,ma_slow)
// ema 200
ema1= ta.ema(close,1)
ema2= ta.ema(close,200)
use_ema200_filter= input.bool(false)
long_ema_filter = (close > ema2)
short_ema_filter= (close < ema2)
plotAverage = input.bool(true, title="Plot EMA200")
plot(plotAverage ? ta.ema(close, 200) : na, title="Exponential Average")
// mfi
signalLength = input(title="mfi Signal Length", defval=9)
length1 = input(title="mfi Length", defval=14)
src1 = hlc3
mf = ta.mfi(src1, length1)
signal = ta.ema(mf, signalLength)



use_mfi_filter=input.bool(false)
long_mfi_filter= ta.crossover(mf,signal) ?mf:na 
short_mfi_filter= ta.crossunder(mf,signal)? mf : na

//cci
cci_l = input(50, title='CCI Period Length')
atr_l = input(5, title=' CCI ATR Length')
level = 0
sd_length = 20



cci = ta.cci(src, cci_l)
atr2 = ta.atr(atr_l)

var st = 0.

if cci >= level
    st := low - atr
    st

if cci <= level
    st := high + atr
    st


var tu = 0.
var td = 0.
var optimal_line = 0.

if cci >= level and cci[1] < level
    tu := td[1]
    tu

if cci <= level and cci[1] > level
    td := tu[1]
    td

if cci > level
    tu := low - atr2
    if tu < tu[1] and cci[1] >= level
        tu := tu[1]
        tu

if cci < level
    td := high + atr2
    if td > td[1] and cci[1] <= level
        td := td[1]
        td

optimal_line := math.max(tu, td)

// Creating a Price Channel, 

avg_st8 = ta.ema(st, 8)
avg_st13 = ta.ema(st, 13)
avg_st21 = ta.ema(st, 21)
avg_st34 = ta.ema(st, 21)
avg_st55 = ta.ema(st, 55)
avg_st89 = ta.ema(st, 89)
avg_st144 = ta.ema(st, 144)
avg_st233 = ta.ema(st, 233)

average_weighting = (optimal_line + avg_st8 + avg_st13 + avg_st21 + avg_st34 + avg_st55 + avg_st89 + avg_st144 + avg_st233) / 9

basis = ta.sma(average_weighting, sd_length)
devs = ta.stdev(average_weighting, sd_length)
upperS = basis + devs
lowerS = basis - devs
plot(use_cci_filter ? basis: na, 'Basis', color=color.new(#872323, 0))
p3 = plot(use_cci_filter ? upperS : na, 'UpperS', color=color.new(color.teal, 0))
p4 = plot(use_cci_filter ? lowerS: na ,'LowerS', color=color.new(color.teal, 0))

long_cci_filter= ta.crossover(close,upperS) 
short_cci_filter= ta.crossunder(close,lowerS) 



var isLong = false
var isShort = false
long = (not use_LUX_trama_filter or long_LUX_trama_filter) and ( long_supertrend_filter) and (not use_ema200_filter or long_ema_filter) and (not isLong) and  (not use_stochastic_filter or long_stoch_filter) and (not use_macd_filter or long_macd_filter) and (not use_mfi_filter or long_mfi_filter) and (not use_cci_filter or long_cci_filter)
short= (not use_LUX_trama_filter or short_LUX_trama_filter) and ( short_supertrend_filter) and (not use_ema200_filter or short_ema_filter) and (not isShort)  and ( not use_stochastic_filter or short_stoch_filter) and (not use_macd_filter or long_macd_filter) and (not use_mfi_filter or short_mfi_filter) and (not use_cci_filter or short_cci_filter)


if long
    isLong := true
    isShort := false

if short
    isLong := false
    isShort := true

plotshape(long, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(short, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)


//bollinger
lengthss = input(20, title='bollinger lenght')

mult = input.float(2.0, minval=0.001, maxval=50, title="bollinger StdDev")
basiss = ta.sma(src, lengthss)
dev = mult * ta.stdev(src, lengthss)
upper = basiss + dev
lower = basiss - dev
offset = input.int(0, "bollinger Offset", minval = -500, maxval = 500)
plot(use_bollinger_exits ? basiss : na, "Basis", color=#FF6D00, offset = offset)
p1 = plot(use_bollinger_exits ? upper : na, "Upper", color=#2962FF, offset = offset)
p2 = plot(use_bollinger_exits ? lower: na, "Lower", color=#2962FF, offset = offset)

long_bollinger_exits= close > upper
short_bollinger_exits=close < lower
long_atr_exits = close > upline 
short_atr_exits = close < bottomline
takelong = (not use_atr_exits or long_atr_exits) and (not use_bollinger_exits or long_bollinger_exits)
takeshort = (not use_atr_exits or short_atr_exits) and (not use_bollinger_exits or short_bollinger_exits)

plotshape(use_atr_exits? takelong : na,title = 'take profit',text='high SL/TP',style=shape.cross,location = location.abovebar, color=color.new(color.green,0) , size=size.tiny)
plotshape(use_atr_exits ? takeshort : na,title = 'take profit',text='low SL/TP',style=shape.cross,location = location.belowbar, color=color.new(color.green,0), size=size.tiny)
plotshape(use_bollinger_exits ? takelong: na,title = 'take profit',text='high SL/TP',style=shape.cross,location = location.abovebar, color=color.new(color.green,0) , size=size.tiny)
plotshape(use_bollinger_exits ? takeshort: na,title = 'take profit',text='low SL/TP',style=shape.cross,location = location.belowbar, color=color.new(color.green,0), size=size.tiny)




alertcondition(long,'long','buy')
alertcondition(short,'short','short')
alertcondition(takeshort,'trail short close','short trailing take profit')
alertcondition(takelong ,'trail long close','long trailing take profit')


use_trailing_stop_loss=input.bool(title = 'use trailing stop loss (atr or bollinger)?', defval = true)

// Determine stop loss price
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
// Determine take profit price
longprofitPrice = strategy.position_avg_price * (1 + longprofitPerc)
shortprofitPrice = strategy.position_avg_price * (1 - shortprofitPerc)

// Plot stop loss values for confirmation
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_cross, linewidth=1, title='Long Stop Loss')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_cross, linewidth=1, title='Short Stop Loss')
plot(series=strategy.position_size > 0 ? longprofitPrice : na, color=color.new(color.green, 0), style=plot.style_cross, linewidth=1, title='Long profit')
plot(series=strategy.position_size < 0 ? shortprofitPrice : na, color=color.new(color.green, 0), style=plot.style_cross, linewidth=1, title='Short profit')




longCondition = long
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

shortCondition = short
if (shortCondition)
    strategy.entry("Short Entry", strategy.short,stop = shortStopPrice)
if use_trailing_stop_loss
    if takelong or close < longStopPrice
        strategy.close("Long Entry")
    if takeshort or close > shortStopPrice
        strategy.close("Short Entry")
else
    if close < longStopPrice or close > longprofitPrice
        strategy.close("Long Entry")
    if close < shortprofitPrice or close > shortStopPrice
        strategy.close("Short Entry")