
Strategi ini menilai apakah ada situasi unilateral yang tiba-tiba terjadi di pasar saat ini dengan mengidentifikasi K-line yang meningkat secara tidak normal. Ketika K-line yang meningkat secara tidak normal diidentifikasi, stop-loss akan ditetapkan di dekat titik tinggi K-line ini, dan stop-loss akan ditetapkan di dekat titik rendah K-line sebelumnya.
Strategi ini terutama menilai pembentukan garis K kenaikan yang tidak biasa, ketika terjadi close>open dan highlow[1] Pada garis K, dianggap ada saat ini siklus luar biasa kenaikan harga. Pada saat ini akan mengatur panjang satu sinyal masuk, harga masuk adalah harga tertinggi di garis K saat ini. Pada saat yang sama, mengatur harga stop loss di dekat harga terendah dari garis K atas, membentuk modus kontrol risiko tinggi. Dengan terus memantau harga untuk menerobos garis stop loss, untuk mencapai risiko kontrol.
Keuntungan terbesar dari strategi ini adalah dapat menangkap short line yang tidak biasa dari situasi pasar, untuk mencapai perdagangan yang sangat tinggi. Pada saat yang sama, dengan mengatur lebih besar stop loss, Anda dapat melakukan perdagangan kontrol risiko dengan menggunakan leverage tinggi, sehingga mendapatkan keuntungan yang lebih besar. Selain itu, strategi ini memungkinkan untuk secara otomatis memantau stop loss, ketika harga menembus garis stop loss ke bawah, dapat cepat berhenti, secara efektif mengendalikan risiko perdagangan.
Risiko utama dari strategi ini adalah ketidakakuratan dalam menilai kenaikan yang tidak biasa dan tidak dapat menangkap tren yang tiba-tiba, sehingga kemungkinan besar kesalahan dalam penilaian sinyal perdagangan. Selain itu, pengaturan posisi stop loss juga berdampak besar pada risiko dan keuntungan perdagangan. Jika stop loss terlalu longgar, risiko kerugian perdagangan akan meningkat, dan jika stop loss terlalu sempit, mungkin tidak dapat secara efektif melacak tren.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Kriteria penilaian kenaikan yang tidak normal dapat memperkenalkan lebih banyak indikator atau model pembelajaran mendalam untuk membantu penilaian, meningkatkan akurasi penilaian sinyal perdagangan strategi.
Pengaturan posisi stop loss memungkinkan banyak analisis statistik dan optimasi untuk menemukan posisi stop loss yang lebih optimal untuk menyeimbangkan tingkat risiko dan keuntungan perdagangan.
Lebih banyak mekanisme pengendalian transaksi frekuensi tinggi dapat diperkenalkan, seperti penyaringan volume transaksi, verifikasi penembusan interval, dan sebagainya, untuk menghindari kemungkinan terkurung.
Kriteria masuk strategi dapat disesuaikan, tidak harus terbatas pada garis K yang tidak biasa, dapat digabungkan dengan lebih banyak indikator dan model untuk ditentukan, membentuk mekanisme verifikasi ganda.
Strategi ini secara keseluruhan adalah strategi perdagangan frekuensi tinggi yang khas, termasuk dalam kategori strategi terobosan garis pendek. Ini memungkinkan perdagangan frekuensi tinggi dengan menangkap fluktuasi abnormal yang tiba-tiba dalam tren.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 08:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JoshuaMcGowan
// I needed to test/verify the functionality for canceling an open limit order in a strategy and also work thru the pieces needed to set the position sizing so each loss is a set amount.
// This is not meant to be dropped into a chart but rather gives the code/logic in order to use in your own script w/alerts or strategy. Hope it helps.
//@version=4
strategy("Strategy Test - Cancel Limit Order and Position Sizing", overlay=true, precision=4)
/////////////////
// Backtest Period Selection
testStartYear = input(2020, "Backtest Start Year",minval=1980)
testStartMonth = input(2, "Backtest Start Month",minval=1,maxval=12)
testStartDay = input(1, "Backtest Start Day",minval=1,maxval=31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year",minval=1980)
testStopMonth = input(12, "Backtest Stop Month",minval=1,maxval=12)
testStopDay = input(31, "Backtest Stop Day",minval=1,maxval=31)
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => time >= true
//////////////
// Inside Bar
bull_inside_bar = close>open and high<high[1] and low>low[1]
// Set Levels
bull_inside_bar_sl = valuewhen(bull_inside_bar, low[1], 0) - (1*syminfo.mintick)
bull_breakout_price = valuewhen(bull_inside_bar, high, 0) + (1*syminfo.mintick)
entry_buy = high
inside_bar_dist = entry_buy - bull_inside_bar_sl
inside_bar_be = entry_buy + (inside_bar_dist * 1)
inside_bar_tgt = entry_buy + (inside_bar_dist * 2)
///////////////////
// Position Sizing
//////////////////
// For each trade setup that fires in this scenario we want to set our total loss amount in USD, so every trade that loses is lets say $1 and the 2:1 target would be $2 in this example.
// The math logic for this take the risk amount and divide by the stop percentage, take that number and divide by leverage amount chosen. Stop percentage is a variable below if questions on that.
//
// Taken from @JoshuaMorris (shout out to the UK peeps) position sizing google doc so thank you sir.
// Would be used if risking based on percentage of a portfolio. Leaving code snippets here in case that's the direction someone wants to go.
// xbt_price = security("BITMEX:XBTUSD", "D", close)
// account_size_xbt = input(1, "Account Size (XBT)", type=input.float)
// account_size_usd = (account_size_xbt * xbt_price)
// percentage_risk = input(0.01, "Personal Risk Percent - Default is 1%", type=input.float)
// personal_risk = (account_size_usd * percentage_risk)
// position_size_usd = (personal_risk) / risk_percent
// leverage_req = position_size_usd / account_size_usd
// Will want to hard code leverage as 1x, 5x, 10x etc and dont need it to automagically be set as is above. If you're doing 100x you are gnarly haha.
leverage_amount = input(title="Leverage Amount Desired", type=input.integer, defval=10, options=[1, 2, 3, 5, 10, 25, 50, 100])
risk_amount = input(title="Risk Total Per Trade in USD", type=input.integer, defval=1, minval=1, step=1)
// Reminder this is for Longs. Math needs to be changed a bit for Shorts. This is the information using the long/short tool would give us if doing manually.
stop_percent = inside_bar_dist / (entry_buy)
pos_size_no_lev = risk_amount / stop_percent
pos_size_with_lev = pos_size_no_lev / leverage_amount
//////////////
// Strategy Section
if testPeriod()
strategy.entry(id="Long", long=true, qty=1, limit=9320.00, when=bull_inside_bar)
strategy.cancel(id="Long", when = low < 9310)
// as a test swap the price to be above the limit or below to see the cancel in play.
//////////////
// Plot Section
plotchar(bull_inside_bar, title="bull_inside_bar", char="🐂", location=location.belowbar, offset=-0, color=color.green, transp=25)
plot(bull_inside_bar_sl, title="bull_inside_bar_sl", transp=100)
plot(entry_buy, title="entry_buy", transp=100)
plot(inside_bar_dist, title="inside_bar_dist", transp=100)
plot(stop_percent, title="stop_percent", transp=100)
plot(pos_size_no_lev, title="pos_size_no_lev", transp=100)
plot(pos_size_with_lev, title="pos_size_with_lev", transp=100)
// Hidden Plots // For Data Window Eyes Only //
// plot(longCondition==true?1:0, title="Long Condition", transp=100)
// plot(xbt_price, title="XBT Price", transp=100)
// plot(account_size_usd, title="Account Size USD", transp=100)
// plot(risk_percent, title="risk_percent", transp=100)
// plot(position_size_usd, title="position_size_usd", transp=100)
// plot(leverage_req, title="leverage_req", transp=100)
// END //