以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=182628) |
-- 作者:fxttxs186 -- 发布时间:2020/10/21 13:01:07 -- [求助]请老师帮编写个公式,限制开仓 价格上穿10日均线,且收阳,假设这根K线为A,当第二根K线空破这根K线的最高点时开多,并以这根K线最低点为止损,如果价格跌破A的低点则止损。当开仓后价格最高到达盈利30个点,则平仓,只要到达就平,实时 。另外加一条:夜晚交易时段最多只允许开仓2次,白天交易时段最多只允许开仓3次。 请问要怎么写,谢谢
|
-- 作者:FireScript -- 发布时间:2020/10/21 13:49:41 -- VARIABLE:ct1:=0,ct2:=0;//2个全局变量,记录开仓次数 if TODAYBAR=1 then //第一个K重置全局变量的值为0 begin ct1:=0; ct2:=0; end ma10:ma(c,10); majc:cross(c,ma10); jch:VALUEWHEN(majc,h);//取到金叉时候的最高价 jcl:VALUEWHEN(majc,l); cd:=(time<130000 and ct1<2) or (time>=130000 and ct2<3);//白盘,夜盘交易次数限制 if cross(c,jch) and holding=0 and cd then begin buy(1,1,market); if time<130000 then ct1:=ct1+1;//开仓一次 全局变量递增1 if time>=130000 then ct2:=ct2+1; end if cross(jcl,c) and holding>0 then //下穿平仓 begin sell(1,holding,market); end if c-AVGENTERPRICE>=30*MINDIFF and holding>0 then sell(1,holding,market);//止盈平仓 仅供参考,具体使用时候请参考范例修改下即可。 |
-- 作者:fxttxs186 -- 发布时间:2020/10/21 15:15:37 -- 感觉老师的回答! 有三个问题: 1、if c-AVGENTERPRICE>=30*MINDIFF and holding>0 then sell(1,holding,market);//止盈平仓 这句止赢平仓,老师用的C,我要求的实时,只要价格到达30个点盈利就平仓,C是不是要等这根K线收盘符合条件才会平仓? 假如此处用C是代表实时价格,也是实时平仓,那举个例子,假如我用5分钟图表交易,如果要求当根K线的收盘价盈利30个点才平仓又如何写呢? 如何区分实时价格和K线收盘的价格?有什么专门的函数吗? 比如你写的下穿10日均线平仓,无论你用几分钟图表交易,有可能当根K线的L下穿了10线,但当这根K线收盘时又收在10线之上,实时下穿与K线收盘价下穿分别如何表示呢? 2、关于限制开仓,如果不用全局变量可以实现吗? 3、我要求夜盘限制开仓2次,而白天盘3次,通常期货交易的夜盘时间为21:00~23:00,白天为09:00~15:00 而老师用的time为130000,请问这是什么时间?中午1点?
|
-- 作者:FireScript -- 发布时间:2020/10/21 15:21:37 -- 1. c在最新K上就是最新价。最新K上这个C是时刻刷新的。 出信号之后下单时机是和你选择的交易模式有关:走完K或者固定轮询模式 有关的。 并不是说这里用了C 就非要走完K才下单。实际交易时候 你这里是需要选择固定轮询模式来实现实时下单的需求的。 2.这个限制开仓,不用全局变量不好统计次数的啊。 3.金字塔的时区默认是+4小时的。 所以130000 是早上9点的意思。
|