Strategi Persilangan Purata Pergerakan ALMA


Tarikh penciptaan: 2023-09-23 15:11:02 Akhirnya diubah suai: 2023-09-23 15:11:02
Salin: 0 Bilangan klik: 1078
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini menggunakan dua Arnaud Legoux Moving Average ((ALMA) untuk menilai isyarat perdagangan. ALMA adalah penambahbaikan kepada purata bergerak tradisional, yang dapat mengurangkan ketinggalan dan meluruskan kurva. Strategi ini menghasilkan isyarat beli dengan menembusi ALMA perlahan di atas ALMA pantas, dan menghasilkan isyarat jual dengan menembusi ALMA perlahan di bawah ALMA pantas, sambil menggabungkan penapisan kuantiti, membentuk isyarat silang yang lebih stabil.

Prinsip Strategi

Indeks utama dan peraturan perdagangan strategi ini adalah seperti berikut:

  1. ALMA pantas: tempoh yang lebih pendek untuk menangkap penembusan

  2. ALMA perlahan: tempoh yang lebih lama digunakan untuk menentukan trend besar.

  3. Penapisan jumlah transaksi: Berkesan apabila memakai jumlah jangka panjang di atas purata jangka pendek.

  4. Membuat lebih banyak isyarat: ALMA pantas melalui ALMA perlahan dan penapisan kuantiti bertukar berkesan.

  5. Isyarat Pinto: ALMA pantas melalui ALMA perlahan.

  6. Isyarat kosong: ALMA pantas melalui ALMA perlahan dan penapisan kuantiti bertukar berkesan.

  7. Isyarat udara rata: ALMA pantas melalui ALMA perlahan.

Strategi ini mudah dan intuitif, dan menggabungkan pelbagai petunjuk teknikal seperti penilaian trend, penangkapan terobosan dan pengesahan kuantiti transaksi, membentuk sistem perdagangan yang agak stabil. Gabungan garis rata yang perlahan dapat menentukan arah trend dengan berkesan; penggunaan algoritma ALMA mengurangkan kesan ketinggalan pada perdagangan; penambahan kuantiti transaksi mengelakkan banyak terobosan palsu yang tidak pasti.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama berbanding dengan strategi penyambungan linear tradisional:

  1. Algoritma ALMA dapat mengurangkan kelewatan dan meningkatkan kualiti isyarat.

  2. Penapisan kuantitatif dapat mengelakkan kerosakan akibat penembusan palsu.

  3. Garis purata yang beransur-ansur berkerjasama untuk menilai trend besar dan mengelakkan perdagangan terbalik.

  4. Peraturan-peraturan ini mudah difahami, mudah difahami dan mudah dilaksanakan.

  5. Parameter garis purata boleh disesuaikan secara fleksibel untuk pasaran yang berbeza.

  6. Pengurusan kewangan yang munasabah dan boleh mengawal kerugian tunggal.

  7. Anda boleh meningkatkan lagi kesan strategi dengan mengoptimumkan parameter garis purata.

  8. Secara keseluruhannya, strategi ini meningkatkan kestabilan dan kualiti isyarat berbanding dengan strategi tradisional.

Analisis risiko

Walaupun terdapat banyak kelebihan dalam strategi ini, risiko berikut perlu diperhatikan:

  1. Strategi garis rata secara semula jadi terdedah kepada kekeliruan pasaran yang bergolak, menghasilkan banyak kerugian.

  2. Tetapan parameter algoritma ALMA mempengaruhi kesan strategi.

  3. Kesan penguatan kuantiti transaksi boleh mengelirukan keputusan isyarat perdagangan.

  4. Terdapat beberapa kelewatan yang tidak dapat mengelakkan kerugian sepenuhnya.

  5. Parametrics Optimization mempunyai risiko over-fit.

  6. Isyarat akan rosak jika jumlah pesanan tidak normal.

  7. Algoritma seperti pembelajaran mesin mungkin akan memberikan hasil yang lebih baik.

  8. Berhati-hatilah dengan nisbah pulangan balik pendapatan untuk mengelakkan kurva menjadi terlalu curam.

Arah pengoptimuman

Mengambil kira faktor risiko yang disebutkan di atas, strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter garis purata ALMA untuk meningkatkan sensitiviti tindak balas.

  2. Cuba cara yang berbeza untuk mengira jumlah transaksi.

  3. Memperkenalkan strategi hentikan kerugian dan kawalan ketat terhadap kerugian tunggal.

  4. Menubuhkan sistem isyarat dagangan yang bersepadu.

  5. Menambah modul pembelajaran mesin untuk menyesuaikan isyarat dengan lebih bijak.

  6. Dalam video yang disiarkan di YouTube, beliau turut memaparkan beberapa isu yang menjadi isu utama dalam kempen tersebut.

  7. Mengoptimumkan strategi pengurusan wang, menyesuaikan kedudukan mengikut pasaran yang berbeza.

  8. Kajian kecergasan strategi untuk mengelakkan kecocokan berlebihan

ringkaskan

Secara keseluruhannya, strategi ini meningkatkan kualiti dan kestabilan isyarat melalui algoritma ALMA dan pengesahan kuantiti transaksi berbanding dengan strategi silang linear tradisional. Tetapi pengoptimuman strategi perdagangan adalah proses yang berterusan, masih memerlukan perhatian terhadap risiko, dan peningkatan strategi dari pelbagai dimensi, yang membolehkan ia menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks.

Kod sumber strategi
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © Sarahann999
// Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/
//@version=5
strategy("ALMA Cross", overlay=true)

//User Inputs
src= (close)
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')

//Fast Settings
ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings")
alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma)

//Slow Settings
ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings")
alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2)

//Volume
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings")
longlen = input.int(10, minval=1, title = "Long Length")
short = ta.ema(volume, shortlen)
long = ta.ema(volume, longlen)
osc = 100 * (short - long) / long

//Define Cross Conditions
buy = ta.crossover(Alma1, Alma2)
sell = ta.crossunder(Alma1, Alma2)

//Calculate Take Profit Percentage
longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage',
     minval=0.0, step=0.1, defval=2) / 100
shortProfitPerc = input.float(title="Short Take Profit",
     minval=0.0, step=0.1, defval=2) / 100
     
// Figure out take profit price 1
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Make inputs that set the stop %  1
longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage',
     minval=0.0, step=0.1, defval=2.5) / 100
shortStopPerc = input.float(title="Short Stop Loss",
     minval=0.0, step=0.1, defval=2.5) / 100

// Figure Out Stop Price
longStopPrice  = strategy.position_avg_price * (1 - longStopPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)

//Define Conditions
buySignal = buy and osc > 0
     and strategy.position_size == 0

//sellSignal 
sellSignal = sell and osc > 0
     and strategy.position_size == 0

// Submit entry orders
if buySignal and long_entry
    strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long")
    alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar)
    
if sellSignal and short_entry
    strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short")
    alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar)
    
// Submit exit orders based on take profit price
if (strategy.position_size > 0)
    strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}")
if (strategy.position_size < 0)
    strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}")

//Draw
plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles)
plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)