30 líneas de código que te llevan al mundo de la inversión cuantitativa.

El autor:Un sueño pequeño., Creado: 2016-04-06 10:17:26, Actualizado: 2020-01-13 15:17:11

Una estrategia de línea media extremadamente simplificada de 30 líneas para crear un sistema de ganancias positivas.

¡Sí! ¡Es cierto que son 30 líneas de código! ¡Sólo 30 líneas de texto pequeño que estoy acostumbrado a leer antes de leer el código, para tener una idea macro!

Los parámetros de la estrategia son los siguientes:

Parámetros Descripción Tipo de trabajo Valores por defecto
Período rápido Ciclo de lanzamiento de línea rápida Tipo de número 3
Pérodo lento Ciclo de lanzamiento lento Tipo de número 7
EntraPeriodo Período de observación en el mercado Tipo de número 3
ExitPeriodo rápido Ciclo de venta de línea rápida Tipo de número 3
ExitPeriodo lento Ciclo de baja en línea Tipo de número 7
Período de salida Período de observación Tipo de número 1
Posición Porcentaje de posiciones Tipo de número 0.8
Intervalo de tiempo Período de consulta ((segundos) Tipo de número 10

img

  • Importación交易类库Es fácil escribir una estrategia, no hay que preocuparse por si comprar o vender, etc.
  • Cuando se encuentra confundido al leer el código y encuentra variables no declaradas, responde al 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 estrategia sólo tiene una función principal main (), sin otros módulos de funciones. Sólo hay un bucle dentro de la función principal.
  • He compartido una versión de la nota de código de esta estrategia en el grupo QQ, para que los estudiantes principiantes puedan ver la nota para aprender.
  • Para aquellos que no se han unido al grupo oficial de QQ, por favor únanse: 309368835 Los inventores cuantifican el intercambio de EA (BotVS original); la estrategia es muy simple, con pocas líneas de código.
  • Para los estudiantes que no tienen un conocimiento básico de JavaScript, aquí se explica la sintaxis de forma sencilla para evitar que los estudiantes no entiendan el código.

Declaración de variables

Con las palabras clavevar+ nombres de variables, por ejemplovar name = “小明”

El ciclo

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

Si la condición de ciclo es verdadera, el código dentro de {} se ejecuta repetidamente. Si la condición de ciclo es falsa, salta del ciclo.

Condiciones de la rama

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

Es muy sencillo, y la traducción es que si (true) { ejecuta este código} su caso { ejecuta este código}

La asignación

Uno.=El número es un valor, por ejemplo.

name = “张三”;

Es fácil confundir la asignación con la comparación. Por ejemplo:==Los dos números iguales. Ejemplos“张三”==“李四”Es muy claro que Zhang y Li no son iguales.“张三”==“李四”¿Qué es lo que está pasando?

Aplicación de las API

Antes de mostrar la política, hemos analizado las API y las funciones de exportación de la plantilla utilizadas en la política, y en la cuantificación de los inventores hay una descripción detallada de la documentación de la API y el código fuente de la plantilla.

  • Función $.GetAccount: Función de exportación de plantillas para obtener información de cuentas de los intercambios
  • Función de registro: API para exportar información a los registros, mostrar valores, etc.
  • Función $.Cross: Función de exportación de plantillas para detectar el cruce de indicadores uniformes
  • Función $.Buy: función de exportación de plantillas para operaciones de compra
  • Función $.Sell: Función de exportación de plantillas para vender operaciones
  • Función LogProfit: API, para la producción de ganancias, la función puede agregar otra información desde el segundo parámetro
  • Función de sueño: API, para que el programa se detenga un momento, la unidad de parámetro es de milisegundos.

El código estratégico también utiliza funciones de librería de JavaScript, métodos de objetos.

  • Función Math.abs ((): devuelve el valor absoluto del parámetro
  • Función toFixed (() del objeto Number: para guardar los números menores en cuadrados y quintos según el parámetro.
  • Función global parseFloat: devuelve el número de puntos flotantes de los parámetros de la cadena.

Para obtener más información sobre JavaScript, vea: Objetos de número de JavaScripthttp://www.w3school.com.cn/jsref/jsref_obj_number.aspAprender más

El proceso de programación es dibujado a mano, sin herramientas, es un aficionado.

img

El paso a paso para construir nuestra estrategia

Todos los procedimientos estratégicos están en la entrada.main()Función, es decir, la política comienza a ejecutarse desde la función principal.

img

img

img

img

img

Disco en vivo

¡La estrategia de 30 líneas sencillas está hecha! La estrategia Running! se ha puesto en marcha, comprando la operación.

img

Gracias a Inventor Quantify, que proporciona un código tan simple, hay una gran cantidad de estrategias de código abierto en Inventor Quantify para aprender y mejorar junto con muchos expertos en la cuantificación.

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

Apoyo para la enseñanza en video

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

Fuentes de información


Relacionados

Más.

Se trata de una serie de medidas de seguridad.¿La función $.GetAccount en la API se ha actualizado a exchange.GetAccount?

¿Por qué no lo haces?El código lo entiendo, pero no sé qué funciona exactamente esta estrategia.

:)Muchas gracias a Little Dream, tu artículo está muy bien escrito.

¿Qué quieres decir?El tutorial del dueño está muy bien escrito, gracias.

el bincoinGracias al dueño, voy a estudiar bien.

Las estrategias de venta a alto precio de las líneas cortasEn cuanto a los detalles.

Un sueño pequeño.$.GetAccount es la función de exportación de la plantilla FMZ (la plantilla es código reutilizable, vea la descripción de la plantilla en la documentación de la API). $.GetAccount es la función de exportación de esta plantilla: https://www.fmz.com/strategy/10989. La política anterior es sólo una parte del código, no hay configuración de parámetros de la política, la política completa se puede buscar en la Plaza de la Política 30 líneas de estrategia recta.

¿Por qué no lo haces?Eso es. Muchas gracias.

Un sueño pequeño.Es decir, dos líneas horizontales, la línea rápida que atraviesa la línea lenta generalmente es una señal de compra, con una mayor probabilidad de subida (operación de compra automática del programa). La línea rápida que atraviesa la línea lenta generalmente es una señal de venta, con una mayor probabilidad de caída (operación de venta automática del programa). Con esta operación repetida, se puede obtener un beneficio en la tendencia al alza del mercado.

Un sueño pequeño.¡Gracias por el apoyo!

Un sueño pequeño.¡Gracias por su apoyo!