Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共13 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:变量的问题

1楼
aback 发表于:2012/6/17 15:52:43

变量一直是我头疼的问题,写了个移动止损的例子,请高手看看错在哪里,谢谢!

我的想法是,开多后,每一次调整后的再次金叉,当根K线的开盘价即为止损价。

 

input:ma5(5,1,10,1);
input:ma15(15,1,30,1);
input:ma40(40,1,60,1);


variable:KD=0;
variable:KK=0;

 

//设置变量
IF HOLDING>0 AND CROSS(MA5,MA15) THEN KD:=OPEN;
KKD:KD;
IF HOLDING<0 AND CROSS(MA15,MA5) THEN KK:=OPEN;
KKK:KK;

 

//固定平仓规则
IF HOLDING>0 AND  CROSS(MA(C,30),MA(C,10)) THEN SELL(1,0,MARKET);
IF HOLDING<0 AND  CROSS(MA(C,10),MA(C,30)) THEN SELLSHORT(1,0,MARKET);

 

//移动平仓规则
IF HOLDING>0 AND  CLOSE<=KD THEN
BEGIN
 SELL(1,0,MARKET);
 KD:=0;
 END
 
IF HOLDING<0 AND  CLOSE>=KK THEN
BEGIN
 SELLSHORT(1,0,MARKET);
 KK:=0;
 END

 

//开仓规则
IF HOLDING=0 AND MA5>MA40 AND MA40>REF(MA40,1) THEN BUY(1,1,MARKET);
IF HOLDING=0 AND MA40<MA5 AND MA40<REF(MA40,1) THEN BUYSHORT(1,1,MARKET);

 

 

IF TIME=151500 THEN
BEGIN
KD=0;
KK=0;
END

2楼
jinzhe 发表于:2012/6/18 9:04:31

在开仓规则那里添加上

kd:=open;

kk:=open;

 

注意多空仓不要搞反了

[此贴子已经被作者于2012-6-18 9:04:51编辑过]
3楼
aback 发表于:2012/6/18 10:12:12
还是不对啊,图表显示不出来啊!
4楼
just 发表于:2012/6/18 10:14:53

楼主去看看阿火秘笈http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=9439

 

5楼
aback 发表于:2012/6/18 10:55:11
早看过了,呵呵,这是看过后才写出来的。
[此贴子已经被作者于2012-6-18 10:56:04编辑过]
6楼
just 发表于:2012/6/18 10:59:23

{
variable:hl=0,aa=0;

if cond and holding>0 and aa=0 then begin
   aa:=1;
   end
  //记录开仓
 
if h>hl and aa>0 then begin
  h:=hl;
 end
 //记录开仓后的最高价
 
if hl-h<5*mindiff and aa>0 then begin
 sell(1,1,market);
 aa:=0;
 hl:=0;
 end
  //最高价回落5个点移动止损离场并把变量初始化,表示移动止损完成。
  }

基础移动止损代码,楼主可以看看。

7楼
aback 发表于:2012/6/18 11:28:46

开仓时记录变量,这个我会,可能这个很好判别。

我不是在开仓的时候记录变量,写的时候总是有冲突,虽然在图表上止损价格都能划线出来,但执行不了,会不会要用第二个变量辅助?

[此贴子已经被作者于2012-6-18 11:37:50编辑过]
8楼
aback 发表于:2012/6/18 13:00:30

修改了下

 

ma5:=MA(C,5);
ma15:=MA(C,15);
ma40:=MA(C,40);


variable:KD=0;
variable:KK=0;

 

//设置变量
IF HOLDING>0 AND CROSS(MA5,MA15) THEN KD:=OPEN;
KKD:KD;
IF HOLDING<0 AND CROSS(MA15,MA5) THEN KK:=OPEN;
KKK:KK;

 

//固定平仓规则
IF HOLDING>0 AND  CROSS(MA(C,40),MA(C,15)) THEN SELL(1,0,MARKET);
IF HOLDING<0 AND  CROSS(MA(C,15),MA(C,40)) THEN SELLSHORT(1,0,MARKET);

 

//移动平仓规则
IF HOLDING>0 AND  CLOSE<=KD THEN
BEGIN
 SELL(1,0,MARKET);
 KD:=0;
 END
 
IF HOLDING<0 AND  CLOSE>=KK THEN
BEGIN
 SELLSHORT(1,0,MARKET);
 KD:=0;
 END
 

//开仓规则
IF HOLDING=0 AND MA5>MA40 AND MA40>REF(MA40,1) THEN
BEGIN
 BUY(1,1,MARKET);
  END
 
IF HOLDING=0 AND MA40<MA5 AND MA40<REF(MA40,1) THEN
BEGIN
 BUYSHORT(1,1,MARKET);
 END

 

IF TIME=151500 THEN

BEGIN
KD=0;
KK=0;
END

9楼
just 发表于:2012/6/18 13:17:10
楼主的代码就是达到条件平仓吧,何来移动止损一说?
10楼
aback 发表于:2012/6/18 13:45:49

 

移动止损---开多后的每次回调后的均线再次金叉,则记录当根K线的开盘价,此开盘价就是新的止赢价格 。

 

IF HOLDING>0 AND CROSS(MA5,MA15) THEN KD:=OPEN;
KKD:KD;
IF HOLDING<0 AND CROSS(MA15,MA5) THEN KK:=OPEN;
KKK:KK;

 

固定平仓规则----------正常的出场条件
IF HOLDING>0 AND CROSS(MA(C,40),MA(C,15)) THEN SELL(1,0,MARKET);
IF HOLDING<0 AND CROSS(MA(C,15),MA(C,40)) THEN SELLSHORT(1,0,MARKET);

共13 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in 0.04297 s, 3 queries.