Estratégia de linha média de 30 linhas para criar um sistema de ganhos positivos
Isso é verdade! Você ouviu bem, são 30 linhas de código! Eu costumo ler o código em 30 linhas para ter uma visão geral!
Os parâmetros da política são os seguintes:
| parâmetro | descrever | tipo | Valores por defeito |
|---|---|---|---|
| FastPeriod | Ciclo de entrada rápida | Tipo de número | 3 |
| SlowPeriod | Ciclo de entrada em mercado | Tipo de número | 7 |
| EnterPeriod | Período de observação | Tipo de número | 3 |
| ExitFastPeriod | Ciclo de linha rápida | Tipo de número | 3 |
| ExitSlowPeriod | Ciclo de saída da cidade | Tipo de número | 7 |
| ExitPeriod | Período de observação | Tipo de número | 1 |
| PositionRatio | Proporção de posições | Tipo de número | 0.8 |
| Interval | Período de sondagem (s) | Tipo de número | 10 |
- Importação.
交易类库É fácil de escrever uma estratégia, sem ter que se preocupar em comprar ou vender. - Ao ler o código, se você se sentir confuso com uma variável não declarada, responda em grupo.
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) e não há outros módulos de função. Há apenas um ciclo dentro da função principal.
- Eu coloquei uma versão com comentários do código desta estratégia no grupo QQ, para que os alunos que estão aprendendo pela primeira vez possam ver os comentários para facilitar a aprendizagem.
- Não há nenhum QQ oficial aqui, por favor, junte-se: 309368835 Inventor Quantitative EA Communication (original BotVS). A estratégia é simples, com apenas algumas dezenas de linhas de código!
- Para os alunos que não têm conhecimento básico de Javascript, vamos simplificar a gramática para que eles não tenham dificuldade em entender o código.
Declaração de variáveis
Palavras-chavevar+ Nome de variável, por exemplovar name = “小明”
Circulação
while(循环条件){
// 将会重复执行的代码
}
O código dentro de {} é executado repetidamente se a condição de ciclo for verdadeira. Se a condição de ciclo for falsa, o código sairá do ciclo.
Subdivisão condicional
if (判断条件){
// 执行代码
} else {
// 执行代码
}
É muito simples, a tradução é que se (verdade) (executar este código) (executar este código)
Valorização
Um.=O número é atribuição, por exemplo.
name = “张三”;
É fácil confundir atribuição de valor com equivalência.
Comparação==Dois números iguais.
Exemplo.“张三”==“李四”É óbvio que Zhang Shui não é Li Jie.“张三”==“李四”Não é verdade.
APIs relacionados
Antes de demonstrar e escrever a estratégia, examinamos as APIs e as funções de exportação de modelos usadas na estratégia. A quantificação do inventor inclui a documentação detalhada da API e o código fonte do modelo.
- $.GetAccount Função: função de exportação de modelo para obter informações sobre contas de exchanges
- Função Log: API, usada para expor informações ao log, exibir valores, etc.
- $.Cross Função: função de exportação do modelo para detectar o cruzamento de indicadores de linha média
- $.Buy Função: função de exportação do modelo para operações de compra
- $.Sell Função: função de exportação do modelo para operações de venda
- Função LogProfit: API, usada para a saída de lucro, a função pode adicionar outras informações a partir do segundo parâmetro
- Função Sleep: API, que faz o programa parar por um momento, com parâmetros em milissegundos.
O código da estratégia também usa funções de biblioteca e métodos de objetos do Javascript.
- Função Math.abs ((): retorna o valor absoluto do argumento
- A função toFixed () do objeto Number: mantém os dígitos menores em quadrados e em quintos. Observe que a função retorna uma string
- parseFloat global: retorna um número de float.
Para obter mais informações sobre o JavaScript, acesse: JavaScript Number Object http://www.w3school.com.cn/jsref/jsref_obj_number.asp
O diagrama do programa é desenhado à mão, sem usar ferramentas, é muito amador.
Construir a nossa estratégia passo a passo
Todas as entradas de programas de estratégia são:main()Funções, ou seja, as estratégias começam a ser executadas pela função main.
Oferta Firme
A partir daí, uma estratégia simples de 30 linhas é feita!
A estratégia do Running! está em andamento, compra e operação.
Graças ao InventorQuant, que fornece um código tão simples, há uma grande quantidade de estratégias de código aberto disponíveis para aprender e melhorar no InventorQuant, e avançar junto com muitos outros especialistas em quantificação.
官方QQ群定期更新学习资源,为量化学习者铺平道路,登堂入室。
Acompanhamento de vídeo
http://v.youku.com/v_show/id_XMTUyNDY1NjQ2NA==.html
Referências
$.GetAccount 是FMZ 模板的导出函数(模板就是可复用的代码,参看API 文档上模板的描述)。 $.GetAccount是这个模板:https://www.fmz.com/strategy/10989 的导出函数。
上面的策略只是代码部分,没有策略参数设置,完整的策略可以在策略广场搜索30行均线策略。
就是2条均线,快线上穿慢线 一般是买入信号,上涨概率较大(程序自动买入操作)。 快线下穿慢线一般是卖出信号,下跌概率较大(程序自动卖出)。通过这样反复操作 在行情上升趋势中可以攫取利润。
- 1








