Chiến lược ném đồng xu (●''●)

Tác giả:Hạt đậu, Ngày: 2020-04-21 17:39:52
Tags:

Tân Tân Tân Tân Tân Tân Tân Tân Dưới đây là nội dung được chuyển tiếp. Xin hãy theo dõi "Thế giới số lượng hàng ngàn" nhiều hơn nữa để có thêm mã nguồn chiến lược! Và cũng quảng cáo cho bản thân. Tạp chí công cộng "Lịch định lượng đậu nành" Đánh án công khai hàng ngày cho những người phá sản định lượng trực tuyến Có nhiều lợi ích hơn, bạn sẽ có nhiều hơn.


Với tỷ lệ biến động tốt, bạn có thể giành chiến thắng trong Bitcoin rất dễ dàng! Nguồn gốc: Xuân Oyan Oyan Thế giới số hóa hàng ngàn ngày trước Trong thực tế, nghiên cứu và phát triển chiến lược định lượng là một hai mặt, rất khó khăn cho những người mới bắt đầu, khó khăn không chỉ là mã hóa ở cấp độ thuật toán thuật toán, khó khăn cũng như suy nghĩ logic chiến lược ở cấp độ thuật toán. Cả hai đều quan trọng và không nên thiên vị.

Xin chào bạn bè của tôi, các bạn hàng ngàn người có tính định lượng!

Bài viết này là phiên bản thứ hai của bản tin đặc biệt, chúng tôi rất vinh dự được mời đến với đại thần của Đại Dương (LE_CHIFFRE1) để giới thiệu với mọi người: làm thế nào để sử dụng các yếu tố biến động để dễ dàng giành chiến thắng trên sàn giao dịch BTC và đạt được tỷ lệ giảm tỷ lệ giảm tỷ lệ giảm!

Tương tự như các doanh nghiệp khác, các doanh nghiệp khác cũng có thể tham gia vào các hoạt động giao dịch tiền tệ. Tương tự như các doanh nghiệp khác, các doanh nghiệp khác cũng có thể tham gia vào các hoạt động giao dịch tiền tệ. Tương tự như các doanh nghiệp khác, các doanh nghiệp khác cũng có thể tham gia vào các hoạt động giao dịch tiền tệ.

Các bạn có thể tham khảo các bài viết trên trang web của chúng tôi:

01

Lời giới thiệu

Xin chào mọi người, hôm nay tôi có vinh dự được đưa bài viết vào số lượng lớn của số lượng lớn, đồng thời cảm ơn chủ sở hữu T (một trong số hàng ngàn số ngoài). Lần đầu tiên viết bài viết cho chủ sở hữu T, hoàn toàn tự do chơi, mượn thời gian rảnh sau khi làm việc, chất lượng và lỗi cũng được yêu cầu mọi người chỉ đúng và chứa trong bài viết, cảm ơn tất cả mọi người.

Chủ sở hữu của T nói rằng viết một định lượng, nhưng không cung cấp bất kỳ phạm vi, thực sự không biết nơi để viết. Vì vậy, hãy bắt đầu từ chủ đề yêu thích của mình để thảo luận với người khác. Chỉ số định lượng và chiến lược (có thể được hỗ trợ cũng có thể tự động hóa), tất nhiên, cuối cùng chúng tôi cũng nên thêm một câu nói thường được nói từ lâu đời: đầu tư có rủi ro, đi thị trường cần phải thận trọng, chiến lược chỉ cung cấp cho mọi người ý tưởng và bài học, lợi nhuận và mất mát tự trọng.

Khi tuyên bố miễn trừ kết thúc, chúng ta bắt đầu câu hỏi chính.

02

Một chiến lược biến động đơn giản

Những người quen biết tôi thực sự biết rằng, cá nhân tôi không thích trò chơi Alpha, tương đối tôi tin tưởng vào beta, nghiên cứu nhiều hơn về beta. Vì sao, e.........mmmmm, không biết bạn trả lời, hãy tự mình suy nghĩ. Nếu bạn quan tâm, bạn có thể tin nhắn riêng tư, nhắn tin cho tác giả của số công cộng này, logic rõ ràng và đặc trưng, tác giả sẽ tự gửi một chiếc ví đỏ nhỏ cho bạn.

Các chiến lược định lượng phát triển thực sự là một hai mặt, rất khó khăn rất khó khăn cho những người mới bắt đầu, khó khăn không chỉ là mã ở cấp độ mỹ thuật, cũng khó khăn là mỹ thuật cấp độ chiến lược logic tư duy. Cả hai đều quan trọng, không nên thiên vị.

