وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ملٹی انڈیکیٹر کوانٹیٹیو ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-05 10:29:20
ٹیگز:

img

جائزہ

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

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

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

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

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

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

  1. RSI اشارے کے ساتھ مل کر تیز اور سست لائنیں چلتی اوسط کے ایک ہی استعمال کی وجہ سے غلط پیشرفتوں سے بچ سکتی ہیں۔

  2. ایم اے سی ڈی اشارے کے انضمام سے یہ فیصلہ کیا جاسکتا ہے کہ موڑ کے وقت غلط سگنل سے بچنے کے لئے رجحان پہلے سے ہی الٹ گیا ہے۔

  3. ای ایم اے اور ایس ایم اے کے درمیان انتخاب کرنے سے ایسے اشارے منتخب کیے جا سکتے ہیں جو مختلف مارکیٹ کی خصوصیات کے لیے زیادہ موزوں ہوں۔

  4. منی مینجمنٹ کے نظام کا انتخاب خطرات کو مؤثر طریقے سے کنٹرول کرنے کے لئے انفرادی احکامات کے سائز کو کنٹرول کرنے کی اجازت دیتا ہے.

  5. سٹاپ نقصان اور منافع لینے کی حمایت سے منافع میں مقفل ہونے اور نقصانات کو بڑھانے سے بچنے کی اجازت ملتی ہے۔

خطرے کا تجزیہ

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

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

  2. اشارے کے غلط سگنل جاری کرنے کا امکان اب بھی موجود ہے۔ جب تینوں اشارے ایک ہی وقت میں غلط سگنل جاری کرتے ہیں تو اس سے بڑے نقصانات ہوں گے۔

  3. ایک ہی علامت کی کارکردگی غیر مستحکم ہے، یہ دیگر اقسام میں توسیع کرنے کے لئے ضروری ہے.

  4. آج رات آپ کے خیال میں، اسٹریٹجی اثر مستقبل میں ہوگا.

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

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

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

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

  3. رجحان کے خلاف تجارت سے بچنے کے لئے اہم رجحان کے لئے فیصلے کے اشارے میں اضافہ کریں۔ مثال کے طور پر ، ADX اشارے کو مربوط کریں۔

  4. بہتر رسک مینجمنٹ کے لیے منی مینجمنٹ ماڈیول بھی شامل کریں۔

  5. See Sie Filter für fundamentale Faktoren wie Nachrichten hinzu. بنیادی عوامل کے لئے فلٹر کریں جیسے کہ خبریں.

خلاصہ

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


/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 2h
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/
// © fikira
//@version=4
strategy("Strategy Tester EMA-SMA-RSI-MACD", shorttitle="Strat-test", overlay=true, max_bars_back=5000, 
 default_qty_type= strategy.percent_of_equity, calc_on_order_fills=false, calc_on_every_tick=false, 
 pyramiding=0, default_qty_value=100, initial_capital=100)

Tiny     = "Tiny"
Small    = "Small"
Normal   = "Normal"
Large    = "Large"

cl      = "close" , op  = "open" , hi  = "high" , lo  = "low"
c4      = "ohlc4" , c3  = "hlc3" , hl  = "hl2"

co      = "(E)MA 1 > (E)MA 2" 
cu      = "(E)MA 3 < (E)MA 4"

co_HTF  = "(E)MA 1 (HTF) > (E)MA 2 (HTF)" 
cu_HTF  = "(E)MA 3 (HTF) < (E)MA 4 (HTF)"

L_S     = "Long & Short"                , _L_  = "Long Only"                , _S_ = "Short Only"

cla     = "Close above (E)MA 1"         
clu     = "Close under (E)MA 3"

cla_HTF = "Close above (E)MA 1 (HTF)"
clu_HTF = "Close under (E)MA 3 (HTF)"

rsi     = "RSI strategy"

none    = "NONE"
mch     = "macd > signal"               , mcl     = "macd < signal"
mch0    = "macd > 0"                    , mcl0    = "macd < 0"
sgh0    = "signal > 0"                  , sgl0    = "signal < 0"

