Strategi melempar koin (●''●)

Penulis:Kacang polong, Tanggal: 2020-04-21 17:39:52
Tag:

Di bawah ini adalah daftar nama-nama yang tersedia di situs resmi T-Shirt. Di bawah ini adalah konten yang ditranskripsikan. Silahkan ikuti lebih banyak tentang "Millennium Quantum World" untuk mendapatkan lebih banyak kode sumber strategi! Saya juga punya iklan untuk diri saya sendiri. "Log kuantitatif dari kacang kedelai" "Menghancurkan semua orang secara terbuka setiap hari adalah sebuah tindakan yang sangat besar. Lebih banyak tunjangan, lebih banyak yang Anda dapatkan.


Jika Anda menggunakan volatilitas yang baik, Anda bisa memenangkan Bitcoin dengan mudah! Asal-Uasal, Dunia Kuantitatif Ribuan Ribuan 3 hari lalu Penelitian dan pengembangan strategi kuantitatif sebenarnya adalah dua sisi, sangat sulit bagi orang yang baru memulai, sulit tidak hanya kode tingkat teknik, tetapi juga sulit untuk berpikir logis tingkat strategis. Keduanya penting dan tidak dapat dipisahkan.

Selamat datang, teman-teman yang berjumlah ribuan!

Artikel ini adalah edisi kedua dari artikel khusus ini, dan kami sangat terhormat untuk mengundang Anda untuk datang ke Oyang-Oyang (LE_CHIFFRE1) untuk memperkenalkan kepada Anda: bagaimana menggunakan faktor fluktuasi untuk memenangkan Bitcoin dengan mudah, dan mencapai penurunan tingkat volatilitas!

Liu Shen berasal dari lembaga investasi kuantitas tradisional, pernah juga terlibat dalam bisnis bursa lingkaran koin, memiliki pengalaman yang kaya dan wawasan yang unik dalam bidang kuantitas. Isi edisi ini mencakup wawasan pikiran, implementasi kode dan kesadaran pribadi, dll, tidak bisa dikatakan tidak penuh, ribuan membaca sendiri juga merasa bermanfaat, benar-benar sangat mengagumi dan berterima kasih kepada Liu Shen, sangat merekomendasikan semua orang untuk membaca artikel ini!

Di bawah ini adalah beberapa komentar yang menarik dari para blogger dan blogger di Indonesia yang ingin berbagi strategi volatilitas mereka.

01

Pengantar

Halo, hari ini saya memiliki hak istimewa untuk memajukan artikel di situs publik kuantitatif, dan juga berterima kasih atas undangan bos T (salah satu dari ribuan nomor luar). Pertama kali menulis artikel untuk bos T, bebas bermain, meminjam waktu luang setelah bekerja, kualitas dan kesalahan juga diarahkan pada artikel yang benar dan berisi, terima kasih.

T bos mengatakan untuk menulis kuantitatif, dan tidak memberikan ruang lingkup apa pun, benar-benar tidak tahu dari mana untuk menulis. Jadi mulailah dari topik favorit Anda untuk membahas dengan orang lain. Indikator dan strategi kuantitatif (yang dapat dibantu juga dapat diotomatisasi), tentu saja, akhirnya kita juga harus menambahkan kata-kata lama yang sering diucapkan: investasi besar berisiko, masuk pasar harus berhati-hati, strategi hanya untuk memberi Anda ide dan pelajaran, untung dan rugi.

Setelah pernyataan ini selesai, berikut adalah topik yang sebenarnya.

02

Strategi volatilitas yang sederhana

Orang-orang yang mengenal saya tahu bahwa secara pribadi, saya tidak terlalu menyukai permainan Alpha, saya lebih percaya pada Beta, lebih banyak untuk mempelajari Beta. Untuk alasan ini, e.........mmmmm, saya tidak tahu apa yang Anda jawab~~, coba pikir sendiri. Jika Anda tertarik, Anda dapat mengirim pesan pribadi, pesan kepada penulis edisi publik ini, logika yang jelas, penulis sendiri akan mengirim paket merah kecil kepada Anda.

