متعدد اشارے پر مبنی مقداری تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-12-05 10:29:20 آخر میں ترمیم کریں: 2023-12-05 10:29:20
کاپی: 0 کلکس کی تعداد: 352
1
پر توجہ دیں
1141
پیروکار

متعدد اشارے پر مبنی مقداری تجارتی حکمت عملی

جائزہ

اس حکمت عملی میں تین اہم تکنیکی اشارے شامل ہیں: متحرک اوسط ، نسبتا strong مضبوط اشارے ((RSI) اور متحرک اوسط اجزاء اشارے ((MACD) ۔ اس حکمت عملی کے نام میں کثیر اشارے کی ایک صف شامل ہے ، بنیادی طور پر اس حکمت عملی کے ذریعہ استعمال ہونے والے متعدد اشارے کو اجاگر کرنے کے لئے۔

حکمت عملی کا اصول

یہ حکمت عملی بنیادی طور پر دو منتقل اوسط کی موازنہ کی طرف سے رجحان کی سمت کا تعین کرنے کے لئے، اور RSI اشارے کے ساتھ مل کر ریورس کے مواقع کو چھوڑنے سے بچنے کے لئے. خاص طور پر، حکمت عملی کا استعمال کرتا ہے EMA یا SMA حساب لگانے کے لئے فوری لائن اور سست لائن. فوری لائن پر سست لائن کو توڑنے کے لئے ایک خرید سگنل ہے، اور فوری لائن کے نیچے سست لائن کو توڑنے کے لئے ایک فروخت سگنل ہے.

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

طاقت کا تجزیہ

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

  1. RSI اشارے کے ساتھ مل کر ایک تیز رفتار اور سست رفتار لائن ، جو صرف ایک چلتی اوسط کا استعمال کرتے ہوئے پیدا ہونے والی جھوٹی توڑ سے بچ سکتی ہے۔

  2. MACD اشارے کے انضمام سے یہ معلوم کیا جاسکتا ہے کہ آیا رجحان الٹ رہا ہے یا نہیں ، اور موڑ کے مقام پر غلط سگنل سے بچا جاسکتا ہے۔

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

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

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

خطرے کا تجزیہ

اس حکمت عملی میں مندرجہ ذیل خطرات شامل ہیں:

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

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

  3. ایک ہی قسم کا اثر غیر مستحکم ہے اور اسے دیگر اقسام تک پھیلانے کی ضرورت ہے۔

  4. Datenicht zureichen, Strategie effekt wird in der Zukunft abnehmen。

اصلاح کی سمت

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

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

  2. ٹریل اسٹاپ: ٹریل اسٹاپ کے ذریعہ منافع کو روکنے کے لئے ٹریل اسٹاپ کا استعمال کیا جاسکتا ہے۔

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

  4. Fügen Sie Moneymanagement Module hinzu für besseres Risikomanagement.

  5. Fügen 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)