mch_HTF = "macd (HTF) > signal (HTF)"   , mcl_HTF = "macd (HTF) < signal (HTF)"
mch0HTF = "macd (HTF) > 0"              , mcl0HTF = "macd (HTF) < 0"
sgh0HTF = "signal (HTF) > 0"            , sgl0HTF = "signal (HTF) < 0"

EMA     = "EMA"                         , SMA = "SMA"       

s       = input(cl,   "Source" , options=[cl, op, hi, lo, c4, c3, hl])

src     =
 s  == cl ? close :
 s  == op ? open  :
 s  == hi ? high  :
 s  == lo ? low   :
 s  == c4 ? ohlc4 :
 s  == c3 ? hlc3  : 
 s  == hl ? hl2   :
 close

__1_    = input(false, ">=< >=< [STRATEGIES] >=< >=<")

Type    = input(_L_,  "Type Strategy", options=[L_S, _L_, _S_])

_1a_    = input(false, ">=< >=< [BUY/LONG] >=< >=<")

ENT     = input(co,   "Pick your poison:", options=[co, cla, rsi, mch, mch0, sgh0])
EH      = input(0,    " if RSI >")
EL      = input(100,  " if RSI <")
EH_HTF  = input(0,    " if RSI (HTF) >")
EL_HTF  = input(100,  " if RSI (HTF) <")

EX      = input(none, " Extra argument", options=[none, mch, mch0, sgh0])
EX2     = input(none, " Second argument", options=[none, mch_HTF, mch0HTF, sgh0HTF, co_HTF, cla_HTF])

_1b_    = input(false, ">=< [(E)MA settings (Buy/Long)] >=<")

ma1     = input(SMA,  "  (E)MA 1", options=[EMA, SMA])
len1    = input(50,   "     Length"  )
ma2     = input(SMA,  "  (E)MA 2", options=[EMA, SMA])
len2    = input(100,  "     Length"  )
ma1HTF  = input(SMA,  "  (E)MA 1 - HTF", options=[EMA, SMA])
len1HTF = input(50,   "     Length"  )
ma2HTF  = input(SMA,  "  (E)MA 2 - HTF", options=[EMA, SMA])
len2HTF = input(100,  "     Length"  )

_2a_    = input(false, ">=< >=< [SELL/SHORT] >=< >=<")

CLO     = input(cu,   "Pick your poison:", options=[cu, clu, rsi, mcl, mcl0, sgl0])
CH      = input(0,    " if RSI >")
CL      = input(100,  " if RSI <")
CH_HTF  = input(0,    " if RSI (HTF) >")
CL_HTF  = input(100,  " if RSI (HTF) <")

CX      = input(none, " Extra argument", options=[none, mcl, mcl0, sgl0])
CX2     = input(none, " Second argument", options=[none, mcl_HTF, mcl0HTF, sgl0HTF, cu_HTF, clu_HTF])

_2b_    = input(false, ">=< [(E)MA settings (Sell/Short)] >=<")

ma3     = input(SMA,  "  (E)MA 3", options=[EMA, SMA])
len3    = input(50,   "     Length"  )
ma4     = input(SMA,  "  (E)MA 4", options=[EMA, SMA])
len4    = input(100,  "     Length"  )
ma3HTF  = input(SMA,  "  (E)MA 3 - HTF", options=[EMA, SMA])
len3HTF = input(50,   "     Length"  )
ma4HTF  = input(SMA,  "  (E)MA 4 - HTF", options=[EMA, SMA])
len4HTF = input(100,  "     Length"  )

__3_    = input(false, ">=< >=< [RSI]  >=< >=< >=<")

ler     = input(20 , "  RSI Length")

__4_    = input(false, ">=< >=< [MACD] >=< >=< >=<")

fst     = input(12, "  Fast Length")
slw     = input(26, "  Slow Length")
sgn     = input(9 , "  Signal Smoothing")
sma_source = input(false, "Simple MA(Oscillator)")
sma_signal = input(false, "Simple MA(Signal Line)")

