设为首页收藏本站

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

你好,老师帮忙解释 [复制链接]

Rank: 3Rank: 3

精华
0
UID
205594
积分
158
帖子
34
主题
14
阅读权限
40
注册时间
2015-3-20
最后登录
2018-12-25
跳转到指定楼层
1#
发表于 2015-3-30 16:03:27 |只看该作者 |倒序浏览

Params
Numeric FastLength(5);
Numeric SlowLength(20);
Numeric DelayTicks(5);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric LastBarTime;
Numeric TickCounter;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
LastBarTime = GetGlobalVar(0);
TickCounter = GetGlobalVar(1);
If(BarStatus == 2 && LastBarTime != Time) // 最新Bar 第一次生成时,Tick 重新开始计数
{
LastBarTime = Time;
TickCounter = 0;
}
If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
// 无持仓,直接买多仓
// 持空仓且Bar 不是实时行情,平空仓,买多仓
{
Buy(1,Open);
}Else // 持空仓,Bar 实时行情,平空仓,通过TickCounter 计数,延迟反手
{
BuyToCover(1,Open);
If(TickCounter == 0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
}
}
}
SetGlobalVar(0,LastBarTime);
SetGlobalVar(1,TickCounter);
End

教程里面的例子:If(BarStatus == 2 && LastBarTime != Time) // 最新Bar 第一次生成时,Tick 重新开始计数,LastBarTime有什么作用?If(TickCounter == 0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
} tickCounter是在上一个ELSE语句里面循环,即该公式是基于K线序列循环还是在单根K线内TICK循环?

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2015-4-2 15:36:28 |只看该作者
只有在新bar出现的第一个tick时,才会满足lastbartime!=time的情况。此时再对tickcounter进行一个初始化的动作。
tickpunter只是基于当前K线内的一个tick计数

使用道具 举报

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

bottom

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

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

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部