Kifier پوشیدہ MFI/STOCH اشارے ٹریڈنگ/ٹرینڈ ٹریڈنگ حکمت عملی


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

Kifier پوشیدہ MFI/STOCH اشارے ٹریڈنگ/ٹرینڈ ٹریڈنگ حکمت عملی

جائزہ

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

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

اس حکمت عملی میں دو قسم کے داخلے کے منطق شامل ہیں:

  1. ایم ایف آئی پوشیدہ انحراف + اسٹاک فلٹر: جب ایم ایف آئی پوشیدہ انحراف بناتا ہے ، یعنی قیمت میں جدت طرازی زیادہ ہوتی ہے لیکن ایم ایف آئی میں جدت طرازی زیادہ نہیں ہوتی ہے ، تو ہم سمجھتے ہیں کہ یہ ایک ممکنہ رجحان الٹ کا اشارہ ہے۔ لیکن جھوٹے اشارے سے بچنے کے ل we ، ہم فلٹرنگ کی شرط کے طور پر اضافی اسٹاک> 50٪ شامل کرتے ہیں۔

  2. اسٹاک / ایم ایف آئی ٹرینڈ سسٹم: جب اسٹاک> 50٪ ہے اور ایم ایف آئی نے نیچے سے اوپر کی طرف 50 لائن کو عبور کیا ہے تو ، اس کا مطلب یہ ہے کہ مارکیٹ کا رجحان تشکیل دے رہا ہے ، اس وقت داخلے سے بہتر رسک ریٹرن حاصل کیا جاسکتا ہے۔

رجحانات کی درستگی کو یقینی بنانے کے ل we ، ہم نے ایک رجحاناتی نظام بھی بنایا ہے جو VWMA اور SMA پر مبنی ہے۔ صرف VWMA پر SMA پھیلنے پر ، یعنی جب رجحان بڑھتا ہے تو ، دونوں سسٹم تجارت کا اشارہ دیتے ہیں۔ اس کے علاوہ ، ہم OBV اشارے کا استعمال کرتے ہیں تاکہ یہ معلوم کیا جاسکے کہ مجموعی طور پر مارکیٹ ایکٹو حالت میں ہے یا مکمل حالت میں ہے ، جو کچھ غلط سگنلوں کو فلٹر کرنے کے لئے بھی استعمال کیا جاتا ہے۔

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

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

اصلاح کی سمت

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

  1. MFI اور STOCH کے پیرامیٹرز کی ترتیب کو بہتر بنانے کے لئے، پوشیدہ انحراف کی درستگی کو بہتر بنانے کے لئے

  2. مارکیٹ کے حالات کا اندازہ لگانے کے لئے مشین لرننگ ماڈل شامل کریں ، بہترین پیرامیٹرز کی پیمائش کریں

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

  4. مختلف کرپٹو کرنسیوں کی مختلف حالتوں کی جانچ ، شخصی پیرامیٹرز کی ترتیب

  5. اسٹاک سلیکشن ماڈیول میں اضافہ ، حکمت عملی کو بہتر تکنیکی شکل والے اسٹاک پر زیادہ توجہ دینے کے لئے

مندرجہ بالا چند اصلاحات کے ساتھ، آپ کو اس حکمت عملی کی استحکام اور منافع میں مزید اضافہ کرنے کی توقع کر سکتے ہیں.

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 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/
// © kifier

//@version=4
strategy("Kifier's MFI/STOCH Hidden Divergence/Trend Beater", shorttitle = "Kifier's MFI/STOCH", overlay=false, margin_long=100, margin_short=100, default_qty_type  = strategy.percent_of_equity, default_qty_value = 95, max_boxes_count = 500)

//Values
enb_date     = input(false                                  ,"Enable Date Range?",      type = input.bool, inline = "1")
enb_current  = input(true                                   ,"Today as End Date" ,      type = input.bool, inline = "1")
i_start_date = input(timestamp("01 Jan 2021 00:00 +0300")   ,"Start Date"        ,      type=input.time)
i_end_date   = input(timestamp("16 July 2021 00:00 +0300")  ,"End Date"          ,      type=input.time)

time_check   = true

i_vwma_length   = input(50,     "VWMA Length"               ,type = input.integer,   group = "Indicator Settings", inline = "2")
i_sma_length    = input(50,     "SMA Length"                ,type = input.integer,   group = "Indicator Settings", inline = "2")
i_stoch_length  = input(28,     "Stoch Length"              ,type = input.integer,   group = "Indicator Settings", inline = "3")
i_mfi_length    = input(7 ,     "MFI Length"                ,type = input.integer,   group = "Indicator Settings", inline = "3")
i_obv_length    = input(100,    "OBV Length"                ,type = input.integer,   group = "Indicator Settings")
i_atr_len       = input(100,    "ATR Ranging-trend len"     ,type = input.integer,   group = "Indicator Settings", tooltip = "This is the length of the ATR Emas that check when the market in a general trend or is just ranging")