__5_    = input(false, ">=< >=< [HTF settings] >=< >=<")

MA_HTF  = input("D", "  (E)MA HTF", type = input.resolution)
RSI_HTF = input("D", "  RSI HTF"  , type = input.resolution)
MACD_HTF= input("D", "  MACD HTF" , type = input.resolution)

__6_    = input(false, ">=< >=< [SL/TP] >=< >=< >=<")

sl      = input(false, "Stop Loss?")
SL      = input(10.0, title="  Stop Loss %"  ) / 100
tp      = input(false, "Take Profit?")
TP      = input(20.0, title="  Take Profit %") / 100
 
SL_     = strategy.position_avg_price * (1 - SL)
TP_     = strategy.position_avg_price * (1 + TP)

// Limitation in time
// (= inspired from a script of "Che_Trader")

xox     = input(false, ">=< >=< [TIME] >=< >=< >=<")

ystr1   = input(2010, "  Since Year" )
ystp1   = input(2099, "  Till Year"  )
mstr1   = input(1   , "  Since Month")
mstp1   = input(12  , "  Till Month" )
dstr1   = input(1   , "  Since Day"  )
dstp1   = input(31  , "  Till Day"   )
 
_Str1   = timestamp(ystr1, mstr1, dstr1,  1,  1)
Stp1_   = timestamp(ystp1, mstp1, dstp1, 23, 59)

TIME    = time >= _Str1 and time <= Stp1_ ? true : false

////////////////////////////////////////////////////////////////////////////////////////////

_1      = 
 ma1 == SMA ? sma(src, len1) : 
 ma1 == EMA ? ema(src, len1) : 
 na
_2      = 
 ma2 == SMA ? sma(src, len2) :
 ma2 == EMA ? ema(src, len2) :
 na
_3      = 
 ma3 == SMA ? sma(src, len3) :
 ma3 == EMA ? ema(src, len3) :
 na
_4      = 
 ma4 == SMA ? sma(src, len4) :
 ma4 == EMA ? ema(src, len4) :
 na

_1b  = 
 ma1HTF == SMA ? sma(src, len1HTF) :
 ma1HTF == EMA ? ema(src, len1HTF) :
 na
_2b  = 
 ma2HTF == SMA ? sma(src, len2HTF) :
 ma2HTF == EMA ? ema(src, len2HTF) :
 na
_3b  = 
 ma3HTF == SMA ? sma(src, len3HTF) :
 ma3HTF == EMA ? ema(src, len3HTF) :
 na
_4b  = 
 ma4HTF == SMA ? sma(src, len4HTF) :
 ma4HTF == EMA ? ema(src, len4HTF) :
 na

_1_HTF = security(syminfo.tickerid, MA_HTF,  _1b)
_2_HTF = security(syminfo.tickerid, MA_HTF,  _2b)
_3_HTF = security(syminfo.tickerid, MA_HTF,  _3b)
_4_HTF = security(syminfo.tickerid, MA_HTF,  _4b)
cl_HTF = security(syminfo.tickerid, MA_HTF,  close)

////////////////////////////////////////////////////////////////////////////////////////////

plot(ENT == co or ENT == cla ? _1 : na            , title="(E)MA 1", color=color.lime                           )
plot(ENT == co               ? _2 : na            , title="(E)MA 2", color=color.red                            )
plot(CLO == cu or CLO == clu ? _3 : na            , title="(E)MA 3", color= _3 == _1 ? color.lime : color.yellow)
plot(CLO == cu               ? _4 : na            , title="(E)MA 4", color= _4 == _2 ? color.red  : color.blue  )
plot(EX2 == co_HTF or EX2 == cla_HTF ? _1_HTF : na, title="(E)MA 1 HTF", color=color.lime, linewidth=2, transp=50)
plot(EX2 == co_HTF                   ? _2_HTF : na, title="(E)MA 2 HTF", color=color.red , linewidth=2, transp=50)
plot(CX2 == cu_HTF or CX2 == clu_HTF ? _3_HTF : na, title="(E)MA 3 HTF", color= _3_HTF == _1_HTF ? color.lime : color.yellow, linewidth=2, transp=50)
plot(CX2 == cu_HTF                   ? _4_HTF : na, title="(E)MA 4 HTF", color= _4_HTF == _2_HTF ? color.red  : color.blue  , linewidth=2, transp=50)

