
この戦略は,ROCとSMAの2つの指標の差値kを計算し,kに一定の長さの加算を行うことにより,加算値sumの正負を多空の判断の根拠として判断する.この戦略は,ショートライン取引戦略である.
この戦略は,まず,長さ l の SMA 平均線と ROC を計算し,次に,現在の閉店価格と SMA の差分 k を計算する. k の s 日累積と sum を計算する.sum>0 の場合は多,sum の場合は空とする.
具体的には,このコードは:
平均線 a を計算し,
長さlのROC指数rを計算する
k = close - a の現在の閉店価格とSMA平均線の差を計算する
k の日数を加算すると,sum となります.
sum>0であれば,余分に,sumであれば,空っぽにします.
平仓条件:多平仓のsum<0;空白平仓のsum>0
この戦略の鍵は,kの累積とsumを計算し,sumの正負を取引信号として使用する. k>0の最近の時間は,価格が上昇していることを示し,多額の取引を行う. kの最近の時間は,価格が低下していることを示し,空白を行う.
これはシンプルで実用的なショートライン取引戦略で,以下の利点があります.
この指標の組み合わせは単純で,理解し,実行しやすい.
ターゲットの差値から波動をフィルターすることで,より正確な取引機会を見つけることができます.
差値の累積により,短線トレンドをより正確に捉えることができます.
市場調整パラメータlとsにより,異なる周期に対応する.
戦略は明確で,手順は簡潔で,変更や最適化も容易です.
資金利用の効率が高く,頻繁にショートライン取引が可能である.
この戦略にはいくつかのリスクがあります.
ショートライン取引はリスクがあり,損失の可能性もある.
パラメータを正しく設定しない場合,取引が頻発し,機会が失われる可能性があります.
ストップを跳ね越すと大きな損失を招く可能性がある.
頻繁にモニタリングとパラメータの調整が必要で,トレーダーの経験に依存する.
取引の頻度は取引コストと滑り点を増加させ,利益に影響を与える可能性があります.
リスクに対応する解決策は以下の通りです.
取引頻度を下げるためにパラメータを適切に調整します.
トレンド指数と組み合わせて,トレンドの逆転を識別する.
ストップ・ロスの戦略を最適化し,単一損失を制御する.
自動化パラメータ最適化モジュールを追加し,トレーダーの経験への依存を軽減します.
取引コストを減らすために,注文モジュールを最適化します.
この戦略は,以下の点でさらに最適化できます.
パラメータ計算方法を最適化して,パラメータをより自律的に調整する.遺伝的アルゴリズム,マルコフ鎖などの方法を用いて動的に最適化できる.
より多くの指標とフィルタリング条件を組み合わせて,取引信号の質を向上させる.例えば,トレンド指標を組み合わせて逆行取引を避けるなど.
単一損失を制御するために,移動停止,平均停止などの損失停止戦略の改善.
資金管理戦略の最適化,例えばリスクポイント管理,固定比率の資金配分など,全体的なリスクを制御する.
注文モジュールを最適化し,トレンド追跡,滑点制御などのアルゴリズムを使用して取引コストを削減します.
自動フィードバックの最適化モジュールを追加し,さまざまなパラメータが戦略に与える影響を迅速に評価します.
定量化指標評価モジュールを追加し,取引信号の質を評価し,戦略の安定性を向上させる.
この戦略を最適化することで,より包括的で,スマートで,安定した,制御可能なショートライン取引システムにすることができます.
全体的に見ると,この戦略は,簡単な指標計算によって取引信号を生成し,考えが明確で実行しやすい.典型的なショートライン取引戦略の1つである.パラメータ,ストップ,資金管理などのさらなる最適化により,リスクを軽減し,安定性を向上させ,使用するに値する量化取引戦略の1つにすることができる.しかし,いかなる戦略も完璧ではありません.トレーダーは理性的で,自分のリスク好みに合わせて適切な調整を行う必要があります.
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)
l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc = iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
strategy.entry("Long", strategy.long, oca_name="Long", comment="Long")
else
strategy.cancel(id="Long")
if sum<0
strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0
//shortCondition = sum<0
//exitshort = sum>0
//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)
//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)