Bar Momentum RedK

Penulis:ChaoZhang, Tarikh: 2022-05-18 11:28:24
Tag:SMAEMAWMAHMA

Momentum Bars (Mo_Bars) menawarkan cara yang berbeza untuk memvisualisasikan momentum (relatif) - dan menggunakan beberapa konsep TA mudah untuk memberikan perspektif yang berbeza ke dalam bagaimana kita membaca perubahan momentum dan menggabungkannya dalam perdagangan kita.

Idea di sini (dan skrip itu sendiri) benar-benar sangat mudah, dan (sangat longgar) diilhamkan oleh Elder's Impulse System (EIS) - kemudian berkembang untuk memanfaatkan beberapa konsep lain, dan menjadi kurang berantakan dan lebih mudah dibaca.

Pembinaan Mo_Bars

Konsep asas menggunakan 3 garis purata bergerak: baris pertama adalah MA yang agak cepat dengan panjang pendek - bertindak sebagai baris pengesanan harga utama

baris kedua adalah sedikit lebih perlahan daripada garis utama - 2 hingga 3 bar panjang - dan secara lalai akan menggunakan nilai terbuka sebagai sumber - ini berfungsi dengan lebih baik untuk mengenal pasti apabila harga penutupan mula bergerak lebih cepat daripada terbuka (seperti, bar lebih kerap ditutup lebih tinggi daripada mereka membuka) - garis ini bertindak sebagai garis isyarat - terdapat tetapan tambahan untuk kelewatan tambahan yang menggunakan kelancaran WMA biasa - kelewatan bertindak untuk memperbesar perpindahan relatif antara 2 MA

Untuk kedua-dua MA ini, saya memilih untuk menggunakan RSS MA (Lazy Line) - jenis MA lain boleh digunakan, tetapi sebab saya menggunakan jenis MA itu secara khusus adalah kerana ia bergerak dengan anggun - dan 2 Lazy Lines bergerak bersama-sama meminimumkan whipsaws dari turun naik harga kecil - saya diuji dengan jenis MA lain dan mendapati bahawa RSS mempunyai kelebihan di sana.

garis ketiga adalah MA yang lebih perlahan (panjang 5 hingga 6 x garis pantas) - dan bertindak sebagai penapis atau garis asas. Apabila kita berada di atas garis itu, kita harus memihak kepada kedudukan panjang - kita berada di wilayah bull. Apabila kita berada di bawah garis itu kita memihak kepada kedudukan pendek, dan kita berada di wilayah bear. Sesuaikan garis ini sesuai dengan gaya perdagangan dan jangka masa anda. (Saya memilih untuk menggunakan WMA sebagai jenis MA untuk baris penapis... dan ada alasan yang baik untuk itu - yang saya akan melangkau untuk sekarang - tetapi dalam versi masa depan, kita boleh menambah jenis MA pilihan lain.)

Menggunakan Mo_Bars

pada tahap yang sangat luas, kita boleh menggunakan Mo_Bars serupa dengan cara kita menggunakan MACD - kedua-duanya adalah pengayun berpusat dan tidak terhad - perhatikan perbezaannya bahawa Mo_Bars berdasarkan 3 MAs dan bukannya 2.

panjang bar Mo_Bar mencerminkan jarak antara MA utama dan MA isyarat - digambarkan berbanding dengan garis asas (garis penapis) - yang bermaksud bahawa panjang bar mewakili momentum relatif antara 2 MAs - Mo_Bars kemudian berwarna dengan cara yang mencerminkan peningkatan atau penurunan dalam nilai momentum itu (visual di sini mungkin telah diilhamkan oleh penunjuk lain yang baru diterbitkan oleh salah seorang ahli sihir kami yang dihormati - ia berfungsi dengan sempurna - jadi kredit yang sepatutnya di sini:)

dalam istilah yang mudah, jika MA utama berada di bawah MA isyarat, bar adalah merah - dan apabila MA utama berada di atas MA isyarat, bar adalah hijau - bar putih biasanya muncul apabila terdapat perubahan yang dikesan arah momentum relatif (perhatikan bahawa ini tidak sama dengan arah trend - dan itu adalah apa yang membantu menunjukkan dan memanfaatkan konvergensi dan divergensi - serupa dengan MACD)

  • dalam carta di atas, saya melihat beberapa contoh bagaimana memvisualisasikan momentum relatif dengan cara ini mendedahkan kawasan chop (Mo_Bars di atas sifar tetapi merah atau bergerak ke bawah, atau apabila Mo_Bars di bawah sifar dan hijau atau bergerak ke atas) - konvergensi / perbezaan dengan harga - dan bagaimana ini boleh bertindak untuk mendedahkan kemungkinan perubahan berpotensi dalam tindakan harga atau trend.

  • ada banyak lagi untuk bermain-main dengan persediaan ini - dan mungkin jika ada cukup minat boleh ada masa depan pos khusus tentang bagaimana menggunakan atau bahkan untuk berkembang lebih lanjut - ada banyak potensi di sini, untuk menambah lebih banyak penapis (mungkin berdasarkan jumlah), amaran, isyarat... dll - jadi mari kita lihat minat :)

Berikut adalah setup terperinci (grafik atas) yang berdasarkan Mo_Bars Tetapan untuk MAs pada carta harga telah dipadukan / disegerakan dengan tetapan Mo_Bars pada panel bawah untuk menunjukkan bagaimana skrip berfungsi dan bagaimana ia menterjemahkan tindakan MA pada carta harga kepada apa yang kita lihat di bawah.

Ujian belakang

img


