以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  请老师帮忙写个代码  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=188369)

--  作者:悠莲
--  发布时间:2021/5/19 7:48:55
--  请老师帮忙写个代码
多头:如果比本周期更大的周期A、B、C、D均呈现均线多头排列:MA1>MA2&&MA2>MA3&&MA3>MA4,则在本周期金叉时开多平空。做空反之。

--  作者:FireScript
--  发布时间:2021/5/19 8:52:17
--  
 “比本周期更大的周期” 这个要指定好周期的才行。不指定周期不行的。

--  作者:悠莲
--  发布时间:2021/5/19 8:55:24
--  
那就只引用三个周期,A:15分钟;B:60分钟,C:日线,去除D
--  作者:FireScript
--  发布时间:2021/5/19 9:02:29
--  
 你这里是三个周期的 的相同均线吗?比如15分钟的10周期均线,和60分钟的10周期均线?是这样吧。

--  作者:FireScript
--  发布时间:2021/5/19 9:11:04
--  
 MA1:"MA.MA1#MIN15"(10);//括号里是参数,你可以自行调整的
MA2:"MA.MA1#MIN60"(10);
MA3:"MA.MA1#DAY"(10);


dtpl:ma1>ma2 and ma2>ma3;//多头排列
ktpl:ma1<ma2 and ma2<ma3;//空头排列


maN:ma(c,5);
maM:ma(c,10);
majc:cross(maN,maM);//这里金叉 死叉  的均线参数 你自行调整下,暂且用10,5 周期处理
masc:cross(maM,maN);
dtcd:dtpl and majc;//多头排列+ma金叉
ktcd:ktpl and masc;

if dtcd then
begin
sellshort(1,holding,market);
buy(holding=0,1,market);    
end

if ktcd then
begin
sell(1,holding,market);
buyshort(holding=0,1,market);    
end



--  作者:悠莲
--  发布时间:2021/5/20 14:37:16
--  
不好意思是我表述不当。我的意思是这样的,如果满足在A周期里,MA1>MA2>MA3>MA4,在B周期里,MA1>MA2>MA3>MA4;在C周期里,MA1>MA2>MA3>MA4;,那么在本周期内,出现均线MA1>MA2金叉时做多。
做空反之。

等于是多周期共振策略.

--  作者:FireScript
--  发布时间:2021/5/20 14:58:06
--  
 你改下就行了。
新建一个指标A,作为被调用的指标

INPUT:N1(5,1,100,1),N2(10,1,100,1),N3(15,1,100,1),N4(20,1,100,1);
MA1:MA(C,N1);
MA2:MA(C,N2);
MA3:MA(C,N3);
MA4:MA(C,N4);

dtpl:ma1>ma2 and ma2>ma3;//多头排列
ktpl:ma1<ma2 and ma2<ma3;//空头排列

交易的指标:
maN:ma(c,5);
maM:ma(c,10);
majc:cross(maN,maM);//这里金叉 死叉  的均线参数 你自行调整下,暂且用10,5 周期处理
masc:cross(maM,maN);

dtcd:"A.dtpl#MIN5" AND "A.dtpl#MIN10" AND "A.dtpl#MIN15";//这里可以自行输入参数来调整ma1-ma4周期数。但是调整时候是每个引用都要一起调整的;三个周期默认是5,10,15周期。可以自行修改。
ktcd:"A.ktpl#MIN5" AND "A.ktpl#MIN10" AND "A.ktpl#MIN15";

if dtcd and majc then
begin
sellshort(1,holding,market);
buy(holding=0,1,market);    
end

if ktcd and masc then
begin
sell(1,holding,market);
buyshort(holding=0,1,market);    
end