Penelitian dan pengembangan strategi kuantitatif sebenarnya adalah dua sisi, sangat sulit untuk orang yang baru memulai, sulit untuk tidak hanya kode tingkat sihir, tetapi juga sulit untuk berpikir logis tingkat taktik. Keduanya penting, dan tidak boleh bias. Strategi yang saya sampaikan kepada Anda hari ini sebenarnya terinspirasi dari sebuah laporan penelitian dari Huaihai bertahun-tahun yang lalu, kita lihat dengan cermat hanya inspirasi, karena itu adalah karena logika strategi itu sama sekali tidak disebutkan dalam laporan penelitian, khususnya laporan pribadi.

Algorithm strategi ini menggunakan prinsip fluktuasi rasio rolling yield dari penurunan harga siklus tertentu, dan berdasarkan rentang fluktuasi ini, mencari nilai maksimum dan minimum rolling cycle tertentu, nilai tertinggi sebagai pipa atas, nilai minimum sebagai pipa bawah, memecahkan pipa atas, membuka posisi. Rata-rata rolling pipa atas dan bawah sebagai garis posisi.

Untuk melihat antarmuka visualisasi grafis yang spesifik, lihat PPT di bawah ini. Gambar ini dibuat sendiri dengan Pyecharts, dan kode spesifiknya juga dapat dihubungi secara pribadi.

img

Pada kenyataannya, strategi ini adalah strategi yang sebelumnya digunakan oleh saya untuk melakukan ETF berbasis luas, tentu saja juga digunakan untuk membeli dan menjual saham saat memilih indeks, kemudian langsung dipindahkan ke lingkaran mata uang.

img

Gambar di bawah ini adalah hasil dari tahun itu, dengan gambar layar logika kode tertentu:

img

Di atas sebenarnya adalah data yang dibaca dan kemudian dilakukan penghitungan data indikator dengan panda.

img

Setelah perhitungan selesai, Anda dapat mengekspor data melalui fungsi pd.to_csv (), dan mengekspor pyecharts yang digunakan dalam gambar di atas (catatan: saya menggunakan pyecharts versi lama).

Semua strategi, visualisasi, dan kode indikator kinerja yang spesifik adalah omong kosong.

03

Berbicara tentang Kuantitas

Pertama, ada banyak pertanyaan atau mengapa Anda dapat mempublikasikan strategi nyata, penipu palsu? atau mengatakan benar-benar ada di mana-mana? haha. Pertama, strategi yang baik tidak takut terbuka, ini bukan pengembangan senjata tingkat perang yang akan menentukan hidup atau mati, jadi saya sendiri dan beberapa lembaga atau individu, tidak takut apa yang disebut rahasia taktik, karena menurut saya CTA tidak memiliki rahasia.

Kedua: Banyak orang, baik yang baru atau yang sudah masuk bahkan termasuk pemain lama, membutuhkan sumber inspirasi, termasuk faktor penambangan saham, ide-ide untuk memilih strategi waktu, dan sebagainya, yang seringkali berasal dari pengalaman subjektif, laporan penelitian, pertukaran komunikasi di dalam lingkaran, dll.

Akhirnya, untuk menyimpulkan, kuantitas adalah barang asing, perdagangan terprogram adalah subset dalam kuantitas, sejak saat saya kuliah (sekitar tahun 2009), saat itu ada orang yang terlibat dalam programasi seperti TB, piramida, dan lain-lain. Jika terus dilakukan hari ini, dapat dikatakan bahwa beberapa orang yang pertama-tama memprediksi prediksi sudah 10 tahun, yang belum termasuk mereka yang datang dari Wall Street dengan strategi dan sistem frekuensi tinggi. Oleh karena itu, strategi kuantitas atau strategi terprogram telah berlangsung di China untuk sementara waktu, tetapi di kalangan pemegang saham pasar saat ini dan pemangku kepentingan, dan dukungan kebijakan, kuantitas masih merupakan bagian yang sangat kecil, meskipun ada banyak penelitian yang dibuat oleh analisis dan strategi yang dibangun dengan pola yang sangat baik.

Terakhir, terima kasih banyak kepada publik Quantum for trusting me in my profession and for the article invitation. Jika kalian memiliki masalah kode atau strategi khusus, silakan kirim email pribadi kepada saya atau T-Bone, saya juga berada di grup T-Bone.

Terakhir, sekali lagi terima kasih atas penjelasan yang sangat bagus!

