> хорошая ф-ция
На самом деле плохая ф-ция: в тестировании читаются нули, хотя параметр тестирования "Начальный капитал"=10000.
function Initialize()
{
...
AddGlobalVariable("Cnt", Types.Int, 0);
AddGlobalVariable("MoneyStart", Types.Double, 0.0);
AddGlobalVariable("Money", Types.Double, 0.0);
}
function OnUpdate()
{
if(Cnt==0)
{
MoneyStart=GetMoney();
LogFile=String.Format("D:\\ADdebug\\{0} Period={1} Np={2:F2} Nc={3:F2} TP={4:F3}.txt", StrategyName, Period, Np, Nc, Target);
WriteLine(LogFile, String.Format("MoneyStart: {0}", MoneyStart));
}
Cnt++;
Money=GetMoney();
...
WriteLine(LogFile, String.Format("{0:dd/MM/yy} {1}", BarDate(), BarTime()));
WriteLine(LogFile, String.Format("Price:{0:F2} PriceDer:{1:F2} PriceInd:{2:F2} Cap:{3:F2} CapInd:{4:F2} Money:{5}",
Price, PriceDer, PriceInd, Cap, CapInd, Money));
}
Лог:
MoneyStart: 0 // при первом вызове
11.12.18 10:00:00 // при последующих вызовах
Price:192,32 PriceDer:0,04 PriceInd:0,00 Cap:55922,40 CapInd:0,00 Money:0
11.12.18 10:03:00
Price:192,56 PriceDer:0,20 PriceInd:0,10 Cap:173145,50 CapInd:46889,24 Money:0
В чем проблема? У вас в режиме тестирования это точно работает?..
> чем не устраивают RealizedPL()?
"RealizedPL() – возвращает текущий реализованный доход по закрытым сделкам." (в деньгах, AFAIUI)
ОК, но сколько это %% по отношению к исходной сумме?
Правильно, 100*RealizedPL()/GetMoney(на старте).
Но GetMoney-то почему-то в тестировании 0...