欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 图表程式化 用固定时间间隔模式止损 K线模式开仓怎么做

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2824人关注过本帖树形打印复制链接

主题:图表程式化 用固定时间间隔模式止损 K线模式开仓怎么做

帅哥哟,离线,有人找我吗?
smilingsome
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:33 积分:0 威望:0 精华:0 注册:2016/6/30 13:55:45
图表程式化 用固定时间间隔模式止损 K线模式开仓怎么做  发帖心情 Post By:2016/6/30 15:42:00    Post IP:183.193.183.153[只看该作者]

请问:开仓条件 建立在K线模型上(比如1分钟K线模型),止损条件 建立在1秒钟固定时间查询的程序怎么写?
举例:
I. 开多条件是这样编写的 - 基于一分钟K线图的 前后两根K线的比较;前为阴线 后为阳线 则开多
CONDBUY:= REF(CLOSE,1)< REF(OPEN,1) AND CLOSE > REF(OPEN,1) AND CLOSE-OPEN>=2; // 开多条件[看涨]
BUY(CONDBUY, 10, MARKET);
II. 止损条件是这样写的
PRICE:= (HIGH+LOW)/2; SELL(LOW < PRICE, 10, MARKET); // 止损价格= (HIGH+LOW)/2; 要求当价格跌破止损价时,立即平多

III. 需求:我需要每秒查询一次实时交易价格,如果加过跌破止损价立即平多。
IV. 问题:开多 是一分钟判断一次的;止损是每秒中判断一次的,这样的程序在 图标程式化交易中 怎么写? 如果图标程式化中无法写出,后台程式化怎么写?
可以给个简单的模板或范例吗?



 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/6/30 15:59:45    Post IP:180.169.30.6[只看该作者]

CONDBUY:= REF(CLOSE,1)< REF(OPEN,1) AND CLOSE > REF(OPEN,1) AND CLOSE-OPEN>=2; // 开多条件[看涨]
BUY(ref(CONDBUY,1), 10, MARKET);
PRICE:= (HIGH+LOW)/2;
SELL(c< PRICE, 10, MARKET);
就这样写,1秒固定轮询模式


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
smilingsome
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:33 积分:0 威望:0 精华:0 注册:2016/6/30 13:55:45
[求助]如果用IF语句该怎么写  发帖心情 Post By:2016/7/5 9:40:49    Post IP:183.193.112.232[只看该作者]

使用IF语句的原因是要设置一些条件:比如HAVEBUY标志以开多(以开多的情况下才能平多)

原句:

  IF CONDBUY AND HOLDING = 0 THEN
   BEGIN
    PRICE:=TEMP; // 设置多仓止损价格
    BUY(1, 10, MARKET); // 全部买入
    HAVEBUY:=1; // 以开多,为平多
   END

 

为保证按K线周期开多,改写为:

  IF REF(CONDBUY,1) AND HOLDING = 0 THEN
   BEGIN
    PRICE:=TEMP; // 设置多仓止损价格
    BUY(1, 10, MARKET); // 全部买入
    HAVEBUY:=1; // 以开多,为平多
   END

可以吗?


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/5 9:55:29    Post IP:180.173.43.114[只看该作者]

上面的办法是用固定时间的办法来实现走完k'线,所以信号上是有偏移的,简单的可行。如果代码里面有赋值之类的就不行了,偏移了的信号,赋的值也和原来的不一样


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
smilingsome
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:33 积分:0 威望:0 精华:0 注册:2016/6/30 13:55:45
[求助]解决办法  发帖心情 Post By:2016/7/5 10:21:54    Post IP:183.193.112.232[只看该作者]

---------------------------------------------------------------------------------------------------------------------------------- 上面的办法是用固定时间的办法来实现走完k'线,所以信号上是有偏移的,简单的可行。如果代码里面有赋值之类的就不行了,偏移了的信号,赋的值也和原来的不一样 ---------------------------------------------------------------------------------------------------------------------------------- 看了一篇IF语句中不能使用REF函数的原因,好像理解的老师您的意思。 那 要实现这样的 复杂功能 接下来 应该怎么做呢?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/5 10:30:44    Post IP:180.169.30.6[只看该作者]

