设为首页收藏本站

 找回密码
 注册
查看: 1420|回复: 6
打印 上一主题 下一主题

提示缺少分号的问题 [复制链接]

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
跳转到指定楼层
1#
发表于 2019-9-18 00:23:08 |只看该作者 |倒序浏览
Vars

Numeric a;
Numeric b;

Begin

a=SwingHighBar(1,H,10,i);
b=SwingLowBar(1,L,10,i);

c1=C[a]/C[b]>1.05;
c2=C[1]/((C[a])+C[b])/2)<1.005;
c3=C[1]/((C[a])+C[b])/2)>0.995;
for i=1 To 100
        if ( c1 & (c2 Or c3))
        {
                Buy(1,Open);
        }
        End

提示我c2那一行缺少分号,怎么回事?

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2019-9-18 08:21:20 |只看该作者
C2,C3这两行都是少了一个左括号。看看你想要的逻辑到底是什么,再决定什么位置加上相应的括号。
另外,for  i = 1 to 100是不必要的吧?可以删掉

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
3#
发表于 2019-9-18 08:41:43 |只看该作者
本帖最后由 hunter1988 于 2019-9-18 08:46 编辑
小米 发表于 2019-9-18 08:21
C2,C3这两行都是少了一个左括号。看看你想要的逻辑到底是什么,再决定什么位置加上相应的括号。
另外,for ...


老师,我把代码改成了了如下所示(不知道为什么,我编辑一下回复,原来的c全都变成了c,请老师回答的时候注意一下):

Vars

Numeric a;
Numeric b;
NumericSeries i;
Bool c1;
Bool c2;
Bool c3;


Begin

a=SwingHighBar(1,H,10,i);
b=SwingLowBar(1,L,10,i);

c1=C[a]/C>1.05;
c2=(C[1]/((C[a])+C)/2)<1.005;
c3=(C[1]/((C[a])+C)/2)>0.995;
for i=1 To 100
        if ( c1 & (c2 Or c3))
        {
                Buy(1,Open);
        }
        End

提示:函数c[1]没有被声明。怎么回事?

1.关于左括号:我的本意是昨天的收盘价除以a日前与b日前的收盘价均值,然后找出结果满足“小于1.005和大于0.995之间”的条件(按照你的指导,左边加了一个括号,但是括号数量不匹配了啊,左括号3个,右括号2个,这样居然编译通过了???)

2.关于i从1循环到100,是因为我事先不知道何时能满足条件c1、c2、c3,所以在100日内循环来寻找满足这种条件的情况。

3.再说一下我的整体思路:寻找一段上涨幅度大于5%的行情(c[a]对应行情的启动时的低点,c对应行情的高点),然后等待行情回落至涨幅的1/2(也就是用昨天的收盘价除以a日前与b日前的收盘价均值来比较,昨收在均值上、下0.5%范围内,我就认为满足要求)。符合条件我就开仓。---请老师针对我这个简单的思路,看看编写的问题在哪。十分感谢!!!

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
4#
发表于 2019-9-18 08:54:57 |只看该作者
按照我的本意,3个条件应该都是“与”才对,我改成了如下:
if ( c1 & c2 & c3)

提示:小括号不匹配。怎么回事?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2019-9-18 10:07:48 |只看该作者
hunter1988 发表于 2019-9-18 08:54
按照我的本意,3个条件应该都是“与”才对,我改成了如下:
if ( c1 & c2 & c3)

请先看一下帮助文档,了解一下公式的基础语法以及应用
  1. Vars
  2. Numeric a;
  3. Numeric b;
  4. NumericSeries i;
  5. Bool c1;
  6. Bool c2;
  7. Bool c3;


  8. Begin

  9. a=SwingHighBar(1,H,10,i);
  10. b=SwingLowBar(1,L,10,i);

  11. c1=C[a]/C>1.05;
  12. c2=(C[1]/((C[a])+C)/2)<1.005;
  13. c3=(C[1]/((C[a])+C)/2)>0.995;
  14. //for i=1 To 100
  15.         if ( c1 && c2 &&  c3)
  16.         {
  17.                 Buy(1,Open);
  18.         }
  19.         End
复制代码

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
6#
发表于 2019-9-18 10:24:57 |只看该作者
小米 发表于 2019-9-18 10:07
请先看一下帮助文档,了解一下公式的基础语法以及应用

老师,公式指南我看完一遍了。现在在试着上手写自己的公式。

我的整体思路:
1.寻找一段上涨幅度大于5%的行情(c[a]对应行情的启动时的低点,c对应行情的高点);
2.然后等待行情回落至涨幅的1/2(也就是用昨天的收盘价除以a日前与b日前的收盘价均值来比较,昨收在均值上、下0.5%范围内)。

符合条件我就开仓。

---请老师针对我这个简单的思路,看看应该怎样改进我的程序呢?

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
7#
发表于 2019-9-18 11:19:17 |只看该作者
本帖最后由 hunter1988 于 2019-9-18 12:47 编辑

[quote]hunter1988 发表于 2019-9-18 10:24
老师,公式指南我看完一遍了。现在在试着上手写自己的公式。

我的整体思路:

Vars

Numeric a;
Numeric b;
Numeric i;
Numeric c1;
Numeric c2;
Numeric c3;

Numeric MyExitPrice;


Begin

for i=10 To 100
{
         a=SwingHighBar(1,H,10,i);
         b=SwingLowBar(1,L,10,i);
        c1=C[a]/C;
        c2=C[1]/((C[a]+C)/2);
        c3=C[1]/((C[a]+C)/2);
       
        if ( c1>1.05 And c2<1.005 And c3>0.995 AND MarketPosition==0)//开仓条件:c1:出现5%涨幅的行情;c2、c3:回调涨幅的50%左右0.5%范围内;
        {
                Buy(1,Close);
        }
}
       
        if ( MarketPosition==1 And BarsSinceEntry>=1)
        {
           if(High>AvgEntryPrice+50)//止盈;
            {
                    MyExitPrice = AvgEntryPrice + 50;
                    If(Open > MyExitPrice)
                        MyExitPrice = Open;
                        Sell(0,MyExitPrice);
             }
                 Else if(Low<AvgEntryPrice-10)//止损;
                     {
                         MyExitPrice = AvgEntryPrice - 10;
                         If(Open < MyExitPrice)
                         MyExitPrice = Open;
                         Sell(0,MyExitPrice);
                         }
        }

End


老师,我自己又改了一下程序。不知道代码是否实现了我自己的思路?

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-5 18:27

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部