Type/to search
0
Follow
4
Followers
Ayuda: Cómo evitar la colocación continua de órdenes de compra y venta en la misma línea K
Help
Created 2021-09-20 09:10:57  
 8
 1256

Debido a las limitaciones del propio lenguaje de Mac, las estrategias han de ser reimplementadas en JS.

Desde la reimplementación de la estrategia en lenguaje Mac con JS, se han encontrado muchos problemas, en el funcionamiento en vivo, se encontró que en la misma línea K, debido a la volatilidad, se venden una o dos veces. causando pérdidas.

¿Cómo fue diseñado el lenguaje Mac para evitar esto, y cuál es la lógica general?

O: ¿Cómo puedo usar JS para evitar que la misma persona compre y venda en línea dos veces?
¿Cómo se resuelve el problema de que el pedido no se ha completado o que el pedido no se ha completado? ¿Cómo funciona la lógica?

Related Recommendations
Comment
All comments (8)

    还是有问题, 用下面的代码, 是可以防止同一根K线上不会因为一点波动 在同一根K线上不停的买卖造成亏损. 但是又有 新问题, 就是同一根K线平多后,想立马反手做空, 它被限制了, 必须等到下一根K线才会开空仓. 或者平空后,想在同一根K线上反手做多, 也被限制了, 必须等到下一根K线开始才能开仓, 往往错过了最佳买入点.

    代码如下: if (before_record_time != now_records.Time) //上一根的K线时间不等于这根K线的时间错, 则为不同的K线
    {
    // 这里写开平仓的业务逻辑, 就可以不在同一根K线上反复开平仓了

    }

    我的解决办法如下: 之前是一个变量存储上一根的K线时间戳. 现在改成2个变量存储.
    一个做多方向的时间戳 duo_before_record_time
    一个做空方向的时间戳 kong_before_record_time
    做多的时候用这个限制一下, 同一根K线, 平仓后不开相同方向的仓
    代码如下: if (duo_before_record_time != now_records.Time) //上一根的K线时间不等于这根K线的时间错, 则为不同的K线
    {
    // 这里写开平仓的业务逻辑, 就可以不在同一根K线上反复开平仓了

    }

    做空的时候, 也限制一下, 在同一根K线上平仓后不开相同反向的仓
    if (kong_before_record_time != now_records.Time) //上一根的K线时间不等于这根K线的时间错, 则为不同的K线
    {
    // 这里写开平仓的业务逻辑, 就可以不在同一根K线上反复开平仓了

    }

    这样同一根K线在平仓后, 在符合开仓条件的情况,可以立马开相反方向的仓位. 但是不会开相同方向的仓位. (即使符合开仓条件, 在同一根K线上也不会开了)
    我的问题希望对后来的朋友也有所帮助.

    5 years ago

    工单回复你了

    5 years ago

    K线横轴是时间,应该用时间解决吧。

    5 years ago

    代码如下: if (before_record_time != now_records.Time) //上一根的K线时间不等于这根K线的时间错, 则为不同的K线
    {
    // 这里写开平仓的业务逻辑, 就可以不在同一根K线上反复开平仓了

    }

    5 years ago

    发现有更好的解决办法, 先声明一个变量, 用于存每次的下单时候的当前最新K线的时间戳 (无论做多做空开仓平仓,只要下单都存这个变量覆盖), 然后判断上一次开平仓的时间戳 不等于 现在这根最新K线的时间戳, 即可完美解决.. 之前的方法有bug, 比如第一根K线开仓了, 第二根K线暴跌, 但是不会平仓, 一定要等到第三根K线才会去平仓. 用最新的对比上一次开平仓的K线时间戳和现在最新K线的时间戳, 可以完美解决问题..

    5 years ago

    顺便说一下, 用 exchange.GetOrders().length>0 确定好了没有未成交的订单, 再存下单时间.

    5 years ago

    摸索了好一阵, 终于解决了, 代码如下:

    if ( Math.abs(before_order_time - now_records.Time)/1000 > now_period )
    //上一次下单的时间戳减去现在K线的时间戳, 除以1000是为了获得秒数, 取两者差的绝对值, 如果大于周期的秒数, 就不在同一根K线上.
    //需要自己设置变量before_order_time, 每次下单存一下下单的时间戳. before_order_time = Date.parse(new Date()); //把现在的时间戳记录一下
    //周期数的秒数,是通过 var now_period = _C(exchange.GetPeriod); // 获取当前的周期, 例如5分钟, 15分钟, 1天, 返回的结果数为秒.

    5 years ago

    应该可以通过K线数据里面的时间戳来进行拦截。判断是相同的时间戳不下单即可。

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