Các thuật toán chiến lược sử dụng các nguyên tắc biến động tỷ lệ lợi nhuận lăn lăn của các giá toán học chu kỳ nhất định thâm nhập giảm, dựa trên phạm vi biến động này tính toán một chu kỳ nhất định lăn lăn giá trị tối đa và tối thiểu tìm kiếm, giá trị tối đa là đường ống lên, giá trị tối thiểu là đường ống xuống, phá vỡ đường ống lên, mở giao dịch.

Các giao diện trực quan đồ họa cụ thể có thể được tham khảo dưới đây.

img

Trong thực tế, chiến lược này là chiến lược mà tôi đã sử dụng trước đây để làm ETF rộng rãi, tất nhiên cũng được sử dụng để mua và bán cổ phiếu khi chọn chỉ số, sau đó chuyển trực tiếp đến vòng đồng xu, ngạc nhiên khi thấy thực sự giảm kích thước tấn công, các tham số không cần thay đổi.

img

Dưới đây là biểu đồ cho kết quả kiểm tra lại trong năm đó, với một màn hình hiển thị phần mã logic cụ thể:

img

Trên thực tế, sau khi đọc dữ liệu, các chỉ số dữ liệu được tính toán thông qua pandas.

img

Sau khi tính toán hoàn tất, bạn có thể xuất dữ liệu bằng hàm pd.to_csv (), và xuất hình ảnh các bảng phím được sử dụng trong hình ảnh trên (lưu ý: tôi sử dụng các bản cũ của bảng phím).

Tất cả các chiến lược cụ thể, hình ảnh và mã chỉ số hiệu suất đều là những câu chuyện vớ vẩn.

03

Nói về định lượng

Thứ nhất, một chiến lược tốt là không sợ công khai, và đây không phải là một thứ gì đó về việc phát triển vũ khí chiến đấu cấp độ chiến tranh, quyết định cái chết hoặc cái chết, vì vậy tôi và một số cơ quan hoặc cá nhân, cũng không sợ cái gọi là bí mật chiến thuật, bởi vì theo tôi, CTA không có bí mật.

Thứ hai: Nhiều người, dù là người mới hay người đã bắt đầu hoặc thậm chí bao gồm cả những người chơi cũ, đều cần nguồn cảm hứng, bao gồm việc khai thác các yếu tố của cổ phiếu, ý tưởng về chiến lược chọn thời gian, v.v. thường được lấy từ kinh nghiệm chủ quan, báo cáo nghiên cứu, trao đổi giao tiếp trong vòng tròn, v.v.

Cuối cùng, kết luận là định lượng là một sản phẩm mang tính nội bộ, giao dịch lập trình thuộc về một tập hợp nhỏ của định lượng, từ thời đại học của chính mình (khoảng năm 2009), khi đó có người tham gia vào lập trình, chẳng hạn như TB, kim tự tháp, nếu tiếp tục ngày hôm nay, có thể nói rằng những người tiên tri tiên tri đầu tiên đã 10 năm, chưa bao gồm những người có chiến lược và hệ thống tần số cao mang lại từ Wall Street. Do đó, chiến lược định lượng hoặc chiến lược lập trình đã tồn tại trong Trung Quốc trong một thời gian, nhưng trong vòng thị phần và các đối tượng hiện tại, và các đối tượng chính sách hỗ trợ nói, định lượng vẫn là một phần rất nhỏ, mặc dù nhiều nghiên cứu về phân tích và mô hình chiến lược được xây dựng.

Cuối cùng, xin cảm ơn hàng ngàn cộng đồng về kỹ thuật định lượng và lời mời viết bài. Nếu bạn có bất kỳ vấn đề về mã và chiến lược cụ thể nào, vui lòng gửi tin nhắn riêng cho tôi hoặc T-Bone, tôi cũng trong nhóm T-Bone.

Cuối cùng, một lần nữa cảm ơn các bạn vì những lời giải thích tuyệt vời!

Bạn bè chưa tham gia nhóm thảo luận về định lượng hãy nhanh chóng tham gia và lấy tài liệu học tập!

Quý vị có thể xem hình ảnh của chúng tôi ở đây.

img

WeChat quét sạch Hãy chú ý đến số này.


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

Thêm nữa

Alô.Có thể chuyển sang phiên bản Bitcoin không?