以文本方式查看主题

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

--  作者:嗯你好
--  发布时间:2019/7/16 11:21:39
--  如何将闪灵交易系统的亏损一次开仓,改为亏损多次蔡仓
if 该笔盈亏<=0 THEN BEGIN
    if 盈亏记录=0 then 盈亏记录:=1;
    if 盈亏记录=1 then 盈亏记录:=2;
    if 盈亏记录>=2 then 盈亏记录:=3;
    if 盈亏记录=3 then 真实系统下单开关:=1;
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
  END

上面这种方法不起作用,还有其他方法吗?

--  作者:FireScript
--  发布时间:2019/7/16 13:46:17
--  
 你这个几个变量是全局变量吗?
盈亏记录,盈亏记录

--  作者:嗯你好
--  发布时间:2019/7/16 14:07:35
--  
VARIABLE:该笔盈亏:=0,模拟持仓:=0,模拟开仓价:=0,模拟平仓价:=0,真实系统下单开关:=0,盈亏记录:=0;
都是全局变量。

--  作者:FireScript
--  发布时间:2019/7/16 14:15:41
--  
 这里应该也有改下吧:

模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0

改成 盈亏记录=3的时候再初始化,就和这个下面一样

if 盈亏记录=3 then 真实系统下单开关:=1;

--  作者:嗯你好
--  发布时间:2019/7/16 14:20:16
--  
http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&ID=34050&replyID=&skin=1
我是按照这个写的,后面说到的连续亏损三次再开仓。
还不明白应该怎么写。

--  作者:FireScript
--  发布时间:2019/7/16 15:04:42
--  
原始代码只能说是一个模板,存在一些问题。我好好看下先。

--  作者:wenarm
--  发布时间:2019/7/16 15:16:53
--  

INPUT:N1(9,1,100,1),SS(1,1,100);
VARIABLE:该笔盈亏:=0;模拟持仓:=0,模拟开仓价:=0,模拟平仓价:=0,真实系统下单开关:=0,盈亏记录:=0;
LC := REF(CLOSE,1);
RSI:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//RSI指标默认N1为9
9日收盘价指数平均:REF(EMA(CLOSE,9),1);
19日最高价收盘价平均:REF(EMA(HIGH,19),1);
20日高点:=REF(HHV(H,20),1);
20日低点:=REF(LLV(L,20),1);
手数:=SS;
//交易条件
开多条件:=9日收盘价指数平均>=19日最高价收盘价平均 AND REF(RSI,1)<70;
开空条件:=9日收盘价指数平均<19日最高价收盘价平均 AND REF(RSI,1)>30;
平多条件:=C<20日低点;
平空条件:=C>=20日高点;


//交易系统
//模拟交易模块
IF 开多条件 AND 模拟持仓=0 THEN BEGIN
   模拟开仓价:=CLOSE;//记录开仓价
   模拟持仓:=1;//模拟持仓为1
END

IF 平多条件 AND 模拟持仓=1 THEN BEGIN
   模拟平仓价:=CLOSE;//记录平仓价
   该笔盈亏:=模拟平仓价-模拟开仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数
   模拟持仓:=0;//将全局变量*模拟持仓*初始化为0
   IF 该笔盈亏>0 THEN BEGIN
    
    盈亏记录:=0;
    真实系统下单开关:=0;//0代表模拟交易上一笔是赚钱的。
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
   END
   IF 该笔盈亏<=0 THEN BEGIN
    
 if 盈亏记录=3 then 真实系统下单开关:=1;//1代表模拟交易上一笔是亏钱的。
 if 盈亏记录>=2 then 盈亏记录:=3;
 if 盈亏记录=1 then 盈亏记录:=2;
    if 盈亏记录=0 then 盈亏记录:=1;

 

    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
    模拟平仓价:=0;//将全局变量*模拟平仓价*初始化为0   
   END
 END
 
IF 开空条件 AND 模拟持仓=0 THEN BEGIN
   模拟开仓价:=CLOSE;//记录开仓价
   模拟持仓:=-1;//模拟持仓为-1
END

IF 平空条件 AND 模拟持仓=-1 THEN BEGIN
   模拟平仓价:=CLOSE;//记录平仓价
   该笔盈亏:=模拟开仓价-模拟平仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数
   模拟持仓:=0;//将全局变量*模拟持仓*初始化为0
   IF 该笔盈亏>0 THEN BEGIN
    真实系统下单开关:=0;//0代表模拟交易上一笔是赚钱的。
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
   END
   IF 该笔盈亏<=0 THEN BEGIN
    真实系统下单开关:=1;//1代表模拟交易上一笔是亏钱的。
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
   END
 END
 
//真实下单模块
平空:SELLSHORT(平空条件 AND HOLDING<0,手数,MARKET);
平多:SELL(平多条件 AND HOLDING>0,手数,MARKET);
开多:BUY(开多条件 AND 真实系统下单开关=1 AND HOLDING=0,手数,MARKET);
开空:BUYSHORT(开空条件 AND 真实系统下单开关=1 AND HOLDING=0,手数,MARKET);


--  作者:嗯你好
--  发布时间:2019/7/16 15:49:33
--  
1,VARIABLE:该笔盈亏:=0;   这里的分号是不是应该改成逗号?
2,调试的时候发现盈亏记录的值始终为零
3,平空仓处如果这样编写会没有信号,为什么会这样

--  作者:嗯你好
--  发布时间:2019/7/16 15:57:22
--  
平仓处这样写是我的策略没有信号,不是这个例子
--  作者:FireScript
--  发布时间:2019/7/16 16:25:06
--  
 1.“
1,VARIABLE:该笔盈亏:=0;   这里的分号是不是应该改成逗号?”  是这样的。。。。这是个笔误,你改下。历史遗留的坑。。。