量化投资_EasyLanguage/PowerLanguage教学课程__【第二篇专题】__【第一章限价单发单价格】

 第一章:限价单发单价格

  1、在进行limit,也就是限价单下单时,需要指定下单的价格。如果有一下代码:

var:ma(0);

ma = Average(close,5);

if marketposition <> 1 and close > ma then 
    buy 1 shares next bar at open limit;
    

if marketposition = 1 and close < ma then
    sell 1 shares next bar at open limit;

  此时,指定的下单价格为open limit,也就是按照open价格的limit(限价单)进行发单。

  2、如果这样写的话会存在一个问题。

   我们发现下单的价格并不是下一个Next bar的open价格,并制定open limit价格进行发单。这是因为,如果按照上述代码写的话,open limit中的open价格并不是Next bar(下一个bar)的open价格,而是当前if.....判断时的那根K线的价格。如果下一个的open价格与当前的open价格相等,此时也会按照open价格下单,如果价格不相等,会按照下一个的open价格进行发单(因为价格不存在,所以只能取下一个bar的open价格)。但是这样会造成逻辑的错误

  3、正确写法如下:

var:ma(0);

ma = Average(close,5);

if marketposition <> 1 and close > ma then 
    buy 1 shares next bar at open of next bar limit;
    

if marketposition = 1 and close < ma then
    sell 1 shares next bar at open of next bar limit;

  图示:此时价格就能对应起来了。

 

   因此正确的逻辑是(未开启Bar内条件):

  第一:在当前K线的close价格完成计算时,也即是最后一个完成tick来到时,公式会进行一次运算,会进行逻辑判断,并且对于发单指令也会进行识别。

  第二:判断逻辑满足后,指定buy的条件是在Next bar进行发单操作,而不是this bar,并且告诉在Next Bar 指定Next bar 的open价格作为limit价格。(站在当前最后一时刻给下一时刻的新K线发送指令和价格

  第三:新的一个K线来到时,也就是第一个开盘tick来到时,会根据第二步的指定做相关的动作,在此时指令为买入,并且是当根的open价格。(站在新的一根K线,接收上一时刻K线发送的指令和价格,而作相应的动作

=================================================

之前的文章感谢大家的转载,希望转载时请注明出处,本人转自其它网站的图表一并感谢,谢谢~!

https://www.cnblogs.com/noah0532/

原文地址:https://www.cnblogs.com/noah0532/p/13706245.html