今天我在wld3环境下,$imulator中,chartscript 选8913 channel breakout,simuscript用以下非常简单的代码: var EqPct, PositionSize: integer; var Equity: float; EqPct := 5; Equity := Equity( BarCount -1); PositionSize := trunc(Equity*EqPct/100/ 5000); SetPositionSizeShares(PositionSize); 但是却无法顺利通过,显示simuscript中有错,就错在那个equity函数,错误原因是: SimuScript Error: (SimuScript Error) Line: 7 Col: 20: List index out of bounds (1522) 真奇怪,我记得以前好像没有什么问题的,各位帮忙试试看能不能用? PS: 下边有那个8913 channel breakout的script: var Bar: integer; for Bar := 90 to BarCount() - 1 do begin if LastPositionActive() then if PositionLong(LastPosition() ) then SellAtStop( Bar + 1, Lowest( Bar - 1, #Low, 13 ), LastPosition(), '' ); if not LastPositionActive then ShortAtStop( Bar + 1, Lowest( Bar - 1, #Low, 89 ), '') else if LastPositionActive() and not PositionLong( LastPosition() ) then CoverAtStop( Bar + 1, Highest( Bar - 1, #High, 13 ), LastPosition(), '' ); if not LastPositionActive then BuyAtStop( Bar + 1, Highest( Bar - 1, #High, 89 ), '' ); end;
更正一下,那个simuscript有两个硬伤,修改一下。 var EqPct, PositionSize: integer; var fEquity: float; EqPct := 5; fEquity := Equity( BarCount -1); PositionSize := trunc(fEquity*EqPct/100/ 5000); SetPositionSizeShares(PositionSize);