理查德海龟交易策略(Richard’s Turtle Trading Strategy)是一个基于理查德·丹尼斯(Richard Dennis)海龟交易技术的买卖策略。该策略利用价格突破实现趋势追踪交易。当价格突破20日新高时做多,当价格突破20日新低时做空。
理查德海龟交易策略的核心逻辑是基于价格突破实现趋势追踪。具体来说,策略同时持续监控价格在20日内的最高值(_20_day_highest)和最低值(_20_day_lowest)。当当前收盘价超过20日最高值时,表明价格出现向上突破,此时发出做多信号。当当前收盘价低于20日最低值时,表明价格出现向下突破,此时发出做空信号。
进入仓位后,策略会利用平均真实波幅(ATR)来计算止损位。同时,也会跟踪10日最高价和最低价,进行滑点止损。当做多止损或滑点止损触发时平多仓;当做空止损或滑点止损触发时平空仓。
理查德海龟交易策略具有以下优势:
理查德海龟交易策略也存在一些风险:
为了降低这些风险,可以考虑优化入场条件,利用更多指标预测趋势;调整止损算法,降低止损频率。
理查德海龟交易策略可以从以下几个方向进行优化:
理查德海龟交易策略是一个非常典型的突破追踪策略。它简单易行,适合初学者学习,也是量化交易的一个典范。该策略可以通过多方面优化,降低交易风险,提高盈利空间。总的来说,理查德海龟策略具有很强的启发意义。
/*backtest
start: 2023-02-05 00:00:00
end: 2024-02-05 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/
// © melodyera0822
//@version=4
strategy("Richard Strategy", overlay=true)
// User input
variable_for_stoploss = input(4,title="stop loss var")
lenght = input(20,title="lenght")
// high_low
_20_day_highest = highest(nz(close[1]), lenght)
_20_day_lowest = lowest(nz(close[1]), lenght)
_10_day_low = lowest(nz(close[1]), lenght/2)
_10_day_high = highest(nz(close[1]), lenght/2)
//indicators
atr20 = atr(20)
ema_atr20 = ema(atr20,20)
//vars
var traded = "false"
var buy_sell = "none"
var buyExit = false
var sellExit = false
var stoploss = 0
buyCon = close > _20_day_highest and traded == "false"
plotshape(buyCon,style = shape.triangleup,location = location.belowbar, color = color.green )
if (buyCon)
strategy.entry("long", strategy.long, when = buyCon)
traded := "true"
buy_sell := "buy"
stoploss := round(close - variable_for_stoploss * ema_atr20)
sellCon = close < _20_day_lowest and traded == "false"
plotshape(sellCon,style = shape.triangledown, color = color.red )
if (sellCon)
strategy.entry("short", strategy.short)
traded := "true"
buy_sell := "sell"
stoploss := round(close - variable_for_stoploss * ema_atr20)
if traded == "true"
if buy_sell == "buy" and ((close<stoploss)or(close<_10_day_low))
strategy.close("long")
buyExit := true
traded := "false"
if buy_sell == "sell" and ((close>stoploss)or(close>_10_day_high))
strategy.close("short")
sellExit := true
traded := "false"
plotshape(buyExit,style = shape.triangleup,location = location.belowbar, color = color.yellow )
buyExit := false
plotshape(sellExit,style = shape.triangledown, color = color.yellow )
sellExit := false