Trinta linhas de código levam-nos ao mundo do investimento quantitativo.

Autora:Sonhos pequenos, Criado: 2016-04-06 10:17:26, Atualizado: 2020-01-13 15:17:11

A estratégia de linha média ultra-simplificada 30 linhas para criar um sistema de ganhos positivos

Isso mesmo! Isso mesmo é 30 linhas de código! São apenas 30 linhas de texto que eu costumo ler antes de ler.

Os parâmetros da estratégia são:

Parâmetros Descrição Tipo Valor padrão
Período rápido Ciclo de lançamento Tipo numérico (number) 3
SlowPeriodo Ciclo de lançamento lento Tipo numérico (number) 7
IntroduçãoPeriodo Período de observação Tipo numérico (number) 3
ExitPeriodo rápido Ciclo da linha rápida Tipo numérico (number) 3
ExitPeriodo lento Ciclo de baixa Tipo numérico (number) 7
Período de saída Período de observação Tipo numérico (number) 1
PosiçãoRatio Proporção de posições Tipo numérico (number) 0.8
Intervalo Período de consulta ((segundos) Tipo numérico (number) 10

img

  • Importação交易类库A estratégia é fácil de escrever, sem ter que se preocupar em comprar ou vender.
  • Quando você está lendo o código e está confuso com as variáveis não declaradas, vá ao grupo e responda.
function main() {
    var STATE_IDLE  = -1;
    var state = STATE_IDLE;
    var opAmount = 0;
    var initAccount = $.GetAccount();
    Log(initAccount);
    while (true) {
        if (state === STATE_IDLE) {
            var n = $.Cross(FastPeriod, SlowPeriod);
            if (Math.abs(n) >= EnterPeriod) {
                opAmount = parseFloat((initAccount.Stocks * PositionRatio).toFixed(3));
                var obj = n > 0 ? $.Buy(opAmount) : $.Sell(opAmount);
                if (obj) {
                    opAmount = obj.amount;
                    state = n > 0 ? PD_LONG : PD_SHORT;
                    Log("开仓详情", obj, "交叉周期", n);
                }
            }
        } else {
            var n = $.Cross(ExitFastPeriod, ExitSlowPeriod);
            if (Math.abs(n) >= ExitPeriod && ((state === PD_LONG && n < 0) || (state === PD_SHORT && n > 0))) {
                var obj = state === PD_LONG ? $.Sell(opAmount) : $.Buy(opAmount);
                state = STATE_IDLE;
                var nowAccount = $.GetAccount();
                LogProfit(nowAccount.Balance - initAccount.Balance, '钱:', nowAccount.Balance, '币:', nowAccount.Stocks, '平仓详情:', obj, "交叉周期", n);
            }
        }
        Sleep(Interval*1000);
    }
}
  • Esta estratégia tem apenas uma função principal main (), sem outros módulos de funções.
  • Eu compartilhei uma versão de código-fonte para esta estratégia no QQ Group, para que os alunos iniciais possam ver a descrição e aprender mais facilmente.
  • Se você não está no grupo oficial de QQ, junte-se: 309368835 Inventores de interação quantitativa da EA (BotVS original); a estratégia é simples, apenas algumas dezenas de linhas de código!
  • Para os alunos que não têm conhecimentos básicos de JavaScript, a gramática é simples para que os alunos não entendam o código.

Declaração de variáveis

Usar palavras-chavevar+ nome da variável, por exemplovar name = “小明”

Ciclos

while(循环条件){
    // 将会重复执行的代码
}

Se a condição de ciclo for verdadeira, o código dentro do {} será executado repetidamente. Se a condição de ciclo for falsa, salta o ciclo.

Termos de filiação

if (判断条件){
    // 执行代码
} else {
    // 执行代码
}

A tradução é muito simples: se (true) {executar este código}

Atribuição

Um=Um número é uma atribuição, por exemplo.

name = “张三”;

O que é mais fácil é confundir a atribuição com a comparação, mas o que é mais fácil é confundir a atribuição com a comparação. Por exemplo:==Dois números iguais. Exemplos“张三”==“李四”O que é claro é que o Zhang não é o Li.“张三”==“李四”Por falsidade.

APIs relacionados

Antes de demonstrar a política, analisamos a API e a função de exportação do modelo usada na política, e há uma documentação detalhada da API e uma instrução de código fonte do modelo no inventor quantified.

  • Função $.GetAccount: função de exportação de modelo para obter informações sobre contas de exchanges
  • Função de log: API para exportar informações para o log, exibir valores, etc.
  • Função $.Cross: função de exportação de modelo usada para detectar o cruzamento de indicadores uniformes
  • Função $.Buy: função de exportação de modelo para operações de compra
  • Função $.Sell: função de exportação de modelo para venda de operações
  • Função LogProfit: API, usada para exportar ganhos, função que pode adicionar outras informações a partir do segundo parâmetro
  • Função de sono: API, para que o programa pare por um momento, unidade de parâmetro é milissegundo.

O código estratégico também usa funções de biblioteca e métodos de objetos do JavaScript.

  • Função Math.abs ((): Retorna o valor absoluto do parâmetro
  • A função toFixed ((() do objeto Number: por parâmetro, mantém os dígitos menores em quadrados e quintos.
  • A função global parseFloat: Retorna o número de pontos flutuantes de um parâmetro de string.

Informações sobre o JavaScript acima podem ser obtidas em: JavaScript Number Objecthttp://www.w3school.com.cn/jsref/jsref_obj_number.aspAprenda mais

O processo é desenhado à mão, sem ferramentas, amador.

img

A estratégia foi construída passo a passo.

Todos os procedimentos estratégicos são executados na entrada.main()Funções, isto é, políticas que começam a ser executadas a partir da função principal.

img

img

img

img

img

Disco real

A estratégia de 30 linhas simples é concluída! A estratégia Running! começou a funcionar, com a operação de compra.

img

Graças a Inventor Quantify, que fornece um código tão simples, há uma abundância de estratégias de código aberto para aprender e melhorar em Inventor Quantify, juntamente com muitos outros profissionais de quantificação.

官方QQ群定期更新学习资源,为量化学习者铺平道路,登堂入室。

Acompanhamento de vídeo

http://v.youku.com/v_show/id_XMTUyNDY1NjQ2NA==.html

Referências


Relacionados

Mais.

FMZ_JHA função $.GetAccount na API foi atualizada para exchange.GetAccount (?).

WojiushizhemedeshuaiqidemeinanziEu entendo o código, mas não sei o que essa estratégia realmente faz.

:)Obrigado Little Dream, o seu artigo é muito bom.

Não, não.O tutorial do proprietário é muito bem escrito, obrigado!

bincoinObrigado, senhor, vou aprender muito bem.

A estratégia de venda de preços elevadosAfinal, o que eu quero dizer é que, se você não for capaz de fazer isso, você não pode fazer isso.

Sonhos pequenos$.GetAccount é a função de exportação do modelo FMZ (o modelo é código reutilizável, veja a descrição do modelo no documento API). $.GetAccount é a função de exportação do modelo: https://www.fmz.com/strategy/10989). A estratégia acima é apenas uma parte do código, sem configuração de parâmetros de estratégia, e a estratégia completa pode ser pesquisada em 30 linhas de estratégia em linha reta no quadrado da estratégia.

WojiushizhemedeshuaiqidemeinanziE foi isso que aconteceu.

Sonhos pequenosA linha rápida passa pela linha lenta, geralmente é um sinal de compra, com maior probabilidade de alta. A linha rápida passa pela linha lenta, geralmente, é um sinal de venda, com maior probabilidade de queda.

Sonhos pequenosNão é bom para mim, vou fazer mais material de aprendizagem mais tarde, obrigado pelo apoio!

Sonhos pequenosContinuem a fazer o seu trabalho!