////////////////////////////////////////////////////////////////////////////////////////////

// RSI

rsi_       = rsi(src, ler)
rsi_HTF    = security(syminfo.tickerid, RSI_HTF,  rsi_)

////////////////////////////////////////////////////////////////////////////////////////////

// MACD

fast_ma    = sma_source ? sma(src, fst) : ema(src, fst)
slow_ma    = sma_source ? sma(src, slw) : ema(src, slw)
macd       = fast_ma - slow_ma
signal     = sma_signal ? sma(macd, sgn) : ema(macd, sgn)
hist       = macd - signal

macd_HTF   = security(syminfo.tickerid, MACD_HTF, macd  )
signal_HTF = security(syminfo.tickerid, MACD_HTF, signal)

////////////////////////////////////////////////////////////////////////////////////////////

extra = 
 EX  == none    ? true                   :
 EX  == mch     ? macd >  signal         :
 EX  == mch0    ? macd >  0              :
 EX  == sgh0    ? signal >  0            :
 false

cxtra = 
 CX  == none    ? true                   :
 CX  == mcl     ? macd <= signal         :
 CX  == mcl0    ? macd <= 0              :
 CX  == sgl0    ? signal <= 0            :
 false

EXTRA = 
 EX2 == none    ? true                   :
 EX2 == mch_HTF ? macd_HTF >  signal_HTF :
 EX2 == mch0HTF ? macd_HTF >  0          :
 EX2 == sgh0HTF ? signal_HTF >  0        :
 EX2 == co_HTF  ? _1_HTF >  _2_HTF       :
 EX2 == cla_HTF ? cl_HTF >  _1_HTF       : 
 false
 
CXTRA =
 CX2 == none    ? true                   :
 CX2 == mcl_HTF ? macd_HTF <= signal_HTF :
 CX2 == mcl0HTF ? macd_HTF <= 0          :
 CX2 == sgl0HTF ? signal_HTF <= 0        :
 CX2 == cu_HTF  ? _3_HTF <= _4_HTF       :
 CX2 == clu_HTF ? cl_HTF <= _3_HTF       : 
 false

RSI = rsi_ > EH and rsi_ <= EL and rsi_HTF > EH_HTF and rsi_HTF <= EL_HTF

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BUY = 
 ENT == co    and TIME and extra and EXTRA and RSI ? _1 > _2        : 
 ENT == cla   and TIME and extra and EXTRA and RSI ? src > _1       : 
 ENT == rsi   and TIME and extra and EXTRA         ? RSI            : 
 ENT == mch   and TIME and extra and EXTRA and RSI ? macd > signal  : 
 ENT == mch0  and TIME and extra and EXTRA and RSI ? macd > 0       : 
 ENT == sgh0  and TIME and extra and EXTRA and RSI ? signal > 0     : 
 na

SELL = 
 CLO == cu    and TIME and cxtra and CXTRA and RSI ? _3 <= _4       : 
 CLO == clu   and TIME and cxtra and CXTRA and RSI ? src <= _3      : 
 CLO == rsi   and TIME and cxtra and CXTRA         ? RSI            :
 CLO == mcl   and TIME and cxtra and CXTRA and RSI ? macd <= signal : 
 CLO == mcl0  and TIME and cxtra and CXTRA and RSI ? macd <= 0      : 
 CLO == sgl0  and TIME and cxtra and CXTRA and RSI ? signal <= 0    : 
 na

if BUY
    if (Type == _S_)
        strategy.close("[S]")
    else
        strategy.entry("[B]", strategy.long)

if SELL
    if (Type == _L_)
        strategy.close("[B]")
    else
        strategy.entry("[S]", strategy.short)

strategy.exit("[SL/TP]", "[B]", stop= sl ? SL_ : na, limit= tp ? TP_ : na)



مزید