- 精华
- 0
- 在线时间
- 81 小时
- UID
- 171167
- 积分
- 64
- 帖子
- 39
- 阅读权限
- 30
- 注册时间
- 1970-1-1
- 最后登录
- 2013-12-24
- 精华
- 0
- UID
- 171167
- 积分
- 64
- 帖子
- 39
- 主题
- 25
- 阅读权限
- 30
- 注册时间
- 1970-1-1
- 最后登录
- 2013-12-24
|
请高手们帮忙解决一下下面的程序,我运行不出来了。意思就是想如果有建仓就用建仓价格+/-0.5N作为dzs/kzs进行交易。小女子急需这个程序,还请高手们帮忙解决。
Params
Numeric LengthAtr(20); // 平均波动周期 ATR Length
Numeric LengthFast(20); // 短周期 BreakOut Length
Numeric LengthExit(10); // 离市周期 Trailing Exit Length
Bool LastProfitableTradeFilter(True); // 使用入市过滤条件
Numeric teLength(10); // 离市周期 Trailing Exit Length
Numeric RiskRatio(1); // % Risk Per N ( 0 - 100)
Vars
Numeric countI;
Numeric countII;
Numeric countIII;
Numeric countIV;
Numeric highest_20Days;//前20天的最高价
Numeric Lowest_20Days;//前20天的最低价
Numeric highest_10Days;//前10天的最高价
Numeric Lowest_10Days;//前10天的最低价
Numeric TurtleUnits;// 交易单位
Numeric dj(0);
Numeric kj(0);
Numeric Openprice; // 开仓价格
Bool SendOrderThisBar(False); // 当前Bar有过交易
BoolSeries PreBreakoutFailure(false); // 前一次突破是否失败
Numeric MyBarsSinceToday; // 过度BarsSinceToday;
NumericSeries TotalEquity; // 按最新收盘价计算出的总资产
NumericSeries MyExitPrice; // 平仓价格
Numeric j; // 循环计算所需指针;
numeric CloseD_1;
numeric HighD_1;
numeric LowD_1;
numeric Atr;
numeric Atr1;
numeric N(0) ;
numeric i ;
numeric B;
numeric N1;
numeric N2;
numericSeries N3(0);
Numeric dzs;
Numeric kzs;
numeric A(0);
numeric M(0);
numeric aa;
numeric ab;
Numeric myEntryPrice; // 开仓价格
Numeric ExitHighestPrice; // 离市时判断需要的N周期最高价
Numeric ExitLowestPrice; // 离市时判断需要的N周期最低价
NumericSeries preEntryPrice(0); // 前一次开仓的价格
NumericSeries LastPrice; // 最后一次开仓价格
Begin
MyBarsSinceToday = BarsSinceToday;
CloseD_1 = CloseD(1);
HighD_1 = HighD(1);
LowD_1 = LowD(1);
// 前一日真实波幅=max{最高价-收盘价,收盘价-最低价、最高价-最低价};
Atr1=max(high-Close[1],Close[1]-Low);
Atr=Max(Atr1,high-Low);
B=Summation(Atr, 20);
N1=Summation(Atr, 20)/20 ;
N2=(atr)/20;
N3=19*N3[1]/20+N2;
If(CountIf(close>0,21)<20)
{
N =0;
}Else
If(CountIf(close>0,21)<21)
{
N =N1 ;
}Else
If(CountIf(close>0,21)==21)
{
N=N3;
}
For countI = 1 To 20
{
highest_20Days = Max(highest_20Days, HighD(countI));//前20天的最高价=取前20天的每一天的最高价的最高价
}
For countIII = 1 To 20
{
Lowest_20Days =Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(LowD(1),LowD(2)),LowD(3)),
LowD(4)),LowD(5)),LowD(6)),LowD(7)),LowD(8)),LowD(9)),LowD(10)),LowD(11)),LowD(12)),LowD(13)),
LowD(14)),LowD(15)),LowD(16)),LowD(17)),LowD(18)),LowD(19)),LowD(20));//前20天的最低价=取前20天的每一天的最低价的最低价
}
For countII = 1 To 10
{
highest_10Days = Max(highest_10Days, HighD(countII));//前10天的最高价=取前10天的每一天的最高价的最高价
}
For countIV = 1 To 10
{
Lowest_10Days = Min(Min(Min(Min(Min(Min(Min(Min(Min(LowD(1),LowD(2)),LowD(3)),
LowD(4)),LowD(5)),LowD(6)),LowD(7)),LowD(8)),LowD(9)),LowD(10));//前10天的最低价=取前10天的每一天的最低价的最低价
}
//建仓
If(MarketPosition == 0 )
{
If(close > highest_20Days)
{
dj=close;
A=dj-0.5*N;
Buy(TurtleUnits,dj);//使用收盘价买入一个单位的仓
SendOrderThisBar = true;
PreBreakoutFailure = False;
}
Else If(close < Lowest_20Days)
{
kj=close;
M=kj+0.5*N;
Sell(TurtleUnits,kj);//使用收盘价买入一个单位的仓
SendOrderThisBar = true;
PreBreakoutFailure = False;
}
}Else
{
if (dj>0)
{
aa=dj-0.5*N;
SetGlobalVar(aa,aa);
ab=GetGlobalVar(aa);
}
//当持有多单;
If (MarketPosition==1)
{
//止损:
if(Close==ab)
{
dzs = ab;
Sell(0,dzs); //用开仓价格进行卖出平仓;
PreBreakoutFailure = True; //假突破值为真;
// PlotBool("突破",PreBreakoutFailure,High,white);
}
}//Else
{
// 当持有空单;
if(MarketPosition==-1)
// 止损:
if(Close>=M)
{
kzs = M;
BuyToCover(0,kzs); //用开仓价格进行买入平仓;
PreBreakoutFailure = True; //假突破值为真;
// PlotBool("突破",PreBreakoutFailure,High,white);
}
}
}
//将上述的结果可以进行输出,成excel格式的文件。括号中,逗号前的表示文件存在的位置和名称,逗号后面的是要输出的内容
FileAppend("c:\\止.xls",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日"+"-"+Text(Hour)+":"+Text(Minute)+"-"+Text(Open)
+"-"+Text(High)+"-"+Text(Low)+"-"+Text(Close)+"-"+Text(Atr)+"-"+Text(N)+"-"+Text(highest_20Days)+"-"+Text(Lowest_20Days)
+"-"+Text(highest_10Days)+"-"+Text(Lowest_10Days)+"-"+Text(dj)+"-"+Text(kj)+"-"+Text(A)+"-"+Text(M)+"-"+Text(dzs)+"-"+Text(kzs));
End |
|