カメの取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月25日 17:12:05
タグ:

img

概要

カメトレーディング戦略は,モメントブレイクを追跡するトレンドフォロー戦略である.有名なトレーダーであるリチャード・デニスによって1980年代に開発され,トレーダーは生まれることよりもルールによって育つことができることを示した.戦略の核心理念は,価格ブレイクを追跡し,トレンドを追跡することであり,下向きのリスクを制限するためにマネーマネジメント原則を厳格に遵守することです.

戦略の論理

カメ取引戦略は,チャネルを構築するために2つのパラメータNとN/2を使用する.特に,最も最近のN日およびN/2日の間で最も高い価格と最低価格を計算する.価格がN日チャネルを超えると,ロングポジションが確立される.価格がN/2日チャネルを下回ると,ポジションは閉鎖される.同様に,価格がN日チャネルを下回ると,ショートポジションが確立され,価格がN/2日チャネルを超えると閉鎖される.目標はリスクを制御しながら価格動向を追跡することです.

このコードでは,Nは,enter_slowN/2 はenter_fast最も高い価格 (slowLそしてfastL低価格 (slowSそしてfastS最新の55日間と20日間の間を別々に計算します.価格が55日間のチャネルを超えるとロングポジションが開かれます (enterL2価格が20日チャネルを下回ると閉じる (exitL1ショートポジションは,価格が55日チャネルを下回り突破すると開かれます (enterS2価格が20日間のチャネルを超えると閉じる (exitS1).

利点分析

トートル・トレーディング戦略の最大の利点はリスク管理である.価格ブレイクでポジションを確立し,引き下げで迅速に停止することで,個々の取引での損失を効果的に制御する.固定分数的なポジションサイジングの使用によりリスクがさらに減少する.

シンプルなパラメータ選択がもう1つの利点です. 戦略全体には,理解し調整しやすい4つのパラメータのみがあります. パラメータ自体も,頻繁な最適化を必要とせず,かなり安定しています.

リスク分析

トートル取引戦略の最大のリスクは,長期的トレンドを追跡できないことである.トレンドが形成され始めたときにエントリー機会を逃す可能性があります.また,揺れ動いている価格振動環境では,戦略は頻繁なエントリーと出口を誘発し,取引コストとスリップリスクを増加させます.

さらに,固定パラメータ設定は,製品や市場制度によって非常に異なる性能を有し,経験に基づく手動調整が必要になります.

増進 の 機会

カメ取引戦略は,いくつかの方法で強化することができます:

  1. パラメータNとN/2に市場変動と信号周波数に基づいて適応能力を追加し,シナリオ全体でシステムをより堅牢にする.

  2. 入場前にトレンド検知ルールを導入して 不安定な市場への誤った入場を避ける

  3. 長期間の傾向を確認し,低期間の取引を行うため,多期間のアプローチを採用する.

  4. ストップ・ロスのルールを最適化し,トライリング・ストップやタイム・ベース・ストップで引き上げを減らす.

結論

カメ取引戦略は,シンプルなブレイクアウトシステムによってトレンドを効果的に追跡する.リスク制御は,迅速なストップと固定分数的なポジションサイジングのおかげで最大の強みです.同時に,戦略がより多くの楽器や市場条件に合わせて拡張および最適化できる複数の次元を見ることができます.全体として,定量的な取引のための重要な参照である価格トレンドを把握するためのリスク制御方法を提供します.


/*backtest
start: 2022-12-24 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////

shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

enterL1 = high > fastL[1] 
exitL1 = low <= fastLC[1] 
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1] 
exitL2 = low <= slowLC[1] 
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


if testPeriod()
    strategy.entry("fast L", strategy.long, when = enterL1) 
    
    if not enterL1
        strategy.entry("slow L", strategy.long, when = enterL2)
        
    strategy.close("fast L", when = exitL1)
    strategy.close("slow L", when = exitL2)

if shortingEnabled and testPeriod()
    strategy.entry("fast S", strategy.short, when = enterS1)
    if not enterS2
        strategy.entry("slow S", strategy.short, when = enterS2)
        
    strategy.close("fast S", when = exitS1)
    strategy.close("slow S", when = exitS2)

もっと