基于开盘价的日内ATR区间突破的公式,啊有哪位兄弟有?小弟,刚看金字塔,要把交易开拓者里的转化到金字塔里
以下内容为程序代码:
1 //------------------------------------------------------------------------
2 // 简称: ATRbreak
3 // 名称: ATRbreak
4 // 类别: 公式应用
5 // 类型: 用户应用
6 // 输出:
7 //------------------------------------------------------------------------
8
9
10
11 // 基于开盘价的日内ATR区间突破
12 // 期指IF888 五分钟周期
13
14
15 Params
16 Numeric Mult(4);
17 Numeric Length(30);
18 Numeric ExitOnCloseMins(15.10);
19 Numeric StopPercent(0.5);
20
21 Vars
22 Numeric DayOpen;
23 Numeric UpperBand;
24 Numeric LowerBand;
25 Numeric MyPrice;
26 Numeric myExitPrice;
27 NumericSeries EntryLots;
28 NumericSeries ATRValue;
29
30
31 Begin
32 ATRValue=AvgTrueRange(Length);
33
34 DayOpen=OpenD(0);
35 UpperBand=DayOpen+ATRValue[1]*Mult;
36 LowerBand=DayOpen-ATRValue[1]*Mult;
37 EntryLots=IntPart(Portfolio_CurrentCapital*0.3/(Close*ContractUnit*BigPointValue*MarginRatio));
38
39 If(MarketPosition!=1 && High>=UpperBand && Time<ExitOnCloseMins/100)
40 {
41 MyPrice=UpperBand;
42 If(Open>MyPrice) Myprice=Open;
43 Buy(1,MyPrice);
44 Return;
45 }
46
47 If(MarketPosition!=-1 && Low<=LowerBand && Time<ExitOnCloseMins/100)
48 {MyPrice=LowerBand;
49 If(Open<MyPrice) Myprice=Open;
50 SellShort(1,MyPrice);
51 Return;
52 }
53
54
55 If(MarketPosition==1)
56 {
57 If(Low<AvgEntryPrice*(1-StopPercent/100))
58 {
59 myExitPrice=AvgEntryPrice*(1-StopPercent/100);
60 myExitPrice=Min(Open,myExitPrice);
61 Sell(0,myExitPrice);
62 }
63 }
64
65 If(MarketPosition==-1)
66 {
67 If(High>AvgEntryPrice*(1+StopPercent/100))
68 {
69 myExitPrice=AvgEntryPrice*(1+StopPercent/100);
70 myExitPrice=Max(Open,myExitPrice);
71 BuyToCover(0,myExitPrice);
72 }
73 }
74
75 If(Time>=ExitonCloseMins/100)
76 {
77 Sell(0,Open);
78 BuyToCover(0,Open);
79 }
80
81 End
82
83
[此贴子已经被作者于2012-3-15 9:40:55编辑过]
你干脆直接把你要实现的想法写出来,看看我们能不能帮你实现。
我是12年应届毕业生,本科学计算机的,没啥基础。现在在一个期货公司实习,刚来,头布置了任务,把TB里的程序转到金字塔里,程序是他给我的。看这个程序的意思就是:1、先求过去30个周期的最高点与最低点的差价的平均值 2,求得过去10天的平均开盘价,作为中间线,在加减1求的值,作为上下轨 3然后就是三个判断条件,一个当天最高价大于上轨,不是多仓,时间小于10.5,就对应一个操作。。。 PS这是头布置的任务,总共5个程序,两周内转到金字塔。要是完成,就能转正。我现在是零基础,才看了三四天,有点迷糊,so 求大侠帮助,感激涕零。
[此贴子已经被作者于2012-3-15 9:56:35编辑过]
以下是引用leoyangliu在2012-3-15 9:54:17的发言: 我是12年应届毕业生,本科学计算机的,没啥基础。现在在一个期货公司实习,刚来,头布置了任务,把TB里的程序转到金字塔里,程序是他给我的。看这个程序的意思就是:1、先求过去30个周期的最高点与最低点的差价的平均值 2,求得过去10天的平均开盘价,作为中间线,在加减1求的值,作为上下轨 3然后就是三个判断条件,一个当天最高价大于上轨,不是多仓,时间小于10.5,就对应一个操作。。。 PS这是头布置的任务,总共5个程序,两周内转到金字塔。要是完成,就能转正。我现在是零基础,才看了三四天,有点迷糊,so 求大侠帮助,感激涕零。
[此贴子已经被作者于2012-3-15 9:56:35编辑过]
朋友你真老实,啥都说出来了
看了你们老大的要求,我真的感动流涕,我有一个好老大啊!!!
//1、先求过去30个周期的最高点与最低点的差价的平均值
//2,求得过去10天的平均开盘价,作为中间线,在加减1求的值,作为上下轨
//3然后就是三个判断条件,一个当天最高价大于上轨,不是多仓,时间小于10.5,
//就对应一个操作。。。
hh:=ref(hhv(h,30),1);
ll:=ref(llv(l,30),1);
pjgd:=(hh-ll)/30;
pjo:=stkindi('','aa.jj',0,6,-1);
上轨:pjo+1;
下轨:pjo-1;
if h>hh then hh:=h;
if hh>=上轨 and holding<=0 and time<=100500 then buy(1,1,market);
仅供参考
你才去4天,能看懂这个已经算厉害了,这个涉及到转换问题,帮你研究研究。楼主别着急,慢慢来。
//1、先求过去30个周期的最高点与最低点的差价的平均值
zg:=ref(LLV(low,30),1);
zd:=ref(hhv(high,30),1);
chajia:(zg-zd)/30,;
//2,以if01为例子,求得过去10天的平均开盘价,作为中间线,在加减1求的值,作为上下轨
dayopen:"if01$open#day";
kaipan:ma(dayopen,10);
shanggui:kaipan+1;
xiagui:kaipan-1;
//3然后就是三个判断条件,一个当天最高价大于上轨,不是多仓,时间小于10.5
nn:=barslast(date<>ref(date,1))+1;
aa:ref(hhv(h,nn),1);
if aa>shanggui then buy(1,1,market);
if holding<=0 then buy(1,1,market);
if time<100500
then buy(1,1,market);
同为实习生,必须得支持一下
[此贴子已经被作者于2012-3-15 12:41:23编辑过]
以下是引用rushtaotao在2012-3-15 12:40:31的发言:
//1、先求过去30个周期的最高点与最低点的差价的平均值
zg:=ref(LLV(low,30),1);
zd:=ref(hhv(high,30),1);
chajia:(zg-zd)/30,;
//2,以if01为例子,求得过去10天的平均开盘价,作为中间线,在加减1求的值,作为上下轨
dayopen:"if01$open#day";
kaipan:ma(dayopen,10);
shanggui:kaipan+1;
xiagui:kaipan-1;
//3然后就是三个判断条件,一个当天最高价大于上轨,不是多仓,时间小于10.5
nn:=barslast(date<>ref(date,1))+1;
aa:ref(hhv(h,nn),1);
if aa>shanggui then buy(1,1,market);
if holding<=0 then buy(1,1,market);
if time<100500
then buy(1,1,market);
同为实习生,必须得支持一下
您好,//1,原程序的意思是先求出过去30个周期里,每个周期最高价减去最低价,求的30个差价后,然后相加,除30,求平均
[此贴子已经被作者于2012-3-15 12:41:23编辑过]