Sumber dimuat naik... memuat...

Penyu BetulBerat Seperti Penyu Batu Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-18 14:34:40
Tag:

img

Ringkasan

Steadfast sebagai strategi Turtle Rock adalah strategi perdagangan kuantitatif yang mengikuti peraturan metodologi perdagangan penyu Brady. Ia menggunakan penembusan harga untuk memasuki kedudukan dan berhenti menjejaki berhenti untuk keluar. Ia mengira saiz kedudukan berdasarkan turun naik yang benar dan mengawal kerugian setiap perdagangan dengan ketat. Strategi ini mempunyai kestabilan jangka panjang dalam operasi dan toleransi yang kuat untuk penarikan, seperti batu yang mantap.

Prinsip

Peraturan kemasukan

Strategi Steadfast as a Rock Turtle memasuki penembusan. Khususnya, ia mengira tertinggi tertinggi dan terendah terendah dalam tempoh yang ditentukan. Apabila harga memecahkan di atas tertinggi tertinggi, ia pergi panjang. Apabila harga memecahkan di bawah terendah terendah, ia pergi pendek.

Sebagai contoh, dengan tempoh kemasukan ditetapkan kepada 20 bar, strategi mengekstrak tertinggi tertinggi dan terendah terendah selama 20 bar yang lalu.

Peraturan Keluar

Strategi Steadfast sebagai Rock Turtle keluar dengan hentian menjejaki hentian. Ia secara dinamik mengira tertinggi tertinggi dan terendah terendah dalam tempoh keluar yang ditentukan dan menggunakannya untuk menentukan saluran keluar.

Jika memegang panjang, apabila harga jatuh di bawah terendah saluran keluar, kedudukan akan berhenti. sebaliknya untuk kedudukan pendek.

Di samping itu, strategi ini mengira tahap stop-loss berdasarkan turun naik sebenar, yang berfungsi sebagai hentian terakhir. Selagi harga kekal di atas saluran keluar, stop-loss akan terus mengesan dan menyesuaikan, memastikan hentian ditetapkan pada jarak yang sesuaitidak terlalu ketat untuk hentian yang tidak perlu, tidak terlalu longgar untuk kawalan risiko.

Pengukuran Kedudukan

Strategi Steadfast as a Rock Turtle mengukur kedudukan berdasarkan turun naik sebenar. Secara khusus, ia pertama menganggarkan peratusan kerugian berpotensi berhampiran harga kemasukan, kemudian mengira saiz kedudukan dari parameter risiko yang dijangkakan. Ini berkesan mengawal kerugian maksimum setiap perdagangan.

Analisis Kelebihan

Operasi yang mantap

Strategi Steadfast as a Rock Turtle mematuhi ketat peraturan perdagangan penyu klasik mengenai kemasukan dan keluar tanpa pengubahsuaian sewenang-wenang. Ini membolehkan strategi berjalan dengan mantap untuk jangka masa panjang tanpa kegagalan sistem disebabkan oleh penghakiman yang buruk sementara.

Ketahanan Pengurangan

Dengan masuk pada breakout, strategi ini mengelakkan entri yang terlalu dinilai dengan berkesan, mengurangkan kebarangkalian kerugian sistem. dan dengan keluar dengan berhenti menjejaki berhenti, ia memastikan kerugian maksimum setiap perdagangan dikawal untuk mengelakkan kerugian berturut-turut yang membawa kepada penarikan yang mendalam.

Keupayaan untuk Mengekalkan Risiko

Dengan mengukur berdasarkan turun naik yang sebenar, strategi itu mengawal kerugian maksimum setiap perdagangan dalam toleransi. dan dengan mengesan jarak berhenti, ia boleh memotong kerugian dalam masa untuk dengan berkesan menahan risiko.

Analisis Risiko

Risiko kegagalan kerosakan

Jika harga pecah dengan momentum yang rendah, ia mungkin menjadi isyarat palsu yang menyebabkan kerugian kemasukan yang salah. Parameter perlu diselaraskan dengan lebih banyak peraturan pengesahan kemasukan untuk mengelakkan bunyi pecah yang tidak berkesan.

Risiko pengoptimuman parameter

Parameter strategi statik seperti tempoh masuk / keluar boleh menjadi tidak sah jika rejim pasaran berubah secara drastik. Parameter ini memerlukan penilaian semula dan pengoptimuman semula untuk menyesuaikan diri.

Risiko kegagalan penunjuk teknikal

Penunjuk yang digunakan seperti bendera harga boleh gagal apabila trend atau turun naik berubah dengan ketara.

Arahan pengoptimuman

Tambah Penapis Trend

Indikator trend biasa seperti MA, MACD boleh ditambahkan. Pergi panjang hanya dalam trend menaik dan pendek hanya dalam trend menurun untuk mengelakkan whipsaws kontra-trend.

Sintesis Tempoh

Penunjuk jangka masa yang lebih tinggi, contohnya tahap MA harian, boleh membantu mengesahkan arah keseluruhan untuk melengkapkan isyarat jangka masa yang lebih rendah.

Penyesuaian Parameter Dinamik

Pembelajaran mesin boleh mengemas kini parameter strategi secara automatik secara berterusan berdasarkan data terkini untuk mengekalkan keberkesanan dalam dinamik pasaran yang berubah.

Ringkasan

Steadfast sebagai strategi Turtle Rock mengikuti metodologi perdagangan penyu klasik dengan ketat masukkan pecah dan penjejakan berhenti keluar dengan kawalan risiko yang ketat. Ini membolehkan operasi yang stabil jangka panjang dengan ketahanan penarikan yang kuat. Walaupun risiko seperti pecah palsu, kegagalan parameter dll, ini dapat dikurangkan dengan berkesan melalui penambahan seperti penapis trend, sintesis jangka masa, penyesuaian dinamik dll untuk meningkatkan kestabilan strategi dengan ketara. Secara keseluruhan strategi yang sangat mantap yang patut dipercayai dan dipegang.


/*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)



Lebih lanjut