以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  套利问题求教  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184219)

--  作者:zengxing
--  发布时间:2021/2/7 11:22:06
--  套利问题求教
套的例子看过了,求教如何一起计算两个合约的总盈利情况,想根据2个合约的情况做止盈。

还有,就是如何做一个全局变量,记录连续止损的次数,止损反手的手数会根据次数改变,例如每次加一手。这个要怎么写?

--  作者:FireScript
--  发布时间:2021/2/7 13:46:03
--  
 止盈止损可以单独计算的。后台里面 持仓数量,持仓均价都可以取到的。分品种获取了之后直接算盈亏就行了。需要用到下面几个函数:
TBUYHOLDINGEX()
TSELLHOLDINGEX()
TAVGENTERPRICEEX2()
比如:
dyk1:dynainfo2(7,套利品种1)-TAVGENTERPRICEEX2(\'\',套利品种1,0);//多盈亏
kyk1:TAVGENTERPRICEEX2(\'\',套利品种2,1)-dynainfo2(7,套利品种2);//空盈亏

你自行把品种1的空,品种2的多再写下就行了.



--  作者:zengxing
--  发布时间:2021/2/7 13:49:47
--  
还有,就是如何做一个全局变量,记录连续止损的次数,止损反手的手数会根据次数改变,例如每次加一手。这个要怎么写?


--  作者:FireScript
--  发布时间:2021/2/7 13:55:23
--  
可以这样子。

GLOBALVARIABLE:ct:=1;//默认从1开始
if  止盈条件 then
begin
//平仓语句
ct:=1;//连续止损中断的地方,务必重置全局变量CT。这里是止盈的地方重置了,你如果还有其他地方要终止连续止损的统计,同样也要重置这个全局变量
end


if 止损条件  then  
begin
//平仓语句
ct:=ct+1;//止损的地方累计这个全局变量的值
//在反手的语句里,可以直接用ct作为反手下单的手数
TBUYSHORT(1,ct,MKT ,0,0,账户,套利品种1);
TBUY(1,ct,MKT ,0,0,账户,套利品种2);
end




--  作者:zengxing
--  发布时间:2021/2/7 15:07:50
--  
这个那没法回溯是吧???感觉一般的程序不太一样,那怎么记录反手的次数,因为每次开仓的手数和止损不一样,。
--  作者:FireScript
--  发布时间:2021/2/7 15:21:12
--  
是的。没法回溯的。你这里没有必要回溯之前的值的吧?

记录次数这种,都是采用上面的方式的。定义全局变量,然后在反手的代码里面,累加 或者在需要重置的地方重置。都是一样的思路的。你为什么还要记录反手的次数呢。


其实套利最好还是用价差的方式来做处理。没有别的,就是让整个逻辑上会更简单点,代码也少点。