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


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

   

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


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

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

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/9 17:12:32    Post IP:180.169.30.6[显示全部帖子]

 callstock  最后一个参数是一个偏移,比如偏移量-1 表示调用上一个指定周期的值。这个周期对应的是callstock里面设置的那个周期。这样就可以调用历史的值了。

如果是图表交易,上次开仓价使用:ENTERPRICE  如果需要更进一步精细的记录,可以考虑使用全局变量来处理 VARIABLE


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/10 9:32:02    Post IP:180.169.30.6[显示全部帖子]

 1.callstock  并不是只能引用最新的数据。 金字塔引用数据是K线对齐的,如果你在日线A品种上引用日线B品种数据,假设没有偏移量,那么A上引用的就是和A k线时间对应的B品种的数据。 引用的数据的情况也是基于你当前K的位置的,这点要明确。
我想知道你代码是怎么写的,你说引用历史数据,具体操作思路是?比如,引用前N个K位置的历史数据?

2.  2楼原先回复有偏差。  你不需要记住某个价格,因为图表上的K线其实就是保存好的历史数据了,这时候思路不是说我保存住某个历史值,因为系统本身就保存了基本数据,而是要考虑如何去调用,引用。 你最好描述下 你引用50ETF的数据具体操作,比如:引用哪个数据 开高低收 成交量? 引用符合什么条件的数据(多少周期内最大,最小?)?





命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/10 15:01:04    Post IP:180.169.30.6[显示全部帖子]

你其实是要求上次满足平仓条件按照下列方式计算出来的P值是吗

50c:=CALLSTOCK('qq510050',VTCLOSE,1,0);    //50ETF价格(这样写显示的是最新价么?)   //这里在最新K上的确是获取最新值
P:rounds(50c1*4,1)/4,linethick0;     //以0.025为区间的50ETF价格四舍五入 取得最接近的平价


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/10 15:24:31    Post IP:180.169.30.6[显示全部帖子]

 GLOBALVARIABLE:rp:=0;//定义一个全局变量

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

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);
rp:=p;      //开仓时赋值或者更新这个值
end

然后就是你在需要的地方调用rp就可以了  这个rp代表上次开仓条件触发时候记录的P值。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/10 15:52:28    Post IP:180.169.30.6[显示全部帖子]

因为你调用的不是开仓触发时候的P吗?所以我仅仅在你开仓触发时候才去赋值RP这个值。 全局变量是你不重新 赋值就会一直保留上次赋值时候的值。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/16 9:48:46    Post IP:180.169.30.6[显示全部帖子]

 这个全局变量会在你停止程序化的时候重置的哦。




图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

这个全局变量就可以。不过这个变量是全金字塔共享的,也就是说你在别的地方如果也调用了并赋值了,可能会导致一些问题出现。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/8/16 14:51:38    Post IP:180.169.30.6[显示全部帖子]

 是的,一个读取,一个赋值。


命数如织,当如磐石。
 回到顶部