Hein Ashu dan Strategi Super Trend


Tarikh penciptaan: 2023-11-02 16:15:18 Akhirnya diubah suai: 2023-11-02 16:15:18
Salin: 1 Bilangan klik: 1211
1
fokus pada
1617
Pengikut

Hein Ashu dan Strategi Super Trend

Gambaran keseluruhan

Strategi Hype dan Super Trend adalah strategi pemantauan trend yang menggabungkan carta Hype dan indikator Super Trend. Strategi ini bertujuan untuk mengenal pasti arah trend, berdagang di kawasan trend, dan keluar dengan cepat apabila trend berbalik, untuk meminimumkan kerugian yang disebabkan oleh perdagangan bukan trend.

Prinsip Strategi

Graf Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hyundai Hy

Strategi ini pertama-tama mengira grafik Hines dan kemudian menggunakan garis Hines dan K untuk mengira indikator trend super. Apabila harga menembusi indikator trend super, ia menghasilkan isyarat perdagangan. Secara khusus, strategi ini menggunakan garis Hines dan K untuk mengira gelombang sebenar, dan kemudian menggabungkan gelombang dan harga purata untuk mendapatkan tren atas dan bawah trend super.

Strategi ini juga melakukan pengoptimuman parameter untuk indikator super trend, menggunakan kombinasi parameter terbaik, sehingga meningkatkan kepekaan indikator. Selain itu, strategi ini memasukkan mekanisme hentikan kerugian, yang dapat mengawal risiko sambil menjamin keuntungan.

Analisis kelebihan

  • Ia boleh digunakan untuk menyaring bunyi bising dan menjadikan isyarat lebih jelas.
  • Indeks Super Trend mampu menangkap perubahan trend dengan cepat dan menghantar isyarat dagangan tepat pada masanya.
  • Pengoptimuman parameter meningkatkan kebolehpercayaan penunjuk.
  • Mekanisme terbina dalam untuk menghentikan kerosakan dan mengawal risiko.
  • Menggabungkan trend tracking dan sistem perdagangan mekanikal, tahap automasi yang tinggi.

Analisis risiko

  • Sistem perdagangan mempunyai tahap automasi yang tinggi dan perlu dipantau dengan teliti untuk mengelakkan kecacatan.
  • Walaupun ia boleh menyaring bunyi bising, ia juga boleh melepaskan isyarat pembalikan yang sangat kecil.
  • Indikator Supertrend mungkin menghasilkan isyarat yang salah, yang menyebabkan permulaan atau hentian awal.
  • Penetapan yang tidak betul juga boleh menyebabkan kerugian yang tidak perlu.
  • Data pengesanan yang tidak mencukupi boleh menyebabkan over-coordinate. Hasil pengesanan yang tidak mencukupi boleh menyebabkan perbezaan yang besar antara hasil pengesanan yang nyata dan yang nyata.

Arah pengoptimuman

  • Uji lebih banyak kombinasi parameter untuk mengoptimumkan lagi indikator Super Trend.
  • Cuba indikator lain untuk mengesahkan isyarat indikator supertrend, mengurangkan kadar isyarat yang salah.
  • Mengoptimumkan strategi menghentikan kerugian, mengurangkan kerugian yang tidak perlu dengan menjamin keuntungan.
  • Meningkatkan kebolehan algoritma pembelajaran mesin untuk menilai trend sebenar menggunakan latihan data besar.
  • Menggunakan tempoh masa yang lebih lama dan data sejarah dari lebih banyak pasaran yang berbeza untuk mengkaji semula, meningkatkan kebolehpercayaan.

ringkaskan

Strategi Hype dan Super Trend adalah strategi untuk mengesan trend. Ia dapat mengenal pasti arah trend, berdagang di bawah trend besar, dan berhenti dengan cepat apabila berbalik. Strategi ini menggabungkan penapisan bunyi grafik Hype dan kemampuan untuk menangkap perubahan trend dengan cepat dalam indikator Super Trend.

Kod sumber strategi
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("Heiken Ashi & Super Trend_ARM", overlay=true,  pyramiding=1,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.02)

///////////////////////////////////////////////////
////////////////////Function///////////////////////
///////////////////////////////////////////////////


heikinashi_open = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_high = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, high)
heikinashi_low  = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, low)
heikinashi_close= request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_color = heikinashi_open < heikinashi_close ? #53b987 : #eb4d5c
// plotbar(heikinashi_open, heikinashi_high, heikinashi_low, heikinashi_close, color=heikinashi_color)

x_sma(x, y) =>
    sumx = 0.0
    for i = 0 to y - 1
        sumx := sumx + x[i] / y
    sumx

