Type/to search
8
Follow
1365
Followers
30 líneas de código te llevan al mundo de la inversión cuantitativa
FAQ
Created 2016-04-06 10:17:26  Updated 2020-01-13 15:17:11
 13
 7758

Estrategia de línea media de 30 líneas para crear un sistema de ganancias positivas

Es cierto, es cierto lo que escuchas, son 30 líneas de código.

Los parámetros de la política son los siguientes:

parámetrodescribirtipoValores por defecto
FastPeriodCiclo de línea rápida de entrada al mercadoTipo de número3
SlowPeriodCiclo de línea lenta de entrada al mercadoTipo de número7
EnterPeriodPeriodo de observación de la entrada en el mercadoTipo de número3
ExitFastPeriodCiclo de línea rápida fuera de la ciudadTipo de número3
ExitSlowPeriodCiclo de salida de la ciudadTipo de número7
ExitPeriodPeríodo de observación fuera de la ciudadTipo de número1
PositionRatioPorcentaje de posicionesTipo de número0.8
IntervalPeriodo de encuesta (segundos)Tipo de número10

img

  • Se ha importado.交易类库Es una estrategia sencilla, no hay que estar pendiente de comprar o vender.
  • Cuando se encuentran con una variable no declarada que los confunde al leer el código, diríjase al grupo para responder.
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 solo tiene una función principal principal (), sin otros módulos de la función. La función principal tiene solo un ciclo.
  • He publicado una versión de la estrategia con comentarios en el código y la he compartido en el grupo de QQ, para que los estudiantes que están aprendiendo por primera vez puedan ver los comentarios para que les sea más fácil aprender.
  • Si no estás en el grupo oficial de QQ, puedes unirte a: 309368835 Inventor Quantitative EA Communication (BotVS) ¦ ¡La estrategia es tan sencilla que sólo tiene que ser decenas de líneas de código!
  • Para los estudiantes que no tienen conocimientos básicos de Javascript, vamos a hablar de la gramática para evitar que los estudiantes no entiendan el código.

Declaración de las variables

Las palabras clave.var+ Nombre de la variable, por ejemplovar name = “小明”

El ciclo

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

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

Subdivisión condicional

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

Es muy sencillo, la traducción es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código)

Valoración

Uno de ellos.=El número es atribuido, por ejemplo.

name = “张三”;

Es fácil confundir la atribución con la comparación.
Por ejemplo, comparando==El número es igual a 2.
Ejemplos“张三”==“李四”Es evidente que Zhang Shui no es Li Jie, así que...“张三”==“李四”¿Por qué es falso?

Aplicaciones relacionadas

Antes de escribir la demostración de la estrategia, analizamos las API y las funciones de exportación de plantillas utilizadas en la estrategia. Hay una documentación detallada de la API y el código fuente de la plantilla en el inventor de cuantificación.

  • $.GetAccount: función de exportación de la plantilla para obtener información sobre las cuentas de las casas de cambio
  • Función de registro: API para la salida de información a los registros, mostrar valores, etc.
  • $.Cross Función: Función de exportación de la plantilla para detectar el cruce de los indicadores de línea media
  • $.Buy: función de exportación de la plantilla para comprar
  • $.Sell: función de exportación de la plantilla para operaciones de venta
  • Función LogProfit: API, para la salida de ganancias, la función puede agregar otra información a partir del segundo parámetro
  • La función Sleep:API, que hace que el programa se detenga por un momento, tiene la unidad de parámetros en milisegundos.

El código de la estrategia también usa las funciones de la biblioteca de Javascript, los métodos de objetos.

  • Math.abs() Función: devuelve el valor absoluto de los argumentos
  • La función toFixed (() de un objeto Number: guarda los dígitos pequeños en cuadros y quintos según los parámetros. Tenga en cuenta que la función devuelve una cadena
  • parseFloat global: devuelve el número de flotación de los argumentos de la cadena.

Para obtener más información acerca de Javascript, visite: Objetos de números JavaScript http://www.w3school.com.cn/jsref/jsref_obj_number.asp

El diagrama del programa, dibujado a mano, no con herramientas, muy amateur.

img

Construyendo nuestra estrategia paso a paso

Todas las entradas de los programas de estrategia son:main()Función, es decir, la estrategia se ejecuta desde la función principal.

img

img

img

img

img

Oferta firme

¡Esto es lo que hace que una estrategia de 30 simples líneas sea posible!
La estrategia de Running! ya está en marcha, compra el operativo.

img

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

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

Enseñanzas en video

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

Información de referencia

Related Recommendations
Comment
All comments (11)

    API中的$.GetAccount函数是不是更新成exchange.GetAccount()了?

    6 years ago

    $.GetAccount 是FMZ 模板的导出函数(模板就是可复用的代码,参看API 文档上模板的描述)。 $.GetAccount是这个模板:https://www.fmz.com/strategy/10989 的导出函数。
    上面的策略只是代码部分,没有策略参数设置,完整的策略可以在策略广场搜索30行均线策略。

    6 years ago

    代码看懂了 但是不知道这个策略究竟实现了什么功能

    10 years ago

    就是2条均线,快线上穿慢线 一般是买入信号,上涨概率较大(程序自动买入操作)。 快线下穿慢线一般是卖出信号,下跌概率较大(程序自动卖出)。通过这样反复操作 在行情上升趋势中可以攫取利润。

    10 years ago

    原来这样啊 非常感谢

    10 years ago

    感谢小小梦,你的文章写得真好。

    10 years ago

    楼主的教程写得太好了,谢谢!

    10 years ago

    谢谢楼主,我要好好学习

    10 years ago

    不客气,以后还要做更多的学习资料,谢谢支持!

    10 years ago

    够详细。早早有就美死了

    10 years ago

    以后继续出品!谢谢支持。

    10 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)