A estratégia de flutuação fácil

Autora:Feijão-verde, Data: 18 de abril de 2020 22:54:45
Tags:ATR

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.

É só Demo! Demo! A Tia Demo! Pais, cuidado com a realidade!


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: 2019-04-18 00:00:00
end: 2020-04-17 23:59:00
period: 15m
exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD"}]
*/

// 胖友们!! 实盘前请注意!! 此内容仅是吕神翻译demo, 上实盘请自行添加相关内容.
// 是Demo!!! 实盘谨慎!!!

// 初始化
exchange.SetContractType('XBTUSD')
var vix_arr = []
var vix_ma = []
var vix_ma_up = []
var vix_ma_dw = []
var LastBarTime = 0
var isFirst = true

function initVix() {
    records = _C(exchange.GetRecords)
    Log(records.length)
    if (records && records.length > 2 * N + 2) {
        // 初始化前N个vix值
        for (var i = -2; i < N - 1; i++) {
            Bar = records[records.length - N + i]
            lastNbar = records[records.length - N + i - N]
            Vix()
        }
    }
    // Log("vix_arr", vix_arr.length, vix_arr)
    // Log("vix_ma", vix_ma.length, vix_ma)
    // Log("vix_ma_up", vix_ma_up.length, vix_ma_up)
    // Log("vix_ma_dw", vix_ma_dw.length, vix_ma_dw)
}

// 获取交易所信息
function UpdateInfo() {
    account = _C(exchange.GetAccount)
    pos = _C(exchange.GetPosition)
    records = _C(exchange.GetRecords)
    Bar = records[records.length - 1]
    lastNbar = records[records.length - N]
    ticker = _C(exchange.GetTicker)
}

// 计算波动率及上下轨
function Vix() {
    // 当每K结束时计算
    if (LastBarTime !== Bar.Time) {
        // 当K达到计算根数开始计算vix_arr
        if (records && records.length > N) {
            // 获取vix 当前close自然对数 除以 前90根自然对数 减一
            vix = Math.log(Bar.Close) / Math.log(lastNbar.Close) - 1
            vix_arr.push(vix)
            //Log("vix_arr", vix_arr)
        }
        // 当vix_arr达到计算根数时开始计算vix_ma
        if (vix_arr && vix_arr.length > N) {
            // 获取对应周期vix算其移动平均值
            vix_ma = TA.MA(vix_arr, N)
            // 去除ma中的null值
            vix_ma = vix_ma.filter(function(val) {
                return !(!val || val === "");
            })
            //Log("vix_ma", vix_ma)
            // 获取上下通道
            vix_up = TA.Highest(vix_arr, N)
            vix_dw = TA.Lowest(vix_arr, N)
            vix_ma_up.push(vix_up)
            vix_ma_dw.push(vix_dw)
            // Log("vix_ma_up", vix_ma_up)
            //Log("vix_ma_dw", vix_ma_dw)
            // 限制所有数组长度
            if (vix_arr.length > 2000) {
                vix_arr.splice(0, 1);
            }
            if (vix_ma.length > 2000) {
                vix_ma.splice(0, 1);
            }
            if (vix_ma_up.length > 2000) {
                vix_ma_up.splice(0, 1);
            }
            if (vix_ma_dw.length > 2000) {
                vix_ma_dw.splice(0, 1);
            }
        }
        LastBarTime = Bar.Time
    }
}