i_div_price     = input(5       ,"Price Divergant Pivots"   ,type = input.integer, group = "Divergance Settings")
i_inacc         = input(0.05    ,"Price Inaccuracy"         ,type = input.float  , group = "Divergance Settings")
i_div_length    = input(3       ,"Divergance Valid Period"  ,type = input.integer, group = "Divergance Settings")
i_mfi_left      = input(5       ,"MFI Left/Right Pivots"    ,type = input.integer, group = "Divergance Settings", inline = "4")
i_mfi_right     = input(2       ,""                         ,type = input.integer, group = "Divergance Settings", inline = "4")

tp_percentage   = input(10  ,   "TP Percentage"         ,type = input.float             , group = "Exit Settings")/100
_inacc          = input(0.03,   "Support Inaccuracy"    ,type = input.float, step = 0.01, group = "Exit Settings")

enb_stoch_mfi     = input(true, "Use Stoch/MFI Trend"      , type = input.bool, group = "Individual Entries")
enb_stoch_mfi_div = input(true, "Use Stoch/MFI Divergance ", type = input.bool, group = "Individual Entries")

c_mfi           = input(color.yellow    ,"MFI/STOCH Colour     "        , type = input.color, group = "Indicator Colours", inline = "os")
c_stoch         = input(color.silver    ,""                             , type = input.color, group = "Indicator Colours", inline = "os")
c_buy           = input(color.green     ,"Buy/Sell Colour      "        , type = input.color, group = "Indicator Colours", inline = "pos")
c_sell          = input(color.red       ,""                             , type = input.color, group = "Indicator Colours", inline = "pos")
c_flat          = input(color.blue      ,"Flat/Trending Colours"        , type = input.color, group = "Indicator Colours", inline = "trend")
c_longtrend     = input(color.green     ,""                             , type = input.color, group = "Indicator Colours", inline = "trend")

//Global Variables
var float tpprice = na 

f_c_gradientAdvDec(_source, _center, _c_bear, _c_bull) =>
    var float _maxAdvDec = 0.
    var float _qtyAdvDec = 0.
    bool  _xUp     = crossover(_source, _center)
    bool  _xDn     = crossunder(_source, _center)
    float _chg     = change(_source)
    bool  _up      = _chg > 0
    bool  _dn      = _chg < 0
    bool  _srcBull = _source > _center
    bool  _srcBear = _source < _center
    _qtyAdvDec := 
      _srcBull ? _xUp ? 1 : _up ? _qtyAdvDec + 1 : _dn ? max(1, _qtyAdvDec - 1) : _qtyAdvDec :
      _srcBear ? _xDn ? 1 : _dn ? _qtyAdvDec + 1 : _up ? max(1, _qtyAdvDec - 1) : _qtyAdvDec : _qtyAdvDec
    _maxAdvDec := max(_maxAdvDec, _qtyAdvDec)
    float _transp = 100 - (_qtyAdvDec * 100 / _maxAdvDec)
    var color _return = na
    _return := _srcBull ? color.new(_c_bull, _transp) : _srcBear ? color.new(_c_bear, _transp) : _return

//Simple Sup/Res
var float _pH = na
var float _pL = na
_ph = pivothigh(high,20,20)
_pl = pivotlow(low,20,20)
_high_inacc = _inacc * high
_low_inacc = _inacc * low

if _ph
    _pH := high
if (high-_high_inacc) > _pH and _ph
    _pH := high
    _pH := nz(_pH)

if _pl
    _pL := low
if (low+_low_inacc) < _pL[1] 
    _pL := low
    _pL := nz(_pL)  

broke_res = iff(crossover(close, _pH), true, false)

//Indicator Initialisation
s_stoch = stoch(close, high, low, i_stoch_length) 
s_vwma = vwma(close,i_vwma_length)
s_sma = sma(close,i_sma_length)

//MONEY FLOW + BBW
atr1 =ema((atr(14)/close),i_atr_len/2)
atr2 =ema((atr(14)/close), i_atr_len)
is_ranging = iff(atr1 < atr2, true, false)
s_mfi = mfi(close,i_mfi_length)
overTop = iff(s_mfi >= 90, true, false)
underBot = iff(s_mfi <= 10, true, false)

//Price Divergance
ph = pivothigh(high, i_div_price,i_div_price)
pl = pivotlow(low,i_div_price,i_div_price)

var float pH = 0.0
var float pL = 0.0

high_acc = high * (i_inacc)
low_acc = low * i_inacc

if (high-high_acc) > pH or (high+high_acc < pH) and ph
    pH := high
    pH := nz(pH)
