Kombo Trend Reversal Moving Average Crossover Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-28 13:47:05
Tag:

img

Ringkasan

Ini adalah strategi gabungan yang menggabungkan strategi pembalikan trend dan strategi silang purata bergerak untuk menjana isyarat perdagangan yang lebih tepat.

Logika Strategi

Strategi ini terdiri daripada dua bahagian:

  1. 123 Strategi Pembalikan: Pergi panjang apabila harga penutupan meningkat selama 2 hari berturut-turut dan stokastik perlahan 9 hari di bawah 50; Pergi pendek apabila harga penutupan jatuh selama 2 hari berturut-turut dan stokastik cepat 9 hari di atas 50.

  2. Strategi Purata Bill Williams: Hitung purata pergerakan harga purata 13, 8 dan 5 hari dan pergi panjang apabila MA yang lebih cepat melintasi atas MA yang lebih perlahan; pergi pendek apabila MA yang lebih cepat melintasi di bawah MA yang lebih perlahan.

Akhirnya, isyarat perdagangan sebenar dihasilkan hanya apabila kedua-dua strategi bersetuju dengan arah; jika tidak, tidak ada perdagangan.

Analisis Kelebihan

Strategi combo menapis bunyi bising menggunakan pengesahan trend berganda, dengan itu meningkatkan ketepatan isyarat.

Analisis Risiko

Risiko adalah:

  1. Penapis berganda mungkin terlepas beberapa perdagangan yang baik
  2. Tetapan MA yang salah boleh menilai trend dengan salah
  3. Strategi pembalikan itu sendiri mempunyai risiko kerugian

Risiko boleh dikurangkan dengan mengoptimumkan parameter MA atau logik masuk/keluar.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Ujian gabungan MA yang berbeza untuk mencari parameter optimum
  2. Menambah stop loss kepada loss limit
  3. Menggabungkan jumlah untuk mengenal pasti kualiti isyarat
  4. Menggunakan pembelajaran mesin untuk mengoptimumkan automatik

Kesimpulan

Strategi ini menggabungkan penapis trend dua dan MA untuk menapis bunyi secara berkesan dan meningkatkan ketepatan keputusan.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/06/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This indicator calculates 3 Moving Averages for default values of
// 13, 8 and 5 days, with displacement 8, 5 and 3 days: Median Price (High+Low/2).
// The most popular method of interpreting a moving average is to compare 
// the relationship between a moving average of the security's price with 
// the security's price itself (or between several moving averages).
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

BillWilliamsAverages(LLength, MLength,SLength, LOffset,MOffset, SOffset ) =>
    xLSma = sma(hl2, LLength)[LOffset]
    xMSma = sma(hl2, MLength)[MOffset]
    xSSma = sma(hl2, SLength)[SOffset]
    pos = 0
    pos := iff(close < xSSma and xSSma < xMSma and xMSma < xLSma, -1,
    	   iff(close > xSSma and xSSma > xMSma and xMSma > xLSma, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams Averages. 3Lines", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LLength = input(13, minval=1)
MLength = input(8,minval=1)
SLength = input(5,minval=1)
LOffset = input(8,minval=1)
MOffset = input(5,minval=1)
SOffset = input(3,minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAverages = BillWilliamsAverages(LLength, MLength,SLength, LOffset, MOffset, SOffset)
pos = iff(posReversal123 == 1 and posBillWilliamsAverages == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAverages == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Lebih lanjut