// 画线
function PlotMA_Kline(records, isFirst) {
    //$.PlotRecords(records, "K")
    if (isFirst) {
        for (var i = records.length - 1 - N; i <= records.length - 1; i++) {
            if (vix_ma[i] !== null) {
                $.PlotLine("vix_arr", vix_arr[i], records[i].Time)
                $.PlotLine("vix_ma", vix_ma[i], records[i].Time)
                $.PlotLine("vix_ma_up", vix_ma_up[i], records[i].Time)
                $.PlotLine("vix_ma_dw", vix_ma_dw[i], records[i].Time)
            }
        }
        PreBarTime = records[records.length - 1].Time
    } else {
        if (PreBarTime !== records[records.length - 1].Time) {
            $.PlotLine("vix_arr", vix_arr[vix_arr.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma", vix_ma[vix_ma.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma_up", vix_ma_up[vix_ma_up.length - 2], records[records.length - 2].Time)
            $.PlotLine("vix_ma_dw", vix_ma_dw[vix_ma_dw.length - 2], records[records.length - 2].Time)
            PreBarTime = records[records.length - 1].Time
        }
        $.PlotLine("vix_arr", vix_arr[vix_arr.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma", vix_ma[vix_ma.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma_up", vix_ma_up[vix_ma_up.length - 1], records[records.length - 1].Time)
        $.PlotLine("vix_ma_dw", vix_ma_dw[vix_ma_dw.length - 1], records[records.length - 1].Time)
    }
}

// 交易逻辑
function onTick() {
    // 无仓位时
    if (pos.length == 0) {
        // Long 当前K线的收盘价 > 上轨 && 之前K线的收盘价 <= 上轨
        if (vix_arr[vix_arr.length - 1] > vix_ma_up[vix_ma_up.length - 1] &&
            vix_arr[vix_arr.length - 2] <= vix_ma_up[vix_ma_up.length - 2]) {
            exchange.SetDirection("buy")
            exchange.Buy(ticker.Sell, Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'BK')
        }
        // Short 当前K线的收盘价 < 下轨 && 之前K线的收盘价 >= 下轨
        if (vix_arr[vix_arr.length - 1] < vix_ma_dw[vix_ma_dw.length - 1] &&
            vix_arr[vix_arr.length - 2] >= vix_ma_dw[vix_ma_dw.length - 2]) {
            exchange.SetDirection("sell")
            exchange.Sell(ticker.Buy, Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SK')
        }
    }
    // 多仓时
    if (pos.length > 0 && pos[0].Type == 0) {
        // 平多 当前K线的收盘价 < 中轨 && 之前K线的收盘价 >= 中轨
        if (vix_arr[vix_arr.length - 1] < vix_ma[vix_ma.length - 1] &&
            vix_arr[vix_arr.length - 2] >= vix_ma[vix_ma.length - 2]) {
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SBK')
        }
    }
    // 空仓时
    if (pos.length > 0 && pos[0].Type == 1) {
        // 平空 当前K线的收盘价 > 中轨 && 之前K线的收盘价 <= 中轨
        if (vix_arr[vix_arr.length - 1] > vix_ma[vix_ma.length - 1] &&
            vix_arr[vix_arr.length - 2] <= vix_ma[vix_ma.length - 2]) {
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PSK')
        }
    }
}

function main() {
    initVix()
    while (1) {
        UpdateInfo()
        Vix()
        onTick()
        if (records) {
            PlotMA_Kline(records, isFirst)
            //Log('画线')
            isFirst = false
        }
        Sleep(5 * 1000)
    }
}

Relacionados

Mais.

Inventor de quantificaçãoEu vou atravessar https://www.fmz.com/strategy/361827

RootmeAs feijões são bonitas.

Um chá preto.Essa estratégia parece não ter muita relação com a volatilidade.

homilhaEu não posso descrever a taxa de oscilação, apenas a relação de amplitude de oscilação, exceto a de 90 ciclos atrás. O método de abertura do HH, LL é a operação do DC do canal de Dongcheng, que usa uma estratégia uniforme; em geral, é um sistema de maré melhorado. A volatilidade implícita é algo que os profissionais podem descrever.

Nuvens levesMinha irmã, você vai pegar a mala?

DesconfortávelVocê me pergunta se eu não apoio, eu certamente apoio.

DesconfortávelVocê me pergunta se eu não apoio, eu certamente apoio.

Nuvens levesMuito bem.

Feijão-verdeA estimativa é de que o próximo semestre esteja vazio.

Nuvens levesNão, não, não, não.

Feijão-verde (^U^)ノ~YO

Feijão-verdeNão tenho tempo para pensar no futuro, mas eu não sou muito bom a programar, é isso, ou não posso usar a série. / ((Ooooooooo) /~~