设为首页收藏本站

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

我来学习来了,呵呵 [复制链接]

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
跳转到指定楼层
1#
发表于 2007-7-29 11:20:04 |只看该作者 |倒序浏览
请问一下斑竹,当前的最新价怎么用函数表达 ?

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
2#
发表于 2007-7-29 11:53:30 |只看该作者
或者说,当前最新价高于开盘价5个点,我就买入,怎么写 ?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2007-7-29 16:57:24 |只看该作者
原帖由 大一 于 2007-7-29 11:53 发表
或者说,当前最新价高于开盘价5个点,我就买入,怎么写 ?


你的交易系统意思是要当前Bar的最新价,即收盘价[Close]高于当日的开盘价。而不是当前Bar的开盘价。
对于这样的系统,我觉得在1分钟线上做自动交易比较合理。您先设置周期为1分钟,然后在超级图表的商品设置中选择数据范围为一天以来的数据。
这样,第一个Bar的开盘价即当日的开盘价。

这个时候,您的条件可以表述为:
  1. If(Close > Open[CurrentBar] + 5 * PriceScale() * MinMove())
  2. {
  3. //您的后续处理代码
  4. }
复制代码



如果不这样设置数据范围,那您需要在判断哪一个Bar是当天的第一个Bar,然后把这个Bar的开盘价记录下来。算法相对复杂些,但也不是很难。主要是通过Date函数来判断日期,如果和前一个Bar的Date不相同,则应该是新的一天的第一个Bar

[ 本帖最后由 nopain 于 2007-7-29 16:59 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
4#
发表于 2007-7-29 21:06:53 |只看该作者
谢谢了,我试着编一编。

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
5#
发表于 2007-7-29 23:39:59 |只看该作者
If(Close > Open[CurrentBar] + 5 * PriceScale() * MinMove())
{
//您的后续处理代码
}

假如我做橡胶,一个点是5元,minmove后面的 () 里是不是应该填5 ?
那pricescale后面的 () 里应该填多少?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2007-7-30 09:15:27 |只看该作者
原帖由 大一 于 2007-7-29 23:39 发表
If(Close > Open[CurrentBar] + 5 * PriceScale() * MinMove())
{
//您的后续处理代码
}

假如我做橡胶,一个点是5元,minmove后面的 () 里是不是应该填5 ?
那pricescale后面的 () 里应该填多少? ...

这个是系统函数,不需要填写参数。
具体是5个点,还是10个点,系统已经设置好了。报价精度也是设置好了。

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
7#
发表于 2007-7-31 19:01:05 |只看该作者
我仿造示例做了一个,毛病很多,不知道问题出在哪里

1,开仓:最新价格比当天开盘价格高3个点就买,反之就卖。
2,止损:最损失超过5个点就止损平仓。
3,收盘前全平 。


Params
        Numeric lots(1);
        Numeric LossDots(5);
Vars
        Numeric MinMovePrice;
        Numeric preMP;
        
Begin
        MinMovePrice = MinMove * PriceScale;   //每跳动一下是多少点的意思系统已经设定好了
        preMP = MarketPosition;
        If(Time > 0.145930 && Time < 0.150030 && preMP!=0) // 收盘平仓
        {
                If(preMP == 1)
                {
                        Sell;
                }else if(preMP == -1)
                {
                        BuyToCover;
                }
        }        
        
        If(preMP == 0)
        {
                If(Close > Open[CurrentBar] + 3 * minmoveprice)

                {
                        Buy(lots,high,true);
                }Else If(Close <Open[CurrentBar] + 3 * minmoveprice)
                {
                        SellShort(lots,low,true);
                }
        }
        
        SetStopLoss(1, ContractUnit *BigPointValue *LossDots*MinMovePrice, true); // 止损平仓
        
End

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
8#
发表于 2007-7-31 19:04:49 |只看该作者
测试了一下,很有问题的。

盘中止损以后,只要价格比当天开盘价格高,不管高多少点(当然是大于3个点以上)都不断地开仓。。。

使用道具 举报

Rank: 4

精华
0
UID
57
积分
270
帖子
61
主题
14
阅读权限
50
注册时间
2007-7-28
最后登录
2019-3-31
9#
发表于 2007-7-31 19:05:06 |只看该作者
请斑竹看一看问题出在哪里 ?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
10#
发表于 2007-7-31 20:35:47 |只看该作者
原帖由 大一 于 2007-7-31 19:05 发表
请斑竹看一看问题出在哪里 ?


1、首先,Close > Open[CurrentBar]的写法必须配合我前面讲的商品数据范围设置方法,1天以来的数据。周期可以是1,5,15分钟,再大估计没什么意义了。其他的数据范围设置就整个不对了。
2、另外,
  1. If(Close > Open[CurrentBar] + 3 * minmoveprice)
  2. {
  3.     Buy(lots,high,true);
  4. }Else If(Close <Open[CurrentBar] + 3 * minmoveprice) // 这里应该是减号吧?
  5. {
  6.     SellShort(lots,low,true);
  7. }
复制代码

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 11:20

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部