ドン・アンキ・タートル取引戦略


作成日: 2024-02-26 14:35:02 最終変更日: 2024-02-26 14:35:02
コピー: 0 クリック数: 899
1
フォロー
1617
フォロワー

ドン・アンキ・タートル取引戦略

概要

唐海取引戦略は,非常に簡素化された海取引戦略である。これは原始の海取引戦略とは大きく異なる。この戦略は,2つの唐通道,快通道と遅い通道を使用している。通道周期はユーザによって設定され,デフォルト値は速通道20根K線,遅い通道50根K線である。この戦略は,遅い通道の上下軌道を利用して入場し,速通道の中間軌道で止まりを設定している。

戦略原則

この戦略の核心的な論理は:

  1. 急速通路を計算する:最も近いfast根K線の最高値は通路上線,最低値は通路下線である。通路中線は上下線の平均値である。

  2. ゆっくりとした通路を計算する:最も近いスロールートK線の最高値は通路上線,最低値は通路下線である.

  3. ポジションがないとき,多信号は価格が緩やかな通路の上線に触れるため;空調信号は価格が緩やかな通路の下線に触れるため.

  4. 倉庫開設後,高速通路の中央線を止損線として使う.

  5. ポジション保持の過程で,取引シグナルと開設シグナルが逆であるとき,平仓は出場する.

優位分析

この戦略の利点は以下の通りです.

  1. 規則は簡単で実行しやすい.唐通路と移動止損は,初心者にとって理解しやすい.

  2. カスタマイズ可能なパラメータ. ユーザーは,取引の種類と時間周期に応じてパラメータを調整して,異なる市場環境に対応することができます.

  3. 衝突取引の信号は少ない。価格突破チャネルの上下軌道にのみ依存し,一般的な指標が偽信号を生成する状況を避ける。

  4. 自動ストップ管理リスク.高速通路の中間軌道移動ストップ,単発ストップを制限できる.

リスク分析

この戦略には以下のリスクがあります.

  1. 価格変動のトレンドがはっきりしない場合,より多くのストップダストが生じます. これは戦略の収益性に影響します.

  2. 引き下がりが大きい可能性があります.トレンドが逆転すると,前運動方向の浮動損失も実際の損失になります.

  3. パラメータを正しく設定しない場合,過度に過激な値や保守的な値が求められる.これは,繰り返しテストすることで適切な値が求められる.

  4. 機械化された取引の依存度が高い.サーバーの安定性を確保し,異常が正常に自動化できない取引を避ける必要がある.

上記のリスクを軽減するために,最適化パラメータ設定,適切なポジションサイズ制限,風制御モジュールを追加などの方法で改善することができます.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. ポジション開設のフィルター条件を追加し,トレンド転換点のミスを回避する.例えば,トレンド指数などの指標を組み合わせてトレンド分析を判断する.

  2. パラメータの設定を最適化して,異なる取引品種に適した設定を行う.例えば,快速または遅いチャネル周期,ポジションのサイズなど.

  3. リスク管理モジュールを追加する.例えば,最大撤収,日当日の損失制限など.リスクイベントが大きな損失を引き起こすのを避ける.

  4. トレーリングストップなどのダイナミックなストップ方式により,市場トレンドに適したストップを最適化します.

要約する

唐海取引戦略は,全体として非常に単純なトレンド追跡戦略である.その優点は,理解しやすいこと,実行しやすい自動化,プログラム化された取引に適していることである.しかし,一定のリスクも存在し,そのパラメータを実際の市場状況により適合させるため,さらなる最適化が必要である.パラメータ調整,シグナル開設の最適化,リスク管理モジュールを追加するなどの手段によって,この戦略の実戦効果を向上させることができる.

ストラテジーソースコード
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle 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, defval = true, title = "Long")
needshort = input(true, defval = true, 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, %")
fast      = input(20, minval=1)
slow      = input(50, minval=1)
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(false, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showdd

    //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)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)