以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=175439) |
-- 作者:kuang0756 -- 发布时间:2020/4/9 18:26:34 -- 请老师帮忙改下模型 MA1:=MA(CLOSE,A); MA2:=MA(CLOSE,B);
手数:=ss;
开多平空条件:=CROSS(MA1,MA2);//开多平空条件 开空平多条件:=CROSS(MA2,MA1);//开空平多条件
平空:SELLSHORT(开多平空条件,手数,MARKET); 平多:SELL(开空平多条件,手数,MARKET); 开多:BUY(开多平空条件,手数,MARKET); 开空:BUYSHORT(开空平多条件,手数,MARKET);
增加: 一、上次平仓亏损时,这次开仓加仓(上次开仓数量*2),上次平仓盈利时,这次开仓不加仓。 二、平仓盈利达到5000元或以上时,重置开仓仓位不初始仓位。 三、平仓盈利达到20000元时或以上时,自动停止模型的运行。 四、盈利达到停止时,可设置达到次数。 |
-- 作者:FireScript -- 发布时间:2020/4/10 9:26:34 -- 1.“上次平仓亏损时,这次开仓加仓(上次开仓数量*2),上次平仓盈利时,这次开仓不加仓。” 上面的逻辑里面 平仓和开仓是否不考虑方向问题。也就是上次是平空,现在是开多。满足盈利条件是否加仓? 2.平仓盈利?是指最近一次平仓盈亏?还是总的盈亏? 3.“平仓盈利达到20000元时或以上时,自动停止模型的运行。” 数据多了,交易起始日期如果很久远,可能现在图表上都不会有信号。因为你在历史的位置上满足了平仓盈利20000点。 4.“盈利达到停止时,可设置达到次数。” 这个什么意思,没太明白。
|
-- 作者:kuang0756 -- 发布时间:2020/4/13 18:12:30 -- 谢谢老师的回复,是这样的: 1、5天线高于10线,并且5天线也高于60天线,并且20天线向上移动时开多 2、5天线低于10线时平多 3、5天线低于10线,并且5天线也低于60天线,并且20天线向下移动时开空 4、5天线高于10线时平空 5、 5天均线高于10均线时,K线颜色统一为红色,反之绿色。 6、 5天均线高于60天均线时,60天均线的颜色为红色,反之绿色。 7、 有持仓时平仓优先,先平仓后开仓 8、 上次平仓亏损时,这次开仓加仓(上次开仓数量*2)不考虑方向,上次平仓盈利时,这次开仓不加仓。 9、 最近一次平仓盈利达到5000元或以上时,重置开仓仓位为初始仓位。 10、最近一次平仓盈利达到20000元时或以上时,自动停止模型的运行,不计算历史平仓。 11、 盈利达到停止时,可设置达到次数,是可以设置1次达到20000元或多次达到20000元就停止,设置为0时就长跑。 |
-- 作者:FireScript -- 发布时间:2020/4/14 10:03:41 -- 1.“并且20天线向上移动时开多” 这个向上移动必须明确定义下。肉眼观察得出来是一回事,程序里面需要一个明确的代码逻辑才行。比如可以定义为连续多少周期都是增长 ,这个你考虑下。 2. 第5,6 2条K线颜色没有函数可以直接改。这个不好做。 3.“有持仓时平仓优先,先平仓后开仓” 这种大概只能处理成平仓条件和加仓同时满足的时候,只平仓不加仓。 |
-- 作者:kuang0756 -- 发布时间:2020/4/14 14:03:03 -- 谢谢老师,那就这样: 1、20天线的上下移动以最新一个K线的收盘后增长了就算向上移动,反之同理。不涨不跌按原方向。 2、5和6不好做就取消 3、先平仓后开仓有资金使用率的问题,但如果冲突,就先开后平也要在亏损状态下做到有加仓动作。
|
-- 作者:gxx978 -- 发布时间:2020/4/14 14:55:52 -- 需要再跟你确认下一下两点: 1、20天线的上下移动以最新一个K线的收盘后增长了就算向上移动,是否是可以这样表示:ma(c,20)>ref(ma(c,20),1)。向下移动就是这样表示:ma(c,20)<ref(ma(c,20),1)。 2、第8条中,若之前的平仓一直亏损,加仓是不设置次数的吗?只要满足开仓条件就无限加仓? |
-- 作者:kuang0756 -- 发布时间:2020/4/14 21:28:05 -- 是的,1、2都是的。 |
-- 作者:FireScript -- 发布时间:2020/4/15 9:55:22 -- VARIABLE:ct:=0;//统计盈利达到条件的次数 INPUT:ss(1,1,100,1),cs(5,0,100,1);//cs是次数限制,ss是初始仓位手数 手数:=ss; MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); MA3:MA(C,20); MA4:MA(C,60); kdcd:=ma1>ma2 and ma1>ma4 and MA3>ref(MA3,1); pdcd:=ma1<ma2; kkcd:=ma1<ma2 and ma1<ma4 and MA3<ref(MA3,1); pkcd:=ma1>ma2; if pkcd and holding<0 then begin 平空:SELLSHORT(pkcd,holding,MARKET); if NUMPROFIT(1)>20000 then ct:=ct+1;//每次平仓时候如果平仓盈利达到20000 全局变量值累加1 end if pdcd and holding>0 then begin 平多:SELL(pdcd,holding,MARKET); if NUMPROFIT(1)>20000 then ct:=ct+1; end 手数:=if(NUMPROFIT(1)<0,手数*2,手数);//根据上次盈亏情况调整手数 手数:=if(NUMPROFIT(1)>=5000,ss,手数);//根据上次盈亏情况来重置开仓手数 开多:BUY(kdcd and holding=0 and (ct<cs or cs=0),手数,MARKET); 开空:BUYSHORT(kkcd and holding=0 and (ct<cs or cs=0),手数,MARKET); [此贴子已经被作者于2020/4/15 9:57:34编辑过]
|