Strategi menembusi garis rata adalah strategi perdagangan garis pendek yang menggunakan purata bergerak untuk membuat keputusan. Strategi ini dilakukan dengan menetapkan panjang garis rata dan melakukan operasi jual beli ketika garis rata pecah. Ia dicirikan oleh operasi yang mudah dan mudah dikuasai.
Strategi ini digunakan untuk menilai pergerakan harga dengan menetapkan dua purata bergerak, garis cepat dan garis perlahan. Garis cepat adalah pendek dan sensitif terhadap tindak balas; garis perlahan adalah panjang dan stabil.
Kod ini mentakrifkan tempoh garis pantas (shortPeriod) dan tempoh garis perlahan (longPeriod) dengan menetapkan parameter input. Kemudian nilai dua garis rata (shortSMA dan longSMA) dikira.
Apabila garis purata jangka pendek dari bawah ke atas menembusi garis purata jangka panjang, menunjukkan pergerakan harga dari turun ke bawah, lakukan lebih banyak; apabila garis purata jangka pendek dari atas ke bawah menembusi garis purata jangka panjang, menunjukkan pergerakan harga dari turun ke bawah, lakukan kosong.
Syarat untuk masuk ke dalam posisi berbilang:
快线由下向上突破慢线
快线>慢线
Syarat untuk memasuki kedudukan kosong:
快线由上向下跌破慢线
快线<慢线
Selain itu, strategi ini juga menetapkan parameter seperti stop loss, stop loss, dan jumlah untuk mengawal risiko.
Kaedah pencegahan risiko:
Konsep strategi perobosan rata-rata adalah mudah, dengan cepat dan perlahan menilai rata-rata melakukan lebih banyak masa kosong, pengendalian mudah. Tetapi ada beberapa masalah, seperti perobosan palsu, ketinggalan, 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")