이 전략은 맥 언어 자체의 한계로 인해 JS로 다시 구현되어야 합니다.
JS를 사용하여 맥 언어 전략을 다시 구현한 이후, 많은 문제가 발견되었습니다. 실내 운영에서 동일한 K 라인에서 발견되었습니다. 변동성으로 인해 1-2 번의 매매가 반복됩니다. 손실을 초래합니다.
이런 상황을 방지하기 위해 맥 언어에서 어떻게 설계되었는지, 그리고 그 논리적인 개념은 무엇인가요?
아니면, "JS를 사용해서 같은 K 온라인에서 두 번이나 구매와 판매를 하지 않도록 하는 방법은 무엇인가?"
시간<unk>을 사용해서 해결하려는 경우, 완료된 주문에는 시간<unk>이 없다는 것을 발견하고, JS 내장된 Date.parse ((new Date (()) 를 사용하여 주문을 완료하는 시간, 주문하지 않은 주문이 성공하거나 주문하지 않은 주문이 발생하면, 어떻게 해결합니까? 논리적인 생각은 무엇입니까?
还是有问题, 用下面的代码, 是可以防止同一根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线上也不会开了)
我的问题希望对后来的朋友也有所帮助.
代码如下: if (before_record_time != now_records.Time) //上一根的K线时间不等于这根K线的时间错, 则为不同的K线
{
// 这里写开平仓的业务逻辑, 就可以不在同一根K线上反复开平仓了
}
发现有更好的解决办法, 先声明一个变量, 用于存每次的下单时候的当前最新K线的时间戳 (无论做多做空开仓平仓,只要下单都存这个变量覆盖), 然后判断上一次开平仓的时间戳 不等于 现在这根最新K线的时间戳, 即可完美解决.. 之前的方法有bug, 比如第一根K线开仓了, 第二根K线暴跌, 但是不会平仓, 一定要等到第三根K线才会去平仓. 用最新的对比上一次开平仓的K线时间戳和现在最新K线的时间戳, 可以完美解决问题..
摸索了好一阵, 终于解决了, 代码如下:
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天, 返回的结果数为秒.
- 1


