关于编程的问题 (文华财经随身行Android   5.4.6(239))

投资者咨询:关于编程的问题 (文华财经随身行Android   5.4.6(239))
来源:文华财经  日期:2018-8-16 18:43
 hi你好,

我想请问一下,我现在的开仓方式是非过滤模型,以
CHECKSIG_MIN(BK,'A',0,'C',0);
CHECKSIG_MIN(SP,'A',0,'C',0);
TRADE_AGAIN(10);,
作为结尾,

平仓方式是收盘价模型:

C>TOP,BK(3);
C>REF(TOP-MID,BARSBK)*3+BKPRICE,SP(BKVOL/3);
C<=MID,SP(BKVOL);

这样可以在盈利达到预设止损的三倍的时候平掉3分之1仓位,锁定一部分利润。并且只有当收盘价低于布林线中轨时才会止损。

下图是我做复盘时遇到的几个问题:


图片点击可在新窗口打开查看
图片点击可在新窗口打开查看 文件名:无标题.png

1. 成功开多仓之后,第一个绿色箭头显示,我成功的在盈利达到三倍止损时平掉了3分之1仓位,那它之后那几个箭头是啥意思啊?按道理来说盈利达到三倍的时候就只有那第一次,之后这几个箭头为啥显示它也满足模型要求了?在这个例子里我开仓时用的是三手,所以之后这些箭头并没有成功平掉剩下那两手仓位,但是如果我使用的是9手,它们就会不断继续平仓,能不能帮我看看为啥啊?

2. 这个例子里的最终平仓价格是另一个问题,我本来以为平仓价格会是当天的收盘价(因为只有当收盘价低于布林线中轨时才会成交的啊),但是在这个例子里我的最终平仓价是白色粗横线那个位置,请问这是为啥啊?

3. 这个例子里平仓那天的走势是我最不希望发生的,因为价格曾经跌到过中轨以下800个价位,如果我最终平仓的价格真的是收盘价的话损失实在太惨了,我希望能加一个限定方式进去,当价格低于中轨多少多少的时候帮我平仓,请问如果我想用ATR的话应该怎么编写这个平仓模型呢?例如当价格达到中轨以下1个atr的时候;达到中轨以下2分之1个atr的时候?

多谢多谢!


技术人员回复
日期:2018-8-16 19:31
您编写的模型开、平仓都是出信号立即下单的,并且可以重复开仓

所以存在问题一的现象,之前的开仓未平完就重复开仓了

并且因为您模型编写与执行都是不一致的,所以我们没有办法判断您的思路给您进行修改问题1,23的



建议您重新完整的描述下您的交易思路,我们在根据您的思路进行修改
投资者咨询:关于编程的问题 (文华财经随身行Android   5.4.6(239))
来源:文华财经  日期:2018-8-16 18:43
欧阳老师你好,我的交易思路是当布林线缩口超过预设价格差时,代表价值区间被打破,当价格突破布林线上轨做多,突破下轨做空,开仓后以中轨作为止损。

以下是我目前的编程方式:

 

VOL,VOLUMESTICK;

MV1:SMA(VOL,20,1);

MID:MA(CLOSE,26);

TMP2:=STD(CLOSE,26);

TOP:MID+2*TMP2;

BOTTOM:MID-2*TMP2;

DRAWICON(TOP-BOTTOM<200,H,'ICO6');

DRAWICON(CROSS(TOP-BOTTOM,200),H,'ICO1');

DRAWICON(CROSS(TOP-BOTTOM,200),H,'ICO1');

 

CON:COUNTSIG(BK,4)+COUNTSIG(SK,4);

WZ:REFSIG_PLACE(BK,1);

ZZ:REFSIG_PLACE(SK,1);

(CON=0||WZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),4)&&EXIST(H>TOP,4)&&REF(C>MID,1)&&VOL>MV1&&O>TOP&&L<=TOP,BK(3);

(CON=0||WZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),4)&&EXIST(H>TOP,4)&&REF(C>MID,1)&&VOL>MV1&&O>MID&&O<TOP,BK(3);

 

//我使用的是exist函数,因为当布林线缩口超过设定值后,布林线上下轨不一定会在当天或者第二天形成突破,交易量也不一定在当天或者接下来的第二天达到标准,所以我给了它们4天的空间,

不使用收盘价模型的原因是:也许当布林线缩口超过设定值的当天,价格成功突破布林线上下轨,交易量也足够大,这时可以立即帮我开到仓。

