Strategi ini menggunakan moving averages untuk membuat keputusan. Strategi ini dilakukan dengan mengatur panjang garis rata-rata dan melakukan operasi jual beli ketika garis rata-rata terpecah. Strategi ini mudah digunakan dan mudah dikuasai.
Strategi ini digunakan untuk menilai pergerakan harga dengan menetapkan dua rata-rata bergerak, garis cepat dan garis lambat. Garis cepat memiliki siklus pendek dan responsif; Garis lambat memiliki siklus panjang dan responsif.
Kode ini mendefinisikan periode garis cepat shortPeriod dan periode garis lambat longPeriod dengan mengatur parameter input. Kemudian menghitung nilai dari dua garis rata shortSMA dan longSMA.
Ketika garis rata-rata jangka pendek dari bawah ke atas menembus garis rata-rata jangka panjang, menunjukkan bahwa pergerakan harga dari turun ke bawah, melakukan over; Ketika garis rata-rata jangka pendek dari atas ke bawah menembus garis rata-rata jangka panjang, menunjukkan bahwa pergerakan harga dari turun ke bawah, melakukan over.
Termasuk dalam kondisi untuk melakukan posisi ganda:
快线由下向上突破慢线
快线>慢线
Termasuk dalam kondisi posisi shorting:
快线由上向下跌破慢线
快线<慢线
Selain itu, strategi juga mengatur parameter seperti stop loss, stop loss, dan jumlah untuk mengendalikan risiko.
Pengendalian risiko:
Konsep strategi perobekan rata-rata sederhana, dengan cepat dan lambat menilai rata-rata melakukan lebih banyak waktu kosong, pengoperasiannya mudah. Namun, ada beberapa masalah, seperti perobekan palsu, keterlambatan, dan lain-lain.
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 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/
// © YohanNaftali
//@version=5
///////////////////////////////////////////////////////////////////////////////
// Heikin Ashi Candle Startegy
// ver 2021.12.29
// © YohanNaftali
// This script composed by Yohan Naftali for educational purpose only
// Reader who will use this signal must do own research
///////////////////////////////////////////////////////////////////////////////
strategy(
title = 'Heikin Ashi Candle Startegy Long',
shorttitle = 'HA Strategy Long',
format = format.price,
precision = 0,
overlay = true)
// Input
validationPeriod = input.int(
defval = 3,
title = 'Validation Period',
group = 'Candle')
qtyOrder = input.float(
defval = 1.0,
title = 'Qty',
group = 'Order')
maxActive = input.float(
defval = 1.0,
title = 'Maximum Active Open Position',
group = 'Order')
// Long Strategy
tpLong = input.float(
defval = 1,
title = "Take Profit (%)",
minval = 0.0,
step = 0.1,
group = "Long") * 0.01
slLong = input.float(
defval = 25,
title = "Stop Loss (%)",
minval=0.0,
step=0.1,
group="Long") * 0.01
trailingStopLong = input.float(
defval = 0.2,
title = "Trailing Stop (%)",
minval = 0.0,
step = 0.1,
group = 'Long') * 0.01
// Calculation
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
haOpen = request.security(haTicker, timeframe.period, open)
// Long
limitLong = tpLong > 0.0 ? strategy.position_avg_price * (1 + tpLong) : na
stopLong = slLong > 0.0 ? strategy.position_avg_price * (1 - slLong) : na
float trailLong = 0.0
trailLong := if strategy.position_size > 0
trailClose = close * (1 - trailLong)
math.max(trailClose, trailLong[1])
else
0
isGreen = true
for i = 0 to validationPeriod-1
isGreen := isGreen and haClose[i] > haOpen[i]
isLong = isGreen and haClose[validationPeriod] < haOpen[validationPeriod]
plot(
limitLong,
title = 'Limit',
color = color.rgb(0, 0, 255, 0),
style = plot.style_stepline,
linewidth = 1)
plot(
trailLong,
title = 'Trailing',
color = color.rgb(255, 255, 0, 0),
style = plot.style_stepline,
linewidth = 1)
plot(
stopLong,
title = 'Stop',
style = plot.style_stepline,
color = color.rgb(255, 0, 0, 0),
linewidth = 1)
// plotshape(
// isLong,
// title = 'Entry',
// style = shape.arrowup,
// location = location.belowbar,
// offset = 1,
// color = color.new(color.green, 0),
// text = 'Long Entry',
// size = size.small)
// Strategy
strategy.risk.max_position_size(maxActive)
strategy.risk.allow_entry_in(strategy.direction.long)
strategy.entry(
id = "Long",
direction = strategy.long,
qty = qtyOrder,
when = isLong,
alert_message = "LN")
if (strategy.position_size > 0)
strategy.exit(
id = "Long Exit",
from_entry = "Long",
limit = limitLong,
stop = stopLong,
trail_price = trailLong,
alert_message = "LX")