IF CONDBUY AND HOLDING = 0 THEN
   BEGIN
    PRICE:=TEMP; // 设置多仓止损价格
        HAVEBUY:=1; // 以开多,为平多
   END

 

IF REF(CONDBUY,1) AND HOLDING = 0 THEN
   BEGIN
        BUY(1, 10, MARKET); // 全部买入
       END

 

差不多这样改,让赋值先执行,



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
smilingsome
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:33 积分:0 威望:0 精华:0 注册:2016/6/30 13:55:45
[求助]  发帖心情 Post By:2016/7/5 11:03:53    Post IP:183.193.112.232[只看该作者]

{
模型说明:
1. 开盘后5分钟不做交易
2. 5分钟后,分为30秒,1分钟,2分钟,3分钟 4中参数进行测试
3. 若前一根实体为 >= 2价位的 阴线,后一根K线的 收盘价>前开盘价,而且 最高价 - 收盘价 <= 1个价位

符合以上条件,而在最后一秒内开仓做多
止损点:前一根K线的均值(最高+最低/2)交易触到此价位有成交的,即止损平仓(低了3个价位确保成交)
止盈点:在前一根出现实体>=2个价位的阴险末止盈

4. 若前一根实体为>=2个价位的阴线,后一个K线的收盘价<前开盘价,而且最低价-收盘价<=1个价位
,在最后一秒内开仓做空
5. 收盘前10分钟全部清仓,不再开仓交易

开多条件:前为阴线且实体>=2 AND 后为阳线 AND (阳线收盘价 - 阴线开盘价) > 0
止盈条件:开多之后遇到第一根阴线(跌幅>=2价位),且收盘价没有低过止损点,按收盘价成交
止损条件:开多之后遇到第一根阴线(跌幅>=2价位),且收盘价低过止损点,按不得低于止损点价格卖出(?)
开空条件: 前为阳线且实体>=2 AND 后为阴线 AND (阳线开盘价 - 阴线收盘价) > 0
止盈条件:开空之后遇到第一根阳线(涨幅>=2价位),且收盘价没有高过止损点,按收盘价成交
止损条件:开多之后遇到第一根阳线(涨幅>=2价位),且收盘价高过止损点,按不得高于止损点价格卖出(?)

5.一次买入卖出多少:
全部买入,全部卖出

6. 当日开仓后, 一定要当日平仓吗?
7. 止损时机
目标: 开仓后,价格(任意一次交易的价格)第一次触及止损价,按市价(止损价以及止损价15个单位区间,防止极端情况)卖出。
否则,即出现异常情况(比如:剧烈波动,暴跌或者暴涨等)时,暂停机器平仓,转为人工操作
8. 如何人工操作

注意事项:
1. 选择哪种交易图:交易量丰富,数据量饱满
2. 时间跨度问题
中午吃饭时间
3. 适用范围: 秒线,分钟线等,相邻K线连续的情况;不适用于日线等,相邻K线不连续的情况
4. 缺点:无法应对震荡的情形(价格反复上下波动)
}
// 0. 设置全局变量
VARIABLE: HAVEBUY=0; // 标记以开多,为平多
VARIABLE: HAVEBUYSHORT=0; // 标记以开空,未平空
VARIABLE: PRICE = 0; // 止损价格
CONDBUY:= REF(CLOSE,1)< REF(OPEN,1) AND CLOSE > REF(OPEN,1) AND CLOSE-OPEN>=2; // 开多条件[看涨] - OK
CONDBUYSHORT:= REF(CLOSE,1)> REF(OPEN,1) AND CLOSE < REF(OPEN,1) AND OPEN-CLOSE>=2; // 开空条件[看跌] - OK
CONDSELL:=HAVEBUY AND CLOSE < OPEN AND (OPEN - CLOSE) >=2 AND CLOSE >= PRICE; // 平多条件[止盈]
CONDSELLSHORT:=HAVEBUYSHORT AND CLOSE > OPEN AND (CLOSE - OPEN) >=2 AND CLOSE <= PRICE; // 平空条件[止盈]
止损价格: PRICE, COLORGREEN, LINETHICK1;
TEMP:=(REF(CLOSE,1)+REF(OPEN,1))/2; // TEMP = (CLOSE+OPEN/2) - 止损价位
IF TIME > 090500 AND TIME < 145000 THEN // 限制开盘30分钟后收盘前10分钟进行交易
BEGIN
// 止损条件 - 最高优先级
IF  HAVEBUY AND L < PRICE AND (PRICE - L) < 10 THEN // 开多后,监测何时止损
BEGIN
SELL(1, 100%, MARKET); // 全部卖出
MSGOUT(1,'以SELL止损');
HAVEBUY := 0;
END