if (low+low_acc) < pL or (low-low_acc > pL) and pl
    pL := low
    pL := nz(pL)

higher_low = false
lower_low = false
//Filter out innacurate
if ph or pl
    if pL < pL[1]
        lower_low := true
    if pL > pL[1]
        higher_low := true
        
//MFI Divergance
mh = pivothigh(s_mfi, i_mfi_left,i_mfi_right)
ml = pivotlow(s_mfi, i_mfi_left,i_mfi_right)
bl = bar_index

var float mH = 0.0
var float mL = 0.0
var int bL = 0

if mh
    mH := highest(nz(mh),i_mfi_left)
    mH := nz(mH)
if ml
    bL := bar_index
    mL := ml
    mL := nz(mL)

higher_low_m = false
lower_low_m = false

if ml 
    if mL < mL[1]
        lower_low_m := true
    if mL > mL[1]
        higher_low_m := true

//Combintion
var int price_range = na
var int rsi_range = na
var int mfi_range = na

//Higher low on price, lower low on rsi, then check with stoch
mfi_div_bullish = iff(higher_low and higher_low_m, true, false)

if mfi_div_bullish
    price_range := 0
    rsi_range := 0

//VWMA/SMA/OBV
_src = s_vwma-s_sma
sd_src = stdev(_src,14)
pooled_src = (_src/sd_src)*2

sd_s_vwma = stdev(s_vwma,14)
sd_s_sma = stdev(s_sma,14)

longTrend = obv > ema(obv,100) and is_ranging == false
crossOver = crossover(s_vwma , s_sma)
crossingOver = (s_vwma > s_sma) and (close >= s_vwma) 
crossUnder = crossunder(s_vwma, s_sma)
crossingUnder = (s_vwma < s_sma) and (close <= s_vwma)

hist_color = f_c_gradientAdvDec(s_vwma-s_sma, (s_vwma-s_sma)/2, color.new(c_sell,90), color.new(c_buy,80))

//Strategy Entries
mfi_stoch_trend = iff(enb_stoch_mfi, iff(s_stoch >= 50 and crossover(s_mfi, 50) and crossingOver and longTrend and is_ranging == false, true, false), false)

var buy_counter_rsi = 0
var buy_counter_mfi = 0

mfi_div = iff(enb_stoch_mfi_div, iff(mfi_div_bullish and crossingOver and s_stoch >= 50 and is_ranging, true, false), false)

if mfi_div
    buy_counter_mfi := bar_index + 5
    
mfi_divergent_buy = iff(bar_index <= buy_counter_mfi and strategy.position_size == 0, true, false)

//Strategy Entries
order_fired = false
var float previousRes = 0.0

tpprice := strategy.position_avg_price * (1+tp_percentage)
if time_check
    if mfi_stoch_trend
        strategy.entry("Buy", true, comment = "[B] STOCH/MFI")
        order_fired := true
    if mfi_divergent_buy
        strategy.entry("Buy", true, comment = "[B] MFI Hidden Divergance")
        order_fired := true
        
    if order_fired 
        previousRes := _pL
    if strategy.position_size > 0
        strategy.exit("Buy", limit = tpprice, comment = "TP")
    if close <= previousRes 
        strategy.exit("Buy", stop = previousRes, comment = "SL")
        
//Drawings
hline(0, "Base", color.white)
hline(100, "Max", color.white)

p_stoch = plot(s_stoch, color = c_stoch)
p_mfi = plot(s_mfi, color = c_mfi)

hline(70, "Top Line")
p_mid = plot(50, "Mid Line", color.new(color.white,100))
hline(50, "Mid Line")
hline(30, "Bot Line")
fill(p_stoch, p_mid, color.new(c_stoch, 60))

plotshape(crossOver ? 5 : crossUnder ? -5 : na, style = shape.square, color = crossOver ? c_buy : crossUnder ? c_sell : na, size = size.tiny, location = location.absolute)
plot((_src/sd_src)*2, color = hist_color, style = plot.style_histogram)

//Boxes
// var string same = ""

// var box _box = na
// if longTrend and is_ranging == false and same != "longtrend"
//     same := "longtrend"
//     _box := box.new(bar_index, 105, bar_index, 100, bgcolor = c_longtrend,border_color = color.new(color.white, 100))
// else if is_ranging and same != "isranging"
//     same := "isranging"
//     _box := box.new(bar_index, 105, bar_index, 100, bgcolor = c_flat,border_color = color.new(color.white, 100))

// if not na(_box)
//     box.set_right(_box,bar_index)

// //Div Lines
// var line _line = na
// if mfi_divergent_buy
//     _line = line.new(bL[1] -6, s_mfi[bar_index-bL[1]], bar_index + 6, s_mfi, color = color.green, width = 3)