Teman-teman yang belum bergabung dengan kelompok diskusi kuantitatif, silakan bergabung dengan kami untuk mendapatkan informasi lebih lanjut!

Bangunan ini sangat indah.

img

WeChat menghapusnya Perhatian terhadap isu publik


/*backtest
start: 2020-01-20 00:00:00
end: 2021-01-19 23:59:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD","fee":[0.008,0.1]}]
args: [["st",0.1]]
*/

// 初始化
exchange.SetContractType('XBTUSD')
_CDelay(100)
// 止盈止损
var TP_status = false // 是否触发追踪止盈 
var TP_HH = 0
var TP_LL = 0
var B = 1

// 获取交易所信息
function UpdateInfo() {
    account = exchange.GetAccount()
    pos = exchange.GetPosition()
    records = exchange.GetRecords()
    ticker = exchange.GetTicker()
}

// 定制本次盈亏
function Onept() {
    // 更新用户信息
    UpdateInfo()
    // 如果现在余额 大于 之前的余额, 那么 盈利次数+1, 且pt_1设为现在余额
    if (account.Stocks - pt_1 > 0) {
        pt_times = pt_times + 1
        Log('这回赚钱啦~~~~ (^U^)ノ~YO', account.Stocks - pt_1)
        B = 1
        pt_1 = account.Stocks
    }
    // 如果现在余额 小于 之前的余额, 那么 亏损次数+1, 且pt_1设为现在余额
    if (account.Stocks - pt_1 < 0) {
        st_times = st_times + 1
        Log('这回亏掉了.... /(ㄒoㄒ)/~~', account.Stocks - pt_1)
        B = B * 1.618
        pt_1 = account.Stocks
    }
}

// 画线
function PlotMA_Kline(records) {
    $.PlotRecords(records, "K")
}