IF HAVEBUYSHORT AND H > PRICE AND (H - PRICE) < 10 THEN // 开空后,监测何时止损
  BEGIN
  SELLSHORT(1, 100%, MARKET); // 全部卖出
  MSGOUT(1,'以SELLOUT止损');
  HAVEBUYSHORT := 0;
  END
  // 1. 平多条件(止盈)
  IF CONDSELL AND HOLDING > 0 THEN
  BEGIN
  SELL(1, 100%, MARKET); // 全部卖出
  MSGOUT(1,'以平多');
HAVEBUY := 0;
  END
 
  // 2. 平空条件(止盈)
  IF CONDSELLSHORT AND HOLDING < 0 THEN
  BEGIN
  SELLSHORT(1, 100%, MARKET); // 全部卖出
  MSGOUT(1,'以平空');
  HAVEBUYSHORT := 0;
  END
 
  // 3. 开多条件
  IF CONDBUY AND HOLDING = 0 THEN 
  BEGIN
  PRICE:=TEMP; // 设置多仓止损价格
  BUY(1, 100%, MARKET); // 全部买入
  MSGOUT(1,'以开多');
  HAVEBUY:=1; // 以开多,为平多
  END
// 4. 开空条件
  IF CONDBUYSHORT AND HOLDING = 0 THEN
  BEGIN  
  PRICE:=TEMP; // 设置空仓止损价格
  BUYSHORT(1, 100%, MARKET); // 全部卖出
  MSGOUT(1,'以开空');
  HAVEBUYSHORT:=1; // 以开空,未平空
  END
MSGOUT(1,'运行测试');
END
IF TIME > 145000 AND TIME < 150000 THEN
BEGIN
IF HAVEBUY THEN SELL(1, 100%, MARKET); 
IF HAVEBUYSHORT THEN SELLSHORT(1, 100%, MARKET);
END

// 输出资产
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值
}


老师,以上是我的全部代码,图表交易模型;问题就是 止损我不希望按照K线周期来,想按照固定时间轮询来,应该怎么做?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/5 11:05:15    Post IP:180.173.43.114[只看该作者]

上面已经讲了,不要重复老问题


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
smilingsome
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:33 积分:0 威望:0 精华:0 注册:2016/6/30 13:55:45
  发帖心情 Post By:2016/7/5 15:25:36    Post IP:183.193.112.232[只看该作者]

补充一个问题:
IF REF(CONDBUY,1) AND HOLDING = 0 THEN
BEGIN
BUY(1, 10, MARKET); // 全部买入
END

条件 REF(CONDBUY, 1) 改为 REF(CONDBUY,0) 可以吗?或者说为什么要是REF(CONDBUY, 1) ?


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/7/5 15:27:42    Post IP:180.169.30.6[只看该作者]

这样的作用是引用上一个周期的条件,当新的k线出现时,上一根k线的已经形成和定型的条件就会被引用到。

这样在就相当于在固定轮询的模式下,实现了走完k线下单,ref后面参数写0就表示用当前周期的条件,并没有用。



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部