INPUT:p(1,1,20.1),s(60,1,60,1),Q(120,20,250,10);
A : MA(CLOSE,P);
B : MA(CLOSE,S);
D : MA(CLOSE,Q);
//建立多头
long :=A>B AND A>D;
if long then
BEGIN
SELLSHORT(HOLDING<0,HOLDING, thisclose );//收盘价平掉空头
buy(long,1,thisclose);//建立多头
end
LONGX:=A<B OR A<D;
IF LONGX THEN
BEGIN
SELL (1,0,THISCLOSE);
END
//建立空头
short:=A<B AND A<D;
if short then
BEGin
SELL( HOLDING>0,HOLDING ,thisclose );//平掉多头
buyshort(short,1,thisclose); //建立空头
end
SHORTX: A>B OR A>D;
IF SHORTX THEN
BEGIN
SELLSHORT(1,0,THISCLOSE);
END
持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;
以上是公式 老师帮忙看看
如何定义好开仓数量,以后一直保持这个开仓数量而不是一直加仓
另外就是使得策略一直循环 学习
总体思路很简单 就是收盘价大于60日线和120日线 就开多
收盘价小鱼60日线和120日线就开空
如果收盘价低于60日线或120日线的某一条就平多
收盘价高于60或者120日线的某一条就平空
不加仓
我看了你的代码。这段代码里面并无加仓操作,且开仓数量是固定的定值的。所以我对你这个需求有点疑惑。
if short and holding=0 then这样看看呢,我对图表交易不熟悉,说的不一定对。如果这样还是存在上面的问题,那就是金字塔的函数存在的一个通病了,函数值不存在的时候,比如
short数据不存在,金字塔的函数缺少边界检查,它也是存在值的,所以你if short then也是成立的
你是想达到一开一平的操作吧,直接在自己的开仓条件中增加holding=0作为限制
long :=A>B AND A>D and holding=0;
short:=A<B AND A<D and holding=0;