/*backtest
start: 2022-05-10 00:00:00
end: 2022-05-16 23:59:00
period: 3m
basePeriod: 1m
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/
// © RedKTrader

//@version=5
indicator('[dev]RedK Momentum Bars', shorttitle='RedK MoBars v3.0', explicit_plot_zorder = true, timeframe='', timeframe_gaps=false)

// A trading system composed of 2 short Lazy Lines (preferably one open and one close - 2-3 bars apart) and a WMA long filter 
// loosely inspired by Edler Impulse
// v2.0 cleaned up code and added MA options to be able to mix and match, and experiment with various setups 
// default values (my personal preference) remain the same as in v1.0 
// for example, some traders will consider "bear territory" only below SMA50, others will use EMA30 .. and so on.
// ---------------------------------------------------------------------------------------------------------------
// MoBars v3.0: 
// updated defaults to match the most common 3x MA cross-over set-up of SMA (10, 20, 50)
// updated visuals to push the 0 line to the background of the plot (using the explcit_plot_zorder param)
// and added alerts for crossing up, down and swing around the 0 line (the Bullish/Bearish Filter MA)

//==============================================================================
f_LazyLine(_data, _length) =>
    w1 = 0,     w2 = 0,     w3 = 0
    L1 = 0.0,   L2 = 0.0,   L3 = 0.0
    w = _length / 3

    if _length > 2
        w2 := math.round(w)
        w1 := math.round((_length - w2) / 2)
        w3 := int((_length - w2) / 2)

        L1 := ta.wma(_data, w1)
        L2 := ta.wma(L1, w2)
        L3 := ta.wma(L2, w3)
        
    else
        L3 := _data
        
    L3
//==============================================================================

// =============================================================================    
f_getMA(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) : 
      type == "EMA" ? ta.ema(source, length) :
      type == "WMA" ? ta.wma(source, length) :
      type == "HMA" ? ta.hma(source, length) :
      f_LazyLine(source, length)
// =============================================================================    

// ------------------------------------------------------------------------------------------------
// Inputs
// Note, in v3.0, changed default lengths to 10, 20 and 50  -- and all MA types to SMA. 
// ------------------------------------------------------------------------------------------------

Fast_Src    = input.source(close,   title='Fast MA Source',          inline = 'Fast')
Fast_Length = input.int(10,          title = 'Length',   minval = 1, inline = 'Fast')
Fast_Type   = input.string('SMA', title = 'Type',                    inline = 'Fast',
  options = ['RSS_WMA', 'WMA', 'EMA', 'SMA', 'HMA'])

Slow_Src    = input.source(close,    title='Slow MA Source',         inline = 'Slow')
Slow_Length = input.int(20,          title='Length',     minval = 1, inline = 'Slow')
Slow_Type   = input.string('SMA', title = 'Type',                    inline = 'Slow',
  options = ['RSS_WMA', 'WMA', 'EMA', 'SMA', 'HMA'])

Slow_Delay  = input.int(3,          title='Delay (1 = None)',       minval = 1)

Fil_Length  = input.int(50,       title='Filter MA Length', minval = 1, inline = 'Filter')
Fil_Type    = input.string('SMA', title = 'Type',                   inline = 'Filter',
  options = ['RSS_WMA', 'WMA', 'EMA', 'SMA', 'HMA'])


// ------------------------------------------------------------------------------------------------
// Calculation
// ------------------------------------------------------------------------------------------------

Fast    = f_getMA(Fast_Src, Fast_Length, Fast_Type)
Slow    = f_getMA(Slow_Src, Slow_Length, Slow_Type)

Filter  = f_getMA(close, Fil_Length, Fil_Type)

Fast_M  = Fast - Filter
Slow_M  = Slow - Filter

Rel_M   = ta.wma(Slow_M, Slow_Delay)

// prep the Momentum bars
o = Rel_M
c = Fast_M
h = math.max(o, c)
l = math.min(o, c)

rising      = ta.change(c) > 0


// ------------------------------------------------------------------------------------------------
// Colors & Plots
// ------------------------------------------------------------------------------------------------

hline(0, title = 'Zero Line', color = color.blue, linestyle = hline.style_solid)

c_barup     = #11ff20ff
c_bardn     = #ff1111ff
c_bardj     = #ffffffff

c_barupb    = #1b5e20ff
c_bardnb    = #981919ff
c_bardjb    = #9598a1ff

barcolor    = c > o and rising ? c_barup : c < o and not rising ? c_bardn : c_bardj
borcolor    = c > o and rising ? c_barupb : c < o and not rising ? c_bardnb : c_bardjb
//plotcandle(o, h, l, c, 'MoBars', barcolor, barcolor, bordercolor = borcolor)


// ===========================================================================================================
//      v3.0 adding alerts 
// these alerts will trigger as soon as the Momentum Bar touches above the filter line 
// this approach can lead to "false signals" but also has an advantage (of alerting to a possible mood/mode change)
// another option - maybe in an updated version - could be to trigger alerts *only* when the full Momentum Bar completely clears the filter line (above or below)
// and it's easy to make that a user choice in the study inputs
// ===========================================================================================================

Alert_up    = ta.crossover(h,0)
Alert_dn    = ta.crossunder(l,0)
Alert_swing = Alert_up or Alert_dn

// "." in alert title for the alerts to show in the right order up/down/swing 
alertcondition(Alert_up,    ".   MoBars Crossing 0 Up",         "MoBars Up - Bullish Mode Detected!")
alertcondition(Alert_dn,    "..  MoBars Crossing 0 Down",       "MoBars Down - Bearish Mode Detected!")
alertcondition(Alert_swing, "... MoBars Crossing 0",            "Mobars Swing - Possible Reversal Detected!")



if Alert_up
    strategy.entry("Enter Long", strategy.long)
else if Alert_dn
    strategy.entry("Enter Short", strategy.short)

Berkaitan

Lebih lanjut