以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=173420)

--  作者:yesdgn
--  发布时间:2019/12/6 11:26:22
--  开多开空平多平空信号互相限制问题
公式会出开多、开空、平多、平空的信号,我想开多后只能出现平多信号, 不能出现开空和平空的信号 ,就算开空和平空是符合条件的 也不允许。 不知道要怎么弄?还请大佬们分享下经验。谢谢。  
--  作者:FireScript
--  发布时间:2019/12/6 11:31:02
--  
如果是图表程序化的 ,那就不需要额外处理。因为图表上不能锁仓。如果当前有多头持仓 是绝对无法出现空头开仓操作的。

--  作者:yesdgn
--  发布时间:2019/12/6 11:39:48
--  
不是交易,是公式符合条件出信号而已  ,所以不涉及到金字塔的交易功能。 
--  作者:FireScript
--  发布时间:2019/12/6 13:57:24
--  
你这样说我有点不太明白了。  你意思是图表模型最开始第一次满足的开仓条件是 空头 那后面就只能做空头,如果第一次满足条件的是多头 后面就只能做多?
[此贴子已经被作者于2019/12/6 13:59:41编辑过]

--  作者:yesdgn
--  发布时间:2019/12/6 15:33:03
--  
就是公式信号只是用来显示给人看的 , 并不在金字塔里交易。 所以公式输出有4个信号 :开多信号、开空信号 、平多信号、平空信号。  这4个信号符合条件就会显示出来,但是我希望他按交易的顺序来,   比如我前面没有出来开多的信号,后面就不能显示平多的信号。  但是我并没有在金字塔里持仓交易 ,只是个公式出信号而已。  我不知道怎么让公式出的信号也像交易一样  没有开空 就不会显示平空的信号出来。  就像你没有空的持仓自然就不能平空。  
--  作者:yesdgn
--  发布时间:2019/12/6 15:36:24
--  
就是让公式出的信号  模拟像在交易一样  按规则来出   我在出平空信号时  我要加上判断  判断前面K线最后一次是不是开了空信号, 而且不是开的多信号 。
--  作者:yesdgn
--  发布时间:2019/12/6 15:46:41
--  
VARIABLE:kd[]=0;
VARIABLE:kk[]=0;
VARIABLE:pk[]=0;
VARIABLE:pd[]=0;

BARSLAST(pd);


pd:=c;
 这样子使用会报pd不存在。
 
我是想全局变量保存前面K线的所有开多 开空 平多 平空信号 ,然后本周期判断这些信号离的近还是离的远 来知道最后一次是开多还是开空还是平多还是平空  这样我就能判断我现在能不能出平空信号。

--  作者:FireScript
--  发布时间:2019/12/6 15:59:08
--  
那就不用额外处理的啦。策略加载在图表上的信号本身就是符合这种限制的。

开空之后如果不平空,多方向的信号是绝对不会出现的。反之亦然。

比如下面这个代码的效果:
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:3*K-2*D;

DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;

macdjc:cross(diff,dea);//多头买入条件
macdsc:cross(dea,diff);//多头卖出条件
kdjjc:cross(k,d);//kdj金叉 空头卖出条件
kdjsc:cross(d,k);//空头买入条件

sell(holding>0 and macdsc,holding,market);
buy(holding=0 and macdjc,1,market);
sellshort(holding<0 and kdjjc,holding,market);
buyshort(holding=0 and kdjsc,1,market);

它这个信号是绝对不会串的。

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



--  作者:yesdgn
--  发布时间:2019/12/6 16:20:28
--  
我不是图表交易,只是在5分钟周期的副图上加载了我的公式,这个公式输出4个变量值而已,并不会使用sell  buy这样的交易函数进行模拟交易, 我只是想让4个输出更像交易而已, 不能符合条件就显示出来 要按交易顺序才允许他显示。  我怀疑全局变量是在每个周期计算公式时都会重置 所以我无法在变量赋值之前得到这个变量的值(得到前面K线运行时保存的值,本周期还没有赋值肯定得不到。)  
--  作者:wenarm
--  发布时间:2019/12/6 16:28:56
--  
抱歉,这个没办法。
[此贴子已经被作者于2019/12/6 16:36:26编辑过]