x_rma(src, length) =>
	alpha = 1/length
	sum = 0.0
	sum := na(sum[1]) ? x_sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])

x_atr(length) =>
    trueRange = na(heikinashi_high[1])? heikinashi_high-heikinashi_low : math.max(math.max(heikinashi_high - heikinashi_low, math.abs(heikinashi_high - heikinashi_close[1])), math.abs(heikinashi_low - heikinashi_close[1]))
    //true range can be also calculated with ta.tr(true)
    x_rma(trueRange, length)

x_supertrend(factor, atrPeriod) =>
	src = (heikinashi_high+heikinashi_low)/2
	atr = x_atr(atrPeriod)
	upperBand = src + factor * atr
	lowerBand = src - factor * atr
	prevLowerBand = nz(lowerBand[1])
	prevUpperBand = nz(upperBand[1])

	lowerBand := lowerBand > prevLowerBand or heikinashi_close[1] < prevLowerBand ? lowerBand : prevLowerBand
	upperBand := upperBand < prevUpperBand or heikinashi_close[1] > prevUpperBand ? upperBand : prevUpperBand
	int direction = na
	float superTrend = na
	prevSuperTrend = superTrend[1]
	if na(atr[1])
		direction := 1
	else if prevSuperTrend == prevUpperBand
		direction := heikinashi_close > upperBand ? -1 : 1
	else
		direction := heikinashi_close < lowerBand ? 1 : -1
	superTrend := direction == -1 ? lowerBand : upperBand
	[superTrend, direction]
	

///////////////////////////////////////////////////
////////////////////Indicators/////////////////////
///////////////////////////////////////////////////

factor = input.float(3.0, "Factor", step = 0.01)
atrPeriod = input(10, "ATR Length")


[supertrend, direction] = x_supertrend(factor, atrPeriod)

bodyMiddle = plot((heikinashi_open + heikinashi_close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)

///////////////////////////////////////////////////
////////////////////Strategy///////////////////////
///////////////////////////////////////////////////

var bool longCond                    = na, var bool shortCond                   = na, longCond := nz(longCond[1]), shortCond := nz(shortCond[1])
var int CondIni_long                 = 0, var int CondIni_short                 = 0, CondIni_long := nz(CondIni_long[1]), CondIni_short := nz(CondIni_short[1])
var float open_longCondition         = na, var float open_shortCondition   = na


long  = ta.change(direction) < 0
short = ta.change(direction) > 0


longCond        :=                                                              long
shortCond       :=                                                              short

CondIni_long    :=                                                              longCond[1] ? 1 : shortCond[1] ? -1 : nz(CondIni_long[1])
CondIni_short   :=                                                              longCond[1] ? 1 : shortCond[1] ? -1 : nz(CondIni_short[1])
longCondition   =                                                               (longCond[1] and nz(CondIni_long[1]) == -1)
shortCondition  =                                                               (shortCond[1] and nz(CondIni_short[1]) == 1)


open_longCondition             :=                                          long ? close[1] :                                                      nz(open_longCondition[1])
open_shortCondition            :=                                          short ? close[1] :                                                     nz(open_shortCondition[1])


//TP
tp                    = input.float(1.1  , "TP [%]",                      step = 0.1) 

//BACKTESTING inputs --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

testStartYear       =                   input.int(2000,                             title="start year",                                         minval = 1997, maxval = 3000,                                                   group= "BACKTEST") 
testStartMonth      =                   input.int(01,                               title="start month",                                        minval = 1, maxval = 12,                                                        group= "BACKTEST")
testStartDay        =                   input.int(01,                               title="start day",                                          minval = 1, maxval = 31,                                                        group= "BACKTEST")
testPeriodStart     =                   timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear        =                   input.int(3333,                             title="stop year",                                          minval=1980, maxval = 3333,                                                     group= "BACKTEST")
testStopMonth       =                   input.int(12,                               title="stop month",                                         minval=1, maxval=12,                                                            group= "BACKTEST")
testStopDay         =                   input.int(31,                               title="stop day",                                           minval=1, maxval=31,                                                            group= "BACKTEST")
testPeriodStop      =                   timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod          =                   time >= testPeriodStart and time <= testPeriodStop ? true : false

// Backtest  ==================================================================================================================================================================================================================================================================================================================================


if longCond
    strategy.entry("L", strategy.long, when=testPeriod)

if shortCond
    strategy.entry("S", strategy.short, when=testPeriod)
    

strategy.exit("TP_L", "L", profit =((open_longCondition   *       (1+(tp/100))) - open_longCondition)/syminfo.mintick)

strategy.exit("TP_S", "S", profit =((open_shortCondition  *       (1+(tp/100))) - open_shortCondition)/syminfo.mintick)