以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 编写2个基于MACD指标 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184327) |
-- 作者:qq代人发帖 -- 发布时间:2021/2/22 9:13:16 -- 编写2个基于MACD指标 请教:麻烦老师根据下面的代码,编写2个基于MACD指标,适合简单图表自动交易策略公式。 DIFF:=EMA(CLOSE,S) - EMA(CLOSE,P) ,COLORGREEN; DEA:=EMA(DIFF,M); MACD:=2*(DIFF-DEA); IF(DIFF>=REF(DIFF,1),DIFF,DRAWNULL),COLORRED; 设计要求: 1、如果有持仓,要求先平后开; 2、数量要求在总量控制的前提下连续分次交易,每次间隔0.5秒钟。 3、交易时间,从9:02到14:58,结束时平仓所有多单或者空单。 一、金叉死叉交易策略: 当快线上穿慢线金叉,如果原空仓则开多,如果有空头持仓,则平空开多; 当快线下穿慢线死叉,如果原空仓则开空,如果有多头持仓,则平多开空; 数量:每次2手,连续交易3次,平仓开仓数量相等。 二、红绿变色交易策略: 当快线颜色从绿转红,如果原空仓则开多,如果有空头持仓,则平空开多; 当快线颜色从红转绿,如果原空仓则开空,如果有多头持仓,则平多开空; 数量:每次2手,连续交易3次,平仓开仓数量相等。 |
-- 作者:FireScript -- 发布时间:2021/2/22 9:23:22 -- 需要明确下: 1.“数量要求在总量控制的前提下连续分次交易,每次间隔0.5秒钟。”这个是怎样的逻辑。将下的单拆分开下单? 2.“快线上穿慢线”快线和慢线分别是指diff 和dea? |
-- 作者:老江 -- 发布时间:2021/2/22 15:19:43 -- 老师好,回复老师,两个都是这样的意思,比如总量6手,每次2手,分次交易,间隔0.5秒钟。金叉或者死叉是指DIFF和DEA交叉,谢谢。 |
-- 作者:FireScript -- 发布时间:2021/2/23 17:22:43 -- “总量6手,每次2手,分次交易,间隔0.5秒钟”。0.5秒的间隔,这个时间太短,无法实现到这么精细。 这个需求目前专业版里面的大单拆分可以做到,但是这个最多只能到1秒钟。 大单拆分功能是可以把下单拆分批次下的。 建议这个需求先搁置下。如果你后面需要用到更多专业版功能,可以再考虑。 其他的部分基本可以实现。我处理好后会发在这里。另外你加下官方群:629417537 新注册用户发帖有时候会延迟显示,你发了新内容 可以在群里说下避免我这边看不到。
|
-- 作者:老江 -- 发布时间:2021/2/23 20:17:50 -- 回复FireScript: 老师好,那就麻烦以1秒钟间隔方式交易 |
-- 作者:FireScript -- 发布时间:2021/2/24 9:23:15 -- 策略1: input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),ss(6,1,100,1);
DIFF :EMA(CLOSE,S) - EMA(CLOSE,P); DEA :EMA(DIFF,M); MACD1 :2*(DIFF-DEA), COLORSTICK; macdjc:=cross(diff,dea),NODRAW;//macd金叉 macdsc:=cross(dea,diff),NODRAW; timecd:time>=130200 and time<185800;//时间周期限制,这个在一分钟较有效。 if macdjc then begin sellshort(holding<0,holding,market); buy(holding=0,ss,market); end if macdsc then begin sell(holding>0,holding,market); buyshort(holding=0,ss,market); end if time>=185900 then //收盘前全平 begin sell(holding>0,holding,market); sellshort(holding<0,holding,market); end [此贴子已经被作者于2021/2/24 9:45:39编辑过]
|
-- 作者:FireScript -- 发布时间:2021/2/24 9:45:21 -- 策略2: 策略2这里要说明下。你原先思路是要按照那个线变化来,但是实际上红绿线变化时候能在图上看出来至少需要连续2个周期满足DIFF>=REF(DIFF,1) 或者DIFF<REF(DIFF,1). 因此实际写成策略时候 在图表上是变化后的第二个K。如果只死板的按照DIFF>=REF(DIFF,1)的条件来,会出现前后都不满足,就中间一个K满足的特殊情况,而这个情况你只看图表上红绿线变化是完全看不到的。 input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6),ss(6,1,100,1); DIFF :EMA(CLOSE,S) - EMA(CLOSE,P);DEA :EMA(DIFF,M); MACD1 :2*(DIFF-DEA), COLORSTICK; cd:=DIFF>=REF(DIFF,1); IF(cd,DIFF,DRAWNULL),COLORRED; x:=count(cd,2)=2; y:=count(not(cd),2)=2; if x and not(ref(x,1)) then begin sellshort(holding<0,holding,market); buy(holding=0,ss,market); end if y and not(ref(y,1)) then begin sell(holding>0,holding,market); buyshort(holding=0,ss,market); end |
-- 作者:FireScript -- 发布时间:2021/2/24 10:15:49 -- 工具-选项 下面这里设置下。但是这个是付费的专业版的功能才行。 |
-- 作者:老江 -- 发布时间:2021/2/24 12:45:35 -- 收到,谢谢老师!我是贵公司标准版本用户,先学习,可能会继续麻烦老师。 |
-- 作者:老江 -- 发布时间:2021/2/24 19:47:43 -- 老师好,对于上面的策略公式,还有几个问题要再次麻烦请教。 一是关于交易时间,从上午9:02到下午14:58, 策略1里面的代码是: timecd:time>=130200 and
time<185800;//时间周期限制,这个在一分钟较有效。 if time>=185900 then //收盘前全平 二是关于交易数量,要求在总量控制的前提下连续分次交易,每次间隔1秒钟或者X秒钟。如总量6手,每次2手,间隔1秒钟,这个在策略1里面,是在哪些代码里体现出来?如果我想改变交易数量和间隔时间,应该怎样做? 三是如何把老师给编写的策略公式安装入软件,并开始自动交易? 拜托老师! |