A estratégia do lançamento de moedas.

Autora:Feijão-verde, Data: 21 de Fevereiro de 2020 17:39:52
Tags:

O nome completo é Tōhoku, traduzido por Tōhoku Takeda. A seguir está o conteúdo reproduzido. Por favor, dê mais atenção ao "Mundo Quantificado de Milhões" e obtenha mais código-fonte estratégico! E também, um anúncio para si mesmo. Publicado em Diário Quantificado de Feijões O que você está fazendo aqui é um exemplo de como você pode fazer isso. E mais benefícios, mais você vai ter.


Com uma boa taxa de flutuação, é tão simples ganhar BTC! Original, O Oceano, O Mundo Quantificado, Mil Mil 3 dias atrás A pesquisa e desenvolvimento de estratégias de quantificação de urânio é, na verdade, uma dupla, difícil e difícil para quem está apenas começando, difícil não só é o código no nível de urânio, mas também difícil é o pensamento lógico estratégico no nível de urânio.

Olá a todos os meus companheiros quantificadores!

Este artigo é a segunda edição do artigo exclusivo, e milhares de pessoas estão honradas em ser convidadas para o Océano Atlântico para apresentar: como usar o fator de flutuação para ganhar facilmente o BTC e alcançar a diminuição da diminuição da diminuição da diminuição da diminuição!

O conteúdo deste número abrange a revelação de ideias, a implementação de códigos e a percepção pessoal, etc., não se pode dizer que não está cheio de lixo, milhares de pessoas também se sentem beneficiadas ao ler, realmente muito admirado e agradecido a Liu.

A partir de agora, o número de pessoas que estão usando o sistema de câmbio está aumentando, e o número de pessoas que estão usando o sistema está aumentando.

01

Introdução

Bom dia, hoje tenho o privilégio de promover o artigo no número público de quantificação de milhares de pessoas, e também agradeço o convite do chefe T (um dos milhares de números externos).

O chefe do T diz que escrever um quantificado, mas não dá nenhum escopo, realmente não sei de onde escrever. Então comece com o seu tópico favorito para discutir com os outros. Indicadores e estratégias de quantificação (que podem ser auxiliados ou automatizados), é claro, finalmente, nós também adicionamos uma frase que os velhos costumam dizer: investir é arriscado, entrar no mercado é preciso ser cauteloso, a estratégia é apenas para fornecer idéias e lições, ganhar e perder.

A declaração de inocência terminou e aqui começa o assunto.

02

Uma estratégia simples de volatilidade

Quem me conhece sabe que, pessoalmente, eu não sou muito fã de jogos como o Alfa, mas comparativamente confio mais no beta, mais em pesquisas sobre o beta. Quanto ao porquê, e.........mmmmm, eu não sei.

O desenvolvimento de estratégias de quantificação é na verdade uma dupla faceta, muito difícil para quem está apenas começando, difícil não só é o código do nível da magia, mas também difícil é o pensamento lógico estratégico do nível da lógica. Ambos são importantes e não devem ser preconceituosos.

O algoritmo de estratégia usa o princípio da flutuação do rendimento de rolagem de uma queda de um certo ciclo de preços de lógica, com base nessa faixa de flutuação, para calcular o valor máximo e mínimo de rolagem de um determinado ciclo, o valor máximo como o tubo de cima, o valor mínimo como o tubo de baixo, quebrar o tubo de cima, abrir um negócio.

A interface de visualização gráfica específica pode ser consultada no PPT abaixo. O gráfico foi desenhado por ele mesmo com o Pyecharts.

img

Na verdade, essa estratégia é a estratégia que ele usou antes para fazer ETFs de base ampla, e, claro, também para comprar e vender ações na escolha de índices, e depois mudou diretamente para o círculo monetário, surpreso ao descobrir que realmente diminuiu o impacto, os parâmetros não precisam mudar.

img

O gráfico abaixo mostra o desempenho do reexame do ano, com a seguinte imagem de código lógico em partes específicas:

img

A parte superior é, na verdade, a leitura dos dados e a computação dos dados indicadores através dos pandas.

img

Após a conclusão do cálculo, pode-se exportar dados através da função pd.to_csv e visualizar a saída dos pyecharts usados no screenshot acima.

A partir de agora, a empresa está trabalhando com o projeto de um novo modelo de gestão de negócios, o que significa que o projeto está sendo desenvolvido de forma mais eficiente.

03

Quantificação

Primeiro, uma boa estratégia não tem medo de ser pública, não é um desenvolvimento de armas de combate a nível de guerra que decida sobre a vida ou a morte, então ele e outras instituições ou indivíduos, não têm medo de uma chamada estratégia secreta, porque, na minha opinião, a CTA não tem segredos.

Segundo: Muitas pessoas, sejam novas ou já iniciantes, ou mesmo jogadores antigos, precisam de fontes de inspiração, incluindo a exploração de fatores de ações, ideias de estratégias de tempo, etc., que geralmente são provenientes de experiências subjetivas, relatórios de pesquisa, intercâmbio de comunicação no círculo, etc.

Para concluir, a quantificação era um produto vindouro, o comércio programático pertencia a um subconjunto de quantificação, já na universidade (cerca de 2009), quando a programação, como TB, pirâmide, etc., já estava sendo caçada, e se continuasse hoje, pode-se dizer que essa parte dos primeiros profetas de previsão já tinha 10 anos, não incluindo aqueles que traziam estratégias e sistemas de alta frequência de Wall Street. Portanto, a estratégia de quantificação ou a estratégia de programação na China já existe há algum tempo, mas no círculo atual de participação de mercado e atores e apoios políticos, a quantificação ainda é uma parte muito pequena, apesar de muitos estudos com análises e modelos estratégicos.

Para terminar, agradeço a quantidade de pessoas que me confiaram e me convidaram para escrever um artigo. Se você tem alguma questão específica de código ou estratégia, envie um e-mail para mim ou para o T-Bone, que também está no grupo do T-Bone.

E, finalmente, mais uma vez, obrigado pela excelente explicação!

Os amigos que ainda não se juntaram ao grupo de discussão quantitativa podem entrar rapidamente e obter informações!

O edifício do milhares de torcedores!

img

O WeChat limpou A preocupação com o número público


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

Mais.

AlegriaO Bitcoin pode ser convertido para o Bitcoin?