以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=165687)

--  作者:陈志海11
--  发布时间:2018/9/26 13:28:04
--  加仓代码实现
INPUT:N(30,5,250,10);
MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
SUMON:0;
SUMBUY:0;
IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN 
   BEGIN
   BUY(1,1,MARKET);
   DRAWTEXT(1 ,LOW ,"开多" );
   SUMON=1;
END
IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=3 AND HOLDING>0 THEN 
   BEGIN
   BUY(1,1,MARKET);
   SUMBUY=SUMBUY+1;
END
IF CROSS(MA30,CLOSE) THEN BEGIN
   SELL(1,0,MARKET);
   DRAWTEXT(1 ,LOW ,"平多" );
   SUMON=0;
   SUMBUY=0;
 END

图片点击可在新窗口打开查看此主题相关图片如下:fxejw1u0y`{a~801)qfv.png
图片点击可在新窗口打开查看
 这段代码没有实现加仓的效果啊?出在哪里?

--  作者:陈志海11
--  发布时间:2018/9/26 13:39:05
--  
INPUT:N(30,5,250,10);
MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
VARIABLE:SUMON=0,SUMBUY=0;
IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN 
   BEGIN
   BUY(1,1,MARKET);
   DRAWTEXT(1 ,LOW ,"开多" );
   SUMON=1;
END
IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=3 AND HOLDING>0 THEN 
   BEGIN
   BUY(1,1,MARKET);
   SUMBUY=SUMBUY+1;
END
IF CROSS(MA30,CLOSE) AND HOLDING>0 THEN BEGIN
   SELL(1,0,MARKET);
   DRAWTEXT(1 ,LOW ,"平多" );
   SUMON=0;
   SUMBUY=0;
END


--  作者:FireScript
--  发布时间:2018/9/26 13:40:06
--  
1.赋值 用“:=” 单用 “=”是无效的。2.sumon和SUMBUY用全局变量方式定义。
INPUT:N(30,5,250,10);
MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
VARIABLE:SUMON:=0,SUMBUY:=0;


IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN
   BEGIN
   BUY(1,1,MARKET);
   DRAWTEXT(1 ,LOW ,"开多" );
   SUMON:=1;
END

IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=3 AND HOLDING>0 THEN
   BEGIN
   BUY(1,1,MARKET);
   SUMBUY:=SUMBUY+1;
END


IF CROSS(MA30,CLOSE) and holding>0 THEN BEGIN
   SELL(1,0,MARKET);
   DRAWTEXT(1 ,LOW ,"平多" );
   SUMON:=0;
   SUMBUY:=0;
   end

--  作者:wenarm
--  发布时间:2018/9/26 13:45:16
--  

INPUT:N(30,5,250,10);
VARIABLE:SUMON=0;
VARIABLE:SUMBUY=0;

MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN
   BEGIN
   BUY(1,1,MARKET);
   SUMON:=1;
END

IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=3 AND HOLDING>0 THEN
   BEGIN
   BUY(1,1,MARKET);
   SUMBUY:=SUMBUY+1;
END
IF CROSS(MA30,CLOSE) THEN BEGIN
   SELL(1,0,MARKET);

   SUMON:=0;
   SUMBUY:=0;
 END


--  作者:陈志海11
--  发布时间:2018/9/26 15:30:56
--  
INPUT:N(95,5,250,10);
MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
VARIABLE:SUMON:=0,SUMBUY:=0;
IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN 
   BEGIN
   BUY(1,4,MARKET);
   DRAWTEXT(1 ,LOW ,"开多" );
   SUMON:=1;
END
IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=10 AND HOLDING>0 THEN 
   BEGIN
   BUY(1,4,MARKET);
   SUMBUY:=SUMBUY+1;
END
IF CROSS(MA30,CLOSE) AND HOLDING>0 THEN BEGIN
   SELL(1,0,MARKET);
   DRAWTEXT(1 ,LOW ,"平多" );
   SUMON:=0;
   SUMBUY:=0;
END
IF CROSS(MA30,CLOSE) AND HOLDING=0 THEN 
   BEGIN
   BUYSHORT(1,4,MARKET);
   DRAWTEXT(1 ,LOW ,"开空" ); 
   SUMON:=1;
END
IF ENTERPRICE-CLOSE>=0.5*ATR AND HOLDING<0 AND SUMON=1 AND SUMBUY<=10 THEN 
   BEGIN
   BUYSHORT(1,4,MARKET);
   DRAWTEXT(1 ,LOW ,"开空" );
   SUMBUY:=SUMBUY+1;
 END 
 IF CROSS(CLOSE,MA30) AND HOLDING<0 THEN 
    BEGIN
    SELLSHORT(1,0,MARKET);
    SUMON:=0;
    SUMBUY:=0;
END
这段代码加载在图上变成只开空,不开多了,只对做空作对了最大加仓十次,没有对 开多加仓,求助老师们

--  作者:wenarm
--  发布时间:2018/9/26 16:01:24
--  

图表不支持锁仓,开仓前先平反手仓位。另外,仓位类型开关不能共用。

 

INPUT:N(95,5,250,10);
MA30:MA(CLOSE,N);
TR1:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:MA(TR1,20);
VARIABLE:SUMON:=0,SUMBUY:=0;

 IF CROSS(CLOSE,MA30) AND HOLDING<0 THEN
    BEGIN
    SELLshort(1,0,MARKET);
    SUMON:=0;
    SUMBUY:=0;
END
IF CROSS(MA30,CLOSE) AND HOLDING>0 THEN BEGIN
   SELL(1,0,MARKET);
   SUMON:=0;
   SUMBUY:=0;
END


IF CROSS(CLOSE,MA30) AND HOLDING=0 THEN
   BEGIN
   BUY(1,4,MARKET);

   SUMON:=1;
END
IF CLOSE-ENTERPRICE>=0.5*ATR AND SUMON=1 AND SUMBUY<=10 AND HOLDING>0 THEN
   BEGIN
   BUY(1,4,MARKET);
   SUMBUY:=SUMBUY+1;
END
IF CROSS(MA30,CLOSE) AND HOLDING=0 THEN
   BEGIN
   BUYSHORT(1,4,MARKET);

   SUMON:=-1;
END
IF ENTERPRICE-CLOSE>=0.5*ATR AND HOLDING<0 AND SUMON=-1 AND SUMBUY<=10 THEN
   BEGIN
   BUYSHORT(1,4,MARKET);

   SUMBUY:=SUMBUY+1;
 END