hunter1988 发表于 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/C>1.05;
c2=C/((C)+C)/2)<1.005;
c3=C/((C)+C)/2)>0.995;
for i=1 To 100
        if ( c1 & (c2 Or c3))
        {
                Buy(1,Open);
        }
        End

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

小米 发表于 2019-9-18 08:21:20

C2,C3这两行都是少了一个左括号。看看你想要的逻辑到底是什么,再决定什么位置加上相应的括号。
另外,for  i = 1 to 100是不必要的吧?可以删掉

hunter1988 发表于 2019-9-18 08:41:43

本帖最后由 hunter1988 于 2019-9-18 08:46 编辑

小米 发表于 2019-9-18 08:21 static/image/common/back.gif
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/C>1.05;
c2=(C/((C)+C)/2)<1.005;
c3=(C/((C)+C)/2)>0.995;
for i=1 To 100
        if ( c1 & (c2 Or c3))
        {
                Buy(1,Open);
        }
        End

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

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

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

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

hunter1988 发表于 2019-9-18 08:54:57

按照我的本意,3个条件应该都是“与”才对,我改成了如下:
if ( c1 & c2 & c3)

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

小米 发表于 2019-9-18 10:07:48

hunter1988 发表于 2019-9-18 08:54 static/image/common/back.gif
按照我的本意,3个条件应该都是“与”才对,我改成了如下:
if ( c1 & c2 & c3)



请先看一下帮助文档,了解一下公式的基础语法以及应用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/C>1.05;
c2=(C/((C)+C)/2)<1.005;
c3=(C/((C)+C)/2)>0.995;
//for i=1 To 100
        if ( c1 && c2 &&  c3)
        {
                Buy(1,Open);
        }
        End

hunter1988 发表于 2019-9-18 10:24:57

小米 发表于 2019-9-18 10:07 static/image/common/back.gif
请先看一下帮助文档,了解一下公式的基础语法以及应用

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

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

符合条件我就开仓。

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

hunter1988 发表于 2019-9-18 11:19:17

本帖最后由 hunter1988 于 2019-9-18 12:47 编辑

hunter1988 发表于 2019-9-18 10:24 static/image/common/back.gif
老师,公式指南我看完一遍了。现在在试着上手写自己的公式。

我的整体思路:

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/C;
        c2=C/((C+C)/2);
        c3=C/((C+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


老师,我自己又改了一下程序。不知道代码是否实现了我自己的思路?
页: [1]
查看完整版本: 提示缺少分号的问题