
Strategi rock solid adalah strategi perdagangan kuantitatif yang mengikuti hukum perdagangan Brady’s rock solid. Strategi ini menggunakan harga untuk masuk dan berhenti, dan mengikuti jalan keluar dari posisi, menghitung ukuran posisi berdasarkan amplitudo riil, dan secara ketat mengendalikan kerugian per satu. Strategi ini stabil dalam jangka panjang, dan tahan terhadap penurunan dan penarikan, seperti rock solid.
Strategi Seagull yang solid seperti batu di breakout entry. Secara khusus, ia akan menghitung harga tertinggi dan terendah dalam periode tertentu berdasarkan parameter siklus breakout yang dimasukkan. Ketika harga melewati harga tertinggi, masuk lebih banyak; Ketika harga melewati harga terendah, masuk kosong.
Sebagai contoh, jika parameter siklus masuk ditetapkan sebagai 20 K-line, maka strategi akan mengambil harga tertinggi dan terendah dari 20 K-line terakhir. Jika harga penutupan K-line saat ini lebih tinggi dari harga tertinggi dari 20 K-line terakhir, maka strategi akan melakukan beberapa stop order di posisi harga penutupan tersebut, menunggu untuk menembus harga tertinggi masuk.
Strategi Seagull yang kokoh seperti batu ini melacak stop loss dalam stop loss. Ini akan secara dinamis menghitung harga tertinggi dan terendah dalam periode tertentu berdasarkan parameter siklus keluar yang dimasukkan. Ini menjadi saluran keluar dari strategi.
Ketika memegang beberapa posisi, jika harga jatuh di bawah harga terendah untuk keluar dari saluran, posisi terhenti keluar. Sebaliknya, ketika memegang posisi kosong, jika harga jatuh di atas harga teratas untuk keluar dari saluran, posisi terhenti keluar.
Selain itu, strategi ini juga menghitung stop loss berdasarkan amplitudo riil, sebagai garis stop loss terakhir. Selama harga tidak menembus jalan keluar, stop loss akan terus melacak koreksi, memastikan bahwa jarak stop loss tepat untuk keuntungan, tidak terlalu radikal menyebabkan stop loss yang tidak perlu, dan tidak terlalu jauh dari jarak yang tidak dapat mengontrol kerugian secara efektif.
Strategi Seesaw yang solid seperti batuan akan menghitung ukuran satu posisi berdasarkan amplitudo aktual. Secara khusus, ia akan terlebih dahulu menghitung persentase potensi kerugian di sekitar harga masuk, dan kemudian membalikkan ukuran posisi berdasarkan parameter risiko yang diharapkan. Dengan demikian, Anda dapat secara efektif mengontrol kerugian maksimum per perdagangan.
Strategi Pantai yang kokoh seperti batu mengikuti aturan perdagangan Pantai Brady, menerapkan aturan masuk dan keluar secara ketat, dan tidak berubah-ubah. Ini memungkinkan strategi untuk beroperasi secara stabil dalam jangka panjang, tanpa menyebabkan kegagalan sistem karena kesalahan penilaian sementara.
Strategi ini menggunakan cara masuk dengan harga terobosan, yang dapat secara efektif menghindari risiko masuk dengan kesalahan tingkat tinggi, sehingga mengurangi kemungkinan kerugian sistemik. Pada saat yang sama, menggunakan cara stop loss tracking stop loss untuk memastikan pengendalian kerugian tunggal, dan meminimalkan penurunan yang disebabkan oleh kerugian berkelanjutan.
Strategi dengan menghitung posisi dengan gelombang nyata, ketat mengontrol kerugian maksimum setiap perdagangan dalam batas yang diizinkan, menghindari risiko yang berlebihan yang disebabkan oleh kerugian besar tunggal. Sementara itu, menggunakan metode pelacakan stop loss untuk memastikan jarak stop loss yang tepat, dapat menghentikan kerugian tepat waktu, dan mengontrol risiko secara efektif.
Jika tidak ada ledakan tembakan, sinyal palsu dapat terbentuk yang menyebabkan kesalahan masuk dan kerugian sistem. Dalam hal ini, perlu menyesuaikan parameter, menambah kondisi konfirmasi masuk, dan menghindari gangguan suara yang tidak efektif.
Parameter strategi seperti siklus masuk, siklus keluar, dan lain-lain adalah pengaturan statis. Jika ada perubahan besar dalam kondisi pasar, pengaturan parameter ini mungkin tidak akan berlaku. Saat ini perlu untuk mengevaluasi kembali parameter yang ditetapkan dan mengoptimalkan parameter untuk menyesuaikan dengan kondisi pasar baru.
Strategi ini menggunakan indikator teknis seperti flags untuk menilai harga yang terobosan. Indikator teknis ini mungkin tidak berlaku ketika tren pasar dan pola fluktuasi berubah secara signifikan.
Anda dapat menambahkan indikator penilaian tren yang umum digunakan dalam strategi, seperti MA, MACD, dll. Jika Anda melakukan penilaian tren naik lebih banyak, jika Anda melakukan penilaian tren turun, Anda dapat mengurangi kerugian operasi terbalik.
Indikator teknis dari kerangka waktu tingkat tinggi dapat diperkenalkan untuk penilaian komprehensif. Sebagai contoh, posisi garis MA di level 86400 dapat menentukan arah pergerakan keseluruhan, untuk mengkonfirmasi lebih lanjut sinyal operasi pada grafik waktu.
Parameter dapat dioptimalkan secara otomatis berdasarkan data historis dan disesuaikan secara real-time untuk menyesuaikan dengan perubahan lingkungan pasar melalui metode seperti pembelajaran mesin. Ini dapat membuat strategi lebih fleksibel dan stabil.
Strategi pesisir yang kokoh seperti batu mengikuti aturan perdagangan pesisir klasik, dengan harga terobosan masuk dan stop loss mengikuti stop loss, risiko dikontrol secara ketat, dapat beroperasi secara stabil dalam jangka panjang dan memiliki kemampuan penarikan yang luar biasa. Meskipun masih perlu untuk menghindari beberapa risiko seperti kegagalan terobosan, kegagalan parameter, namun dengan cara memperkenalkan penilaian tren, penilaian kerangka waktu, dan optimasi parameter dinamis, risiko ini dapat secara efektif dikurangi, meningkatkan kemampuan operasi strategi yang stabil secara signifikan. Secara keseluruhan, strategi ini memiliki stabilitas dan kemampuan penarikan yang sangat baik, dapat dipercaya dan memiliki nilai.
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Real Turtle", shorttitle = "Real Turtle", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
// Use if using a specific date range
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//How many candles we want to determine our position entry
enterTrade = input(20, minval=1, title="Entry Channel Length")
//How many candles we want ot determine our position exit
exitTrade = input(10, minval=1, title="Exit Channel Length")
//True Range EMA Length
trLength = input(13, minval=1, title="True Range Length")
//Go all in on every trade
allIn = input(false, title="Use whole position on every trade")
dRisk = input(2, "Use Desired Risk %")
//How much of emaTR to use for TS offset
multiEmaTR = input(2, "Desired multiple of ema Tr (N)")
//absolute value (highest high of of this many candles - lowest high of this many candles) . This is used if we want to change our timeframe to a higher timeframe otherwise just works like grabbing high o r low of a candle
//True range is calculated as just high - low. Technically this should be a little more complicated but with 24/7 nature of crypto markets high-low is fine.
trueRange = max(high - low, max(high - close[1], close[1] - low))
//Creates an EMA of the true range by our custom length
emaTR = ema(trueRange, trLength)
//Highest high of how many candles back we want to look as specified in entry channel for long
longEntry = highest(enterTrade)
//loweest low of how many candles back we want to look as specified in exit channel for long
exitLong = lowest(exitTrade)
//lowest low of how many candles back want to look as specified in entry channel for short
shortEntry = lowest(enterTrade)
//lowest low of how many candles back want to look as specified in exit channel for short
exitShort = highest(exitTrade)
//plots the longEntry as a green line
plot(longEntry[1], title="Long Entry",color=green)
//plots the short entry as a purple line
plot(shortEntry[1], title="Short Entry",color=purple)
howFar = barssince(strategy.position_size == 0)
actualLExit = strategy.position_size > 0 ? strategy.position_avg_price - (emaTR[howFar] * multiEmaTR) : longEntry - (emaTR * multiEmaTR)
actualLExit2 = actualLExit > exitLong ? actualLExit : exitLong
actualSExit = strategy.position_size < 0 ? strategy.position_avg_price + (emaTR[howFar] * multiEmaTR) : shortEntry + (emaTR * multiEmaTR)
actualSExit2 = actualSExit < exitShort ? actualSExit : exitShort
//plots the long exit as a red line
plot(actualLExit2[1], title="Long Exit",color=red)
//plots the short exit as a blue line
plot(actualSExit2[1], title="Short Exit",color=yellow)
//Stop loss in ticks
SLLong =(emaTR * multiEmaTR)/ syminfo.mintick
SLShort = (emaTR * multiEmaTR)/ syminfo.mintick
//Calculate our potential loss as a whole percentage number. Example 1 instead of 0.01 for 1% loss. We have to convert back from ticks to whole value, then divided by close
PLLong = ((SLLong * syminfo.mintick) * 100) / longEntry
PLShort = ((SLShort * syminfo.mintick) * 100) / shortEntry
//Calculate our risk by taking our desired risk / potential loss. Then multiple by our equity to get position size. we divide by close because we are using percentage size of equity for quantity in this script as not actual size.
//we then floor the value. which is just to say we round down so instead of say 201.54 we would just input 201 as TV only supports whole integers for quantity.
qtyLong = floor(((dRisk / PLLong) * strategy.equity) /longEntry )
qtyShort = floor(((dRisk / PLShort) * strategy.equity) /shortEntry )
qtyLong2 = allIn ? 100 : qtyLong
qtyShort2 = allIn ? 100 : qtyShort
//Only open long or short positions if we are inside the test period specified earlier
if testPeriod()
//Open a stop market order at our long entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened
strategy.entry("long", strategy.long, stop = longEntry, qty = qtyLong2)
//sets up or stop loss order by price specified in our actualLExit2 variable
strategy.exit("Stoploss-Long", "long", stop=actualLExit2)
//Open a stop market order at our short entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened
strategy.entry("short", strategy.short, stop = shortEntry, qty = qtyShort2)
//sets up or stop loss order by price specified in our actualLExit2 variable
strategy.exit("Stoploss-Short", "short", stop=actualSExit2)