
この戦略は主にトレンドブレイク原理に基づいており,チャネルブレイクの方法と組み合わせて,快線・スローライン・デュアルレールブレイクを使用してトレンドの方向を判断する.この戦略は,突破エントリーと撤回エクジットの二重保護を同時に備えており,市場の突破に効果的に対応できる.この戦略の最大の利点は,アカウントの撤回をリアルタイムで監視でき,撤回が一定比率を超えると,ポジションの規模を主動的に削減するということである.これは,戦略が市場リスクとアカウントのリスク抵抗力を効果的に制御できるようにする.
快慢線双線:それぞれ快線と慢線を用いて通路を構築する。快線は反応速度が速く,慢線は滑らか度が高く。双線突破を組み合わせてトレンド方向を判断する。
突破エントリー:価格が上方通路を突破するときに多めに,下方通路を突破するときに空にする. ストップ・ストップ・シングル・ストップの方法を採用してリスクを軽減する.
撤回出口:最大撤回をリアルタイムで監視する.撤回出口に達すると,平仓を積極的に停止する.撤回出口は,市場状況に応じて調整することができる.
持仓規模自律化:持仓数量は,口座権益に応じてリアルタイムで調整し,市場リスクを回避する.口座の撤回が大きいほど,持仓が少ないほど,リスクに対する抵抗力が強くなる.
双軌通路+突破エントリーにより,トレンドの判断がより正確になります.
単一損失を効率的に制御する止損防止機構.
アカウントの撤収をリアルタイムで監視し,ポジションの規模を主動的に調整し,市場リスクを軽減します.
持仓規模は口座の利権と関連しており,リスク抵抗性が強く,市場の変動に対応できる.
大規模な震動の際には,撤退制御が効果をなくし,損失が拡大する可能性があります.
快線が中立区域に入ると,複数の無効突破信号が発生する可能性がある.
スローラインが滑らかすぎて,速度の逆転を捕まえられない.
多空間の混用の場合,双方向の倉庫保有は,収監の危険性がある.
大規模な地震の場合は,過剰な止損を避けるために,より高い撤退の許容度を設定できます.
中立領域のフィルタリングを追加し,中立領域の無効信号を回避する.
スローライン通路のパラメータを最適化し,高速走行状況への反応速度を向上させる.
倉庫開き規則を追加し,両方向に倉庫を閉じ込めるのを避ける.
この戦略は,全体的に中長期トレンドの取引に適した有効な戦略である.戦略の最大の優点は,リアルタイムで撤回モニタリングと動的にポジション調整である.これは,戦略が,ポジションの規模を自動的に調整し,市場への強い適応能力を有することを可能にする.大幅な情勢の突発や価格の揺れが起きたとき,戦略は,ポジションの規模を自動的に削減し,損失の拡大を効果的に防止することができる.これは,多くの従来の戦略が行うのは難しい.全体的に言えば,この戦略のアイデアは新鮮で,強力な実用性がある.探索と最適化の価値があります.
//Noro
//2020
//Original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007, CURTIS FAITH, ISBN: 9780071486644)
//@version=4
strategy("Noro's Turtles Strategy", shorttitle = "Turtles str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, title = "Long")
needshort = input(false, title = "Short")
sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
needfast = input(true, title = "Fast")
needslow = input(true, title = "Slow")
enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)
showof = input(true, title = "Show offset")
showll = input(false, title = "Show lines")
showlabel = input(true, defval = true, title = "Show label")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Fast
fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)
//Slow
slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)
//Lines
offset = showof ? 1 : 0
col1 = showll and needlong and needfast ? color.blue : na
col2 = showll and needshort and needfast ? color.red : na
col3 = showll and needlong and needslow ? color.blue : na
col4 = showll and needshort and needslow ? color.red : na
plot(fastL, color = col1, offset = offset)
plot(fastLC, color = col1, offset = offset)
plot(fastS, color = col2, offset = offset)
plot(fastSC, color = col2, offset = offset)
plot(slowL, color = col3, offset = offset)
plot(slowLC, color = col3, offset = offset)
plot(slowS, color = col4, offset = offset)
plot(slowSC, color = col4, offset = offset)
//Orders
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
size = strategy.position_size
lotlong = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort = 0.0
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]
//Fast
strategy.entry("fast L", strategy.long, lotlong, stop = fastL, when = needfast and needlong and strategy.position_size == 0 and truetime)
strategy.entry("fast S", strategy.short, lotshort, stop = fastS, when = needfast and needshort and strategy.position_size == 0 and truetime)
strategy.exit("fast L", stop = fastLC, when = needfast and needlong and strategy.position_size > 0)
strategy.exit("fast S", stop = fastSC, when = needfast and needshort and strategy.position_size < 0)
//Slow
strategy.entry("slow L", strategy.long, lotlong, stop = slowL, when = needslow and needlong and strategy.position_size == 0 and truetime)
strategy.entry("slow S", strategy.short, lotshort, stop = slowS, when = needslow and needshort and strategy.position_size == 0 and truetime)
strategy.exit("slow L", stop = slowLC, when = needslow and needlong and strategy.position_size > 0)
strategy.exit("slow S", stop = slowSC, when = needslow and needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("fast L")
strategy.cancel("fast S")
strategy.cancel("slow L")
strategy.cancel("slow S")
if showlabel
//Drawdown
max = 0.0
max := max(strategy.equity, nz(max[1]))
dd = (strategy.equity / max - 1) * 100
min = 100.0
min := min(dd, nz(min[1]))
//Label
min := round(min * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)