并且这么写的话当行情出现上涨后盘整再上涨,只要我没有被止损就可以在程序满足要求的情况下重复开仓。

还有这里用到了你推荐过给我的WZZZ,因为我复盘时遇到过信号三天都满足要求结果连续三天开仓的情况,用了你推荐的函数后这个问题就解决了。

 

(CON=0||ZZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),DURATION)&&EXIST(L<BOTTOM,DURATION)&&REF(C<MID,1)&&VOL>MV1&&O<BOTTOM&&H>=BOTTOM,SK(3);

(CON=0||ZZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),DURATION)&&EXIST(L<BOTTOM,DURATION)&&REF(C<MID,1)&&VOL>MV1&&O<MID&&O>BOTTOM,SK(3);

 

C>REF(TOP-MID,BARSBK)*4+BKPRICE,SP(BKVOL/3);

C<=MID,SP(BKVOL);

C<-REF(TOP-MID,BARSSK)*4+SKPRICE,BP(SKVOL/3);

C>=MID,BP(SKVOL);

CHECKSIG_MIN(BK,'A',0,'C',0);

CHECKSIG_MIN(SP,'A',0,'C',0);

TRADE_AGAIN(10);

 

//当盈利达到4倍于这个止损数值的时候,自动平掉3分之1仓位。

 

我的几个问题是:

1. 请问你觉得这么编写是最能贴合于我的逻辑的方法吗?可以请你帮我再改进一下吗?

2. 这个平仓方式,以做多为例,我只希望当收盘价低于中轨时再帮我平仓,在复盘的时候我遇到一楼的那个截图问题,


A. 成功开多仓之后,第一个绿色箭头显示,我成功的在盈利达到三倍止损时平掉了3分之1仓位,那它之后那几个箭头是啥意思啊?按道理来说盈利达到三倍的时候就只有那第一次,之后这几个箭头为啥显示它也满足模型要求了?在这个例子里我开仓时用的是三手,所以之后这些箭头并没有成功平掉剩下那两手仓位,但是如果我使用的是9手,它们就会不断继续平仓。

 

B. 这个例子里的最终平仓价格是另一个问题,我本来以为平仓价格会是当天的收盘价(因为只有当收盘价低于布林线中轨时才会成交的啊),但是在这个例子里我的最终平仓价是白色粗横线那个位置,请问这是为啥啊?

 

C. 这个例子里平仓那天的走势是我最不希望发生的,因为价格曾经跌到过中轨以下800个价位,如果我最终平仓的价格真的是收盘价的话损失实在太惨了,我希望能加一个限定方式进去,当价格低于中轨多少多少的时候帮我平仓,请问如果我想用ATR的话应该怎么编写这个平仓模型呢?例如当价格达到中轨以下1atr的时候;达到中轨以下2分之1atr的时候?


拜托老师帮我看一下,多谢多谢!

技术人员回复
日期:2018-8-28 19:17
 您的需求较多,我们需要分析下

预计明日17点前给您回复,请稍后
投资者咨询:关于编程的问题 (文华财经随身行Android   5.4.6(239))
来源:文华财经  日期:2018-8-16 18:43
 好的麻烦你们拉,多谢多谢
投资者咨询:关于编程的问题 (文华财经随身行Android   5.4.6(239))
来源:文华财经  日期:2018-8-16 18:43
欧阳老师你好,请问关于这几个问题有啥进展吗?多谢多谢哈
技术人员回复
日期:2018-8-31 15:04
 您的思路很好,不过出场判断有时候会有失误

可以考虑增加追踪止损,以锁定盈利,或者防止较大的亏损

这个帖子可能对您有所帮助:http://help.wenhua.com.cn/dispbbs.asp?boardid=14&Id=729896


A,后续连续出的信号,表示满足了您设定盈利的条件

但是之前平仓1手,还剩2手,2/3取整,则委托0手了,所以连续出下单手数为0的信号

可以如下修改指令,手数为小数时,向增大的方向取整:

C>REF(TOP-MID,BARSBK)*4+BKPRICE,SP(CEILING(BKVOL/3,1));
C<-REF(TOP-MID,BARSSK)*4+SKPRICE,BP(CEILING(SKVOL/3,1));


B,您设置的平仓指令执行方式为,出信号立即下单

盘中就会以触发时的最新价委托,具体盘中触发价格,就不是软件可以控制的


C,可以在平仓条件中进行限制

C<=MID-ATR/2,SP(BKVOL);
C>=MID+ATR/2,BP(SKVOL);