Strategi random walk adalah strategi perdagangan otomatis yang didasarkan pada generasi angka acak. Strategi ini menggunakan generator asor linear untuk menghasilkan angka acak dari biji sesuai dengan pengaturan, angka yang lebih besar dari overvalued dan lebih kecil dari overvalued yang dikosongkan, yang memungkinkan untuk masuk secara acak ke posisi overvalued.
Strategi ini memungkinkan perdagangan acak melalui beberapa bagian:
Tetapkan parameter a, c dan modulo m yang dihasilkan dari bilangan acak, dan seed awal.
Definisi fungsi penciptaan bilangan acak GetRandom, yang menggunakan algoritma isomerik linier untuk menghasilkan bilangan acak antara 0-m.
Pada setiap baris K, jika tidak ada posisi saat ini, maka lebih besar dari m / 2 kali jumlah acak yang dihasilkan lebih besar, jika tidak kosong.
Tetapkan kondisi stop loss dan stop loss dalam bentuk persentase.
Tentukan siklus pengembalian dengan menggunakan rentang waktu.
Melalui langkah-langkah di atas, strategi ini memungkinkan untuk melakukan beberapa operasi penarikan yang benar-benar acak. Jika jumlah acak lebih besar dari m / 2, buka lebih banyak, jika tidak, buka kosong, lalu atur stop loss untuk keluar dari posisi.
Strategi logisnya sederhana, jelas, dan mudah dimengerti.
Perdagangan acak dapat secara efektif menghindari pengaruh emosi manusia dan mengurangi kesalahan subjektif.
Parameter algoritma penciptaan angka acak dapat disesuaikan, menyesuaikan keacakan.
Fleksibel mengatur kondisi stop loss dan kendalikan kerugian tunggal.
Mendukung pengoptimalan parameter pengembalian untuk menguji dampak dari berbagai parameter terhadap hasil keseluruhan.
Perdagangan acak mungkin tidak memiliki tren yang jelas dalam jangka panjang, dan ada ketidakpastian dalam pendapatan.
Tidak dapat menyesuaikan posisi dengan kondisi pasar, mungkin kehilangan peluang tren.
Hanya ada sedikit keuntungan, dan ada banyak risiko untuk menarik uang kembali.
Stop loss harus disesuaikan dengan rasio stop loss yang tepat untuk menghindari kerugian yang berlebihan.
Randomness dapat menyebabkan sering membuka posisi kosong dan meningkatkan biaya transaksi.
Peraturan validasi parameter yang diperlukan untuk memverifikasi keasliannya, tidak dapat digunakan secara membabi buta.
Dengan menambahkan fitur seperti penilaian tren, mengurangi jumlah posisi terbuka acak, mengoptimalkan mekanisme stop loss, dan mengontrol ketat kerugian tunggal, risiko dapat dikurangi.
Untuk meningkatkan penilaian tren, hindari posisi berlawanan.
Bergabung dengan manajemen posisi, menyesuaikan ukuran posisi sesuai dengan perubahan dana.
Mengoptimalkan algoritma penciptaan angka acak, meningkatkan keacakan.
Dinamika penyesuaian Stop Loss Stop Rise
Termasuk pembatasan frekuensi.
Retest kombinasi multi-parameter untuk mencari parameter optimal.
Strategi berjalan acak (random wandering strategy) adalah strategi yang dilakukan secara acak untuk melakukan trading secara otomatis dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan melakukan lebih banyak trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit trading dengan lebih sedikit
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
a = 16
c = 10
m = 1000
GetRandom(prev) =>
GetRandom = (a * prev + c) % m
seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")
curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
if (curRandom >= m / 2)
strategy.entry("Enter", strategy.long)
else
strategy.entry("Enter", strategy.short)
strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)
// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()