
この戦略は,形を識別し,取引シグナルを追跡し,ストップ・ストップ・ロズロジックと組み合わせて自動取引を行う. 逆転形が認識されるときに多額の空白を行い,ストップまたはストップ・ロスの後の平仓に達する.
形を識別する:の実体サイズが設定された値より小さい場合,開値と閉値が同じである場合,取引シグナルを追跡することを確認する.
余分な空白:逆転の形が認識されたとき,前日の閉盘価格が前2日よりも高い場合は,余分な空白;前日の閉盘価格が前2日よりも低い場合は,空白.
ストップ・ストップ・損失: 値が入場価格とストップ・ポイントに達したときにストップ・損失; 値が入場価格とストップ・ポイントに達したときにストップ・損失; 値がストップ・損失を触発したときにストップ・損失.
反転の形状を利用して,株価の転換点を効果的に捕捉し,取引信号の有効性を高めることができる.
ストップ・ストップ・メカニズムと組み合わせると,リスクを効果的に制御し,利益をロックし,損失拡大を防ぐことができます.
自動取引は,人間の介入を必要とせず,取引コストを削減し,取引効率を向上させます.
形判定にはある程度の主観性があり,誤判の可能性がある状況である.
ストップ・ストップ・ポイントの設定が不適切で,大きな動きを見逃したり,早めにストップ・ストップしたりする可能性があります.
戦略パラメータは,常にテスト・最適化が必要で,そうでなければ過適合を引き起こす可能性があります.
形判定条件を最適化し,K線指標を多く加えることで判定精度を向上させる.
異なる取引品種をテストし,ストップ・ストップ・ロスの位を調整し,パラメータを最適化します.
複数の取引シグナルを判断するアルゴリズムが追加され,戦略の論理が充実した.
ポジション管理モジュールが追加され,参照指標に基づいてポジションを動的に調整できます.
この戦略は,形を識別して反転信号を認識し,ストップ・ストップ・ロスのルールを設定し,自動取引を実現する. 戦略は単純に理解しやすく,一定の実用価値がある. しかし,識別精度とパラメータ最適化のスペースは改善されなければなりません. リアルタイムのアプリケーションを推奨する前に,さらなるテストと最適化を推奨します.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 30/01/2019
// This is a candlestick where the open and close are the same.
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title = "Doji Backtest", overlay = true)
input_takeprofit = input(10, title="Take Profit pip", step=0.01)
input_stoploss = input(10, title="Stop Loss pip", step=0.01)
input_minsizebody = input(0.5, title="Min. Size Body pip", step=0.01)
barcolor(abs(close - open) <= input_minsizebody ? open == close ? yellow : na : na)
possell = 0.0
posbuy = 0.0
pospricebuy = 0.0
pospricesell = 0.0
barcolornow = blue
pospricesell := close< close[2] ? abs(close - open) <= input_minsizebody ? open == close ? close : nz(pospricesell[1], 0) : nz(pospricesell[1], 0) : nz(pospricesell[1], 0)
possell := iff(pospricesell > 0 , -1, 0)
barcolornow := possell == -1 ? red: posbuy == 1 ? green : blue
pospricesell := iff(low <= pospricesell - input_takeprofit and pospricesell > 0, 0 , nz(pospricesell, 0))
pospricesell := iff(high >= pospricesell + input_stoploss and pospricesell > 0, 0 , nz(pospricesell, 0))
pospricebuy := close > close[2] ? abs(close - open) <= input_minsizebody ? open == close ? close : nz(pospricebuy[1], 0) : nz(pospricebuy[1], 0) : nz(pospricebuy[1], 0)
posbuy := iff(pospricebuy > 0 , 1, 0)
barcolornow := posbuy == 1 ? green: barcolornow
pospricebuy := iff(high >= pospricebuy + input_takeprofit and pospricebuy > 0, 0 , nz(pospricebuy, 0))
pospricebuy := iff(low <= pospricebuy - input_stoploss and pospricebuy > 0, 0 , nz(pospricebuy, 0))
barcolor(barcolornow)
if (posbuy == 0 and possell == 0)
strategy.close_all()
if (posbuy == 1)
strategy.entry("Long", strategy.long)
if (possell == -1)
strategy.entry("Short", strategy.short)
pospricebuy := iff(high <= pospricebuy + input_takeprofit and pospricebuy > 0, 0 , nz(pospricebuy, 0))
pospricebuy := iff(low >= pospricebuy - input_stoploss and pospricebuy > 0, 0 , nz(pospricebuy, 0))
pospricesell := iff(low <= pospricesell - input_takeprofit and pospricesell > 0, 0 , nz(pospricesell, 0))
pospricesell := iff(high >= pospricesell + input_stoploss and pospricesell > 0, 0 , nz(pospricesell, 0))