全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
开仓-持仓-限制开仓次数
2023-07-19 12:59


Params

Numeric FastLength(8); // 快速均线周期

Numeric SlowLength(40); // 慢速均线周期

Numeric RiskLength(2); // 止损通道的周期数

Numeric ProfitFactor(2); // 止盈相对止损的倍数


Vars

Numeric MA_Fast; // 快速均线

Numeric MA_Slow; // 慢速均线

Numeric MyRange; // K线波动范围

Series<Bool> Condition1; // 条件1

Series<Bool> Condition2; // 条件2

Numeric HH; // 周期的高点

Numeric LL; // 周期的低点

Numeric LongRisk; // 止损时的风险额


Events

OnBar(ArrayRef<Integer> indexs)

{


// 计算及输出均线指标

MA_Fast = Average(Close,FastLength);

MA_Slow = Average(Close,SlowLength);

PlotNumeric(\"Ma_Fast\",MA_Fast);

PlotNumeric(\"Ma_Slow\",MA_Slow);

// 每根K线的波动范围

MyRange = High - Low;

// K线形态判断的2个条件

Condition1 = Close <= Low + 0.25 * MyRange;

Condition2 = Close >= High - 0.25 * MyRange;


// 计算周期的高低点

HH = Highest(High,2);

LL = Lowest(Low,RiskLength);

// 开仓

If(MarketPosition == 0 And Condition1[2] And Condition2[1] And Close[1] > MA_Fast[1] And Close[1] > MA_Slow[1] And Vol > 0)

{

If(High >= HH[1] + MinMove * PriceScale)

{

Buy(0, Max(Open,HH[1] + MinMove * PriceScale));

LongRisk = LL[1] - MinMove * PriceScale;

}

}

// 平仓

If(MarketPosition == 1 And BarsSinceEntry > 0 And Vol > 0)

{

// 止盈

If(High >= EntryPrice + ProfitFactor * (EntryPrice - LongRisk))

{

Sell(0, Max(Open,EntryPrice + ProfitFactor * (EntryPrice - LongRisk)));

}

// 止损

Else If(Low <= LongRisk)

{

Sell(0, Min(Open,LongRisk));

}

}

}


为什么在持仓1手每平仓之前,还会持续开仓??MarketPosition == 0这个条件不是明显说明持平才能开仓,为啥实盘就会出现连续性开仓。即使有开仓信号,这个MarketPosition != 0了,也可以决定他不开仓。如果是持仓函数用的不对,请给一个实例示范代码,多谢!!!


kyover

maketposition判断的是图表上的持仓 不是你账户里的持仓

2023-07-19 13:02
muyiqihuo151290
@kyover

用那个函数替换maketposition,劳驾您给一个示范实例

2023-07-19 13:14
kyover
@muyiqihuo151290

这种案例都非常复杂,写不了简单的

你要想控制账户实际持仓要考虑非常多的问题,要学会账户函数一整套的使用,学会onorder,onposition,onfill等订单驱动的使用。

可以看看下面这个视频

https://www.bilibili.com/video/BV1Ma411o7nb/?spm_id_from=333.999.0.0

2023-07-20 08:50
您未登录,请先 登录注册 后发表评论
顶部