これは多レベルのバッチテイク・プロフィートBTCロボット取引戦略である. 最低点を見つけ,バッチ出口のために複数のテイク・プロフィートポイントを設定することでロングポジションに入ります. またリスク管理のためにストップ・ロストポイントを設定します. この戦略はBTCの上昇傾向にある場合に適しています.
エントリー・シグナルを見つける: CC インディケーターが0を下回るときに買い信号を生成する.この時点でロング・ポジションを購入する.
ストップ・ロスを設定します ストップ・ロスの割合を入力で設定し,ストップ・ロスの価格レベルに変換します
複数の取利益ポイントを設定: 4出口ポイントを設定し,インプットを通して各ポイントの取利益パーセントを設定し,価格レベルに変換します.
リスク管理: 最大ポジションサイズを設定し,リスク分散の入力を通じた各出口ポイントの出口パーセントを設定します.
この戦略の利点は次のとおりです.
最低値で購入し,高値で購入しない.
部分的な利益で利益を引き取りながら 利益の一部を保持します
ストップ・ロスはリスクを制御し 損失を一定範囲に制限します
バッチアウトはリスクを分散し 一度に完全な損失を回避します
引き上げは一定程度制御できる
この戦略のリスクは次のとおりです.
CCインジケーターは最低点を完全に保証できないので 購入機会を逃す可能性があります
誤ったストップ損失設定は,不要なストップ損失を引き起こす可能性があります.
不適切な出荷も利益の損失につながる可能性があります.
利益を得るのは 市場を走る上で 難しいのです
急激な逆転で損失を止めることは難しいかもしれません
潜在的な最適化:
より良いタイミングを出すために より多くの指標や機械学習で 入力信号を最適化します
ストップ・ロスの戦略を最適化して 市場の動きに対してより弾性のあるものにする
市場変化やトレンドへの適応を最適化する.
より柔軟な利益を得るため 遅延ストップを追加します
最適なパラメータセットを 異なる資産でテストする
概要すると,これは多レベルのテイク利益とストップ損失を伴う最低点での購入に基づいたBTC取引戦略である.特定の利点と改善可能な分野もある.引き下げ制御とテイク利益のさらなる最適化は戦略をよりうまく機能させる可能性がある.全体的には,BTCアルゴリズム取引のための実行可能なアプローチを提供します.
/*backtest start: 2023-09-17 00:00:00 end: 2023-10-17 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] args: [["v_input_1",2]] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © RafaelZioni // © theCrypster 2020 //@version=4 // strategy(title = "BTC bot", overlay = true, pyramiding=1,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075) strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"]) strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) //INPUTS higherTF = input("W", type=input.resolution) pc = security(syminfo.tickerid, higherTF, close[1], lookahead=true) ph = security(syminfo.tickerid, higherTF, high[1], lookahead=true) pl = security(syminfo.tickerid, higherTF, low[1], lookahead=true) PP = 0.0,R1 = 0.0, R2 = 0.0, R3 = 0.0,S1 = 0.0, S2 = 0.0, S3 = 0.0 PP := (ph + pl + pc) / 3 R1 := PP + (PP - pl) S1 := PP - (ph - PP) R2 := PP + (ph - pl) S2 := PP - (ph - pl) factor=input(2) R3 := ph + factor * (PP - pl) S3 := pl - 2 * (ph - PP) // length=input(21) // p = close vrsi = rsi(p, length) pp=ema(vrsi,length) d=(vrsi-pp)*5 cc=(vrsi+d+pp)/2 // low1=crossover(cc,0) sell=crossover(close[1],R3) // l = low1 s=sell if l strategy.entry("buy", strategy.long) if s strategy.entry("sell", strategy.short) per(pcnt) => strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) stoploss=input(title=" stop loss", defval=15, minval=0.01) los = per(stoploss) q1=input(title=" qty_percent1", defval=25, minval=1) q2=input(title=" qty_percent2", defval=25, minval=1) q3=input(title=" qty_percent3", defval=25, minval=1) tp1=input(title=" Take profit1", defval=3, minval=0.01) tp2=input(title=" Take profit2", defval=5, minval=0.01) tp3=input(title=" Take profit3", defval=7, minval=0.01) tp4=input(title=" Take profit4", defval=10, minval=0.01) strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los) strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los) strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los) strategy.exit("x4", profit = per(tp4), loss = los)