// 追踪止盈 初始%, 追踪U
function TP() {
    var TP_first_long = pos[0].Price + tp_first * ticker.Last
    var TP_trailing_long = TP_HH - trailing_tp * ticker.Last
    var TP_first_short = pos[0].Price - tp_first * ticker.Last
    var TP_trailing_short = TP_LL + trailing_tp * ticker.Last
    // 当多仓时, 现价大于开仓+初始止赢价 -> 触发追踪止盈 
    if ((pos[0].Type == 0) && (ticker.Last > TP_first_long)) {
        // Log('当多仓时, 现价大于开仓+初始止赢价 -> 触发追踪止盈', TP_HH)
        TP_status = true
        // 触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最大价格更新为现价
        if (TP_status === true && TP_HH == 0) {
            Log('触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最大价格更新为现价', TP_HH)
            TP_HH = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最大价格, 现价大于开仓后最大价格 -> 开仓后最大价格更新为现价
        else if (TP_status === true && TP_HH != 0 && ticker.Last > TP_HH) {
            Log('触发追踪止盈, 已有开仓后最大价格, 现价大于开仓后最大价格 -> 开仓后最大价格更新为现价', TP_HH)
            TP_HH = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最大价格, 现价小于 (开仓后最大价格减 - 回撤USD) -> 开空平仓止盈
        else if (TP_status === true && TP_HH != 0 && ticker.Last < TP_trailing_long) {
            Log('触发追踪止盈, 已有开仓后最大价格, 现价小于 (开仓后最大价格减 - 回撤USD) -> 开空平仓止盈', TP_HH)
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount, "在" + ticker.Last + "止赢平多仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'PT_BK' + ticker.Sell)
            Onept()
            TP_status = false
            TP_HH = 0
        }
    }
    // 当空仓时, 现价小于开仓-初始止赢价 -> 触发追踪止盈
    else if ((pos[0].Type == 1) && (ticker.Last < TP_first_short)) {
        // Log('当空仓时, 现价小于开仓-初始止赢价 -> 触发追踪止盈', TP_LL)
        TP_status = true
        // 触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最小价格更新为现价
        if (TP_status === true && TP_LL == 0) {
            Log('触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最小价格更新为现价', TP_LL)
            TP_LL = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最小价格, 现价小于开仓后最小价格 -> 开仓后最小价格更新为现价
        else if (TP_status === true && TP_LL != 0 && ticker.Last < TP_LL) {
            Log('触发追踪止盈, 已有开仓后最小价格, 现价小于开仓后最小价格 -> 开仓后最小价格更新为现价', TP_LL)
            TP_LL = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最小价格, 现价大于 (开仓后最小价格减 + 回撤USD) -> 开多平仓止盈
        else if (TP_status === true && TP_LL != 0 && ticker.Last > TP_trailing_short) {
            Log('触发追踪止盈, 已有开仓后最小价格, 现价大于 (开仓后最小价格减 + 回撤USD) -> 开多平仓止盈', TP_LL)
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount, "在" + ticker.Last + "止赢平空仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PT_SK' + ticker.Sell)
            Onept()
            TP_status = false
            TP_LL = 0
        }
    }
}

// 止损 %
function Stoploss() {
    // 当多仓时, 现价小于开仓-止损价, 做空平多
    if ((pos[0].Type == 0) && (ticker.Last < pos[0].Price - st * ticker.Last)) {
        Log('当多仓时, 现价小于开仓-止损价, 做空平多')
        exchange.SetDirection("closebuy")
        exchange.Sell(ticker.Buy, pos[0].Amount, "在" + ticker.Last + "止损平多仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
        $.PlotFlag(new Date().getTime(), 'Sell', 'ST_BK' + ticker.Buy)
        Onept()
    }
    // 当空仓时, 现价大于开仓+止损价, 做多平空
    else if ((pos[0].Type == 1) && (ticker.Last > pos[0].Price + st * ticker.Last)) {
        Log('当空仓时, 现价大于开仓+止损价, 做多平空')
        exchange.SetDirection("closesell")
        exchange.Buy(ticker.Sell, pos[0].Amount, "在" + ticker.Last + "止损平空仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
        $.PlotFlag(new Date().getTime(), 'Buy', 'ST_SK' + ticker.Sell)
        Onept()
    }
}

// 计算凯利公式 仓位
function PriceAmount() {
    // 赢可以赢多少 
    y = tp_first
    // 输会输多少 
    s = st
    //赔率
    b = y / s
    // 赢的概率
    if (total_times < 10) {
        p = 0.382
    } else {
        p = pt_times / total_times
    }
    // 输的概率
    q = 1 - p
    // 凯莉公式
    f = (b * p - q) / b
    // 限制B最大值
    if (B > 16.18) {
        B = 16.18
    }
    //Amount = _N(Math.abs(f) * account.Stocks * ticker.Last * B, 0)
    Amount = _N(0.618 * account.Stocks * ticker.Last, 0)
    //Log(Amount)
}

// 交易逻辑
function onTick() {
    // 获取均匀分布 0-9 随机数
    ToTheMoon = Math.floor(Math.random() * 10)
    // 无仓位时
    if (pos.length == 0) {
        // Long 
        if (ToTheMoon > 5) {
            exchange.SetDirection("buy")
            exchange.Buy(ticker.Sell, Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'BK' + ticker.Sell)
            total_times = total_times + 1
        }
        // Short 
        if (ToTheMoon < 4) {
            exchange.SetDirection("sell")
            exchange.Sell(ticker.Buy, Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SK' + ticker.Buy)
            total_times = total_times + 1
        }
    }
        // 多仓时
    if (pos.length > 0 && pos[0].Type == 0) {
        // 平多 
        if (ToTheMoon < 1) {
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'PBK')
            Onept()
        }
    }
    // 空仓时
    if (pos.length > 0 && pos[0].Type == 1) {
        // 平空 
        if (ToTheMoon > 8) {
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PSK')
            Onept()
        }
    }
}


function main() {
    UpdateInfo()
    // 统计
    pt_1 = account.Stocks
    total_times = 0
    pt_times = 0
    st_times = 0
    while (1) {
        UpdateInfo()
        PriceAmount()
        onTick()
        PlotMA_Kline(records)
        if (pos.length > 0) {
            TP()
        }
        if (pos.length > 0) {
            Stoploss()
        }
        LogStatus("总余额: " + _N(ticker.Last * account.Stocks, 2), " 下单量: " + Amount, " 下单倍数: " + B, " ToTheMoon: " + ToTheMoon, " 下单量比: " + _N(Amount * 100 / _N(ticker.Last * account.Stocks, 2), 2), "% 胜率: " + _N(p * 100, 2), "%", total_times, pos)
    }
}

Lebih banyak

AllahApakah Anda bisa mengubahnya menjadi versi Bitcoin?