以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]请老师帮编个简单的均线交易系统  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=154765)

--  作者:zb310716747
--  发布时间:2017/6/5 23:53:48
--  [求助]请老师帮编个简单的均线交易系统

如题:请老师帮忙

买多条件:收盘价向上突破10日均线后,涨幅累计达2%后,收盘价买入

平多:收盘价向下突破10日均线后平仓(有多单的前提下)

卖空:收盘价向下突破10日均线后,跌幅累计达2%后,收盘价开仓卖出

平空:收盘价向上突破10日均线后平仓(有空单的前提下)


--  作者:wenarm
--  发布时间:2017/6/6 8:31:33
--  

ma10:ma(close,10);
if close>ma10 and (c-ma10)/ma10>0.02 then buy();
if cross(ma10,close) and holding>0 then sell();

空头部分可以参考上面的方式修改完成。


--  作者:zb310716747
--  发布时间:2017/6/6 12:43:26
--  
多谢多谢
--  作者:zb310716747
--  发布时间:2017/6/6 12:54:43
--  
if close>ma10 and (c-ma10)/ma10>0.02 then buy();
我的意思不是收盘价向上突破10日均线的同时上涨2%买入,而是突破后以突破时的收盘价为基点,上涨了2%才买入。
--  作者:pyd
--  发布时间:2017/6/6 13:16:09
--  
VARIABLE:n=0,m=0;
ma10:ma(close,10);
if cross(c,ma10) then begin
sellshort(holding<0,1,marketr);
n:=c;
end
if (c-n)/n>=0.02 and holding=0 then buy(1,1,limitr,c);
if cross(ma10,c) then begin
sell(holding>0,1,marketr);
 m:=c;
 end
if (m-c)/m>=0.02 and holding=0 then buyshort(1,1,limitr,c);

--  作者:zb310716747
--  发布时间:2017/6/7 19:18:08
--  
谢谢
--  作者:zb310716747
--  发布时间:2017/6/8 13:12:25
--  

这两天测试了这个程序,发现一个问题,第一次买多的确是按给的条件买了 ,但在平掉再买得时候,没达到条件也能买,如图:

 
图片点击可在新窗口打开查看 
卖空也是这种情况
 

--  作者:zb310716747
--  发布时间:2017/6/8 13:14:22
--  
图好像有问题,我再上个附件
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170608125638.png
图片点击可在新窗口打开查看

--  作者:pyd
--  发布时间:2017/6/8 13:36:41
--  

正在处理请稍等

[此贴子已经被作者于2017/6/8 13:39:36编辑过]

--  作者:pyd
--  发布时间:2017/6/8 13:46:11
--  

VARIABLE:n=1000000,m=0;
//n是金叉时的收盘价,初始值要比行情价大,否则(c-n)/n>=0.02在第一根k成立,造成第一根k就会满足开仓条件。
//m是死叉时的收盘价,初始值要比行情价小,否则(m-c)/m>=0.02在第一根k成立,造成第一根k就会满足开仓条件。
ma10:ma(close,10);
jc:cross(c,ma10);
sc: cross(ma10,c);

if jc then begin
sellshort(holding<0,1,marketr);
n:=c;
end

if (c-n)/n>=0.02 and holding=0 then begin
buy(1,1,limitr,c);
n:=1000000;
end
if sc then begin
sell(holding>0,1,marketr);
 m:=c;
 end
if (m-c)/m>=0.02 and holding=0 then begin
buyshort(1,1,limitr,c);
m:=0;
end

[此贴子已经被作者于2017/6/8 13:50:53编辑过]