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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]期权交易时,把50ETF引入平开仓条件的问题

   

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


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

主题:[求助]期权交易时,把50ETF引入平开仓条件的问题

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
[求助]期权交易时,把50ETF引入平开仓条件的问题  发帖心情 Post By:2018/8/9 15:45:30    Post IP:101.90.126.144[显示全部帖子]

谢谢各位老师 小白我在尝试编写关于期权交易的策略
目前先通过图标交易在做测试,过程中遇到两个问题

一个是关于平开仓条件的,虽然交易和监控标的是期权,但是我需要引用510050的历史数据,为的是在做历史测试时,期权K线和50ETF的k线数据的时间同步,我用了callstock函数,不过这个数据似乎只能引用最新的50etf数据,不知道如何是好了

另外一个问题是我的止损条件,我买卖的标的是期权,但是想要根据开仓后,50ETF的变化程度来决定是否止损,这就需要把开仓时50ETF的价格记录下来,设为暂时的常数,然后放到止损的条件函数里去。并且每次开仓时,都需要根据新的开仓点位记录新的50ETF点位,不知道什么函数或者什么样的代码可以做到这样的要求
 
最后,关于第二个问题,不知道后台程序化交易中如何做到?
谢谢!

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/10 9:12:32    Post IP:101.90.125.218[显示全部帖子]

callstock是读取的标的最新价吗?或者说最后一根K线么?还是读取的每根k线的历史值?我自己试下来似乎是最新值?
另外期权策略交易的是期权标的 enterprice也是期权的成交价 但是策略需要监控的是50ETF的价格。所以也无法实现。。图片点击可在新窗口打开查看
(顺便说一句,=OPOBYPRIRCE函数在图标交易时,如果界面不是期权,而是例如50ETF等标的,它的赋值就会变成-1;在期权标的界面则会正常运行,这是因为跨行情系统所导致的么?)

最后请问老师能示范一下variable在这个策略里的用法思路么 
难点是:我交易的标的是期权,但是需要监控的对象是50ETF 怎么做才能做到测试历史K线时,读取的50ETF数据也是当时的历史数值。
谢谢图片点击可在新窗口打开查看图片点击可在新窗口打开查看


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/10 10:25:06    Post IP:101.90.125.218[显示全部帖子]

谢谢老师指导!图标交易找到错误在哪里了!
 这是我后台交易尝试写的函数

50c:=CALLSTOCK('qq510050',VTCLOSE,1,0);    //50ETF价格(这样写显示的是最新价么?)
P:rounds(50c1*4,1)/4,linethick0;     //以0.025为区间的50ETF价格四舍五入 取得最接近的平价
if FRACPART(P*10)=0.75 or FRACPART(P*10)=0.25 THEN//取整末尾是25或者75
begin                          //因为行权价都是整数,通过上述整理, 可以求得最接近当前50ETF价格的平价期权
d1:=OPOBYPRIRCE('QQ510050',P+0.125,0,1,1);     //获取比平价期权高的虚值认购期权合约
d2:=OPOBYPRIRCE('QQ510050',P-0.125,1,1,1);     //获取比平价期权低的虚值认沽期权合约
end

else
begin
d1:=OPOBYPRIRCE('QQ510050',P+0.15,0,1,1);     //比平值高150的认购合约
d2:=OPOBYPRIRCE('QQ510050',P-0.15,1,1,1);     //比平值低150的认沽合约
end

if abs(50c-p)>=0.5 and Tholding<>0 then  //当50ETF最新价格距离上一轮成交时的平价超过0.5元时,平仓
begin
Tsellshort(1,100%,lmt,close+0.0005,0,'',d1),pertrader;
Tsellshort(1,100%,lmt,close+0.0005,0,'',d2),pertrader;
end
此处遇到问题,交易判断时,我需要的是上一次满足开仓条件时的P值(平价期权,常数)(但是这个值不是50ETF的历史价格,而是我自己公式求出来的,所以没有历史数据可以提取?),而我公式求得的平价(P值)是变量。所以无法得到正确的平仓条件。
if abs(50c-p)<=0.005 and Tholding=0 then  //当50ETF距离最新平价期权价差小于0.0005时,开仓
BEGIN
Tbuyshort(1,100,lmt,close-0.0005,0,'',d1);
Tbuyshort(1,100,lmt,close-0.0005,0,'',d2);
end



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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/10 15:09:35    Post IP:101.90.125.218[显示全部帖子]

是的 具体来说,应该是上次满足 开仓 条件时的P值

谢谢


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/10 15:37:11    Post IP:101.90.125.218[显示全部帖子]

谢谢老师! 全局变量函数还不是很懂

这么写是不是运行第一遍的时候 把rp赋值为0 然后每出现一跟新K线再度计算的时候,会判断if是否满足

然后如果条件不满足rp的值就一直不变,直到条件满足才执行一次rp=p对么?


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/10 15:58:43    Post IP:101.90.125.218[显示全部帖子]

好的,谢谢啦 顺便学了下全局变量的案例图片点击可在新窗口打开查看


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/16 9:39:53    Post IP:101.90.253.132[显示全部帖子]

老师 GLOBALVARIABLE作为预警条件时,我在模拟运行时并没有平仓,仔细观察下来应该是因为策略停止运行过,然后全局变量赋值被归0了 有什么函数可以把 例如此前运行时记录的最后一个全局变量 在新的运行时提取为最新值继续使用么?

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2018/8/2 14:40:11
  发帖心情 Post By:2018/8/16 14:45:33    Post IP:101.90.253.132[显示全部帖子]

再请教下老师 我看函数解释里有EXTGBDATA(S)和EXTGBDATASET两个函数
是否前者只是引用值 
EXTGBDATASET才是用来给变量修改值的?

 回到顶部