AS
Size: a a a
AS
Р
AS
Р
MО
AS
Р
MО
Р
for i := Max(fMAslow, fMAfast) to High(aOHLC) do
begin
if aOHLC[i].T < fTestFromDate then
Continue;
if not position.ActiveShort then
if (aMAvalue[i - 1][fMAslow] > aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] > aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] < aMAvalue[i][fMAslow]) then
begin
if position.ActiveLong then
begin
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerLong(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerShort(aOHLC[i].C, i);
end;
if not position.ActiveLong then
if (aMAvalue[i - 1][fMAslow] < aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] < aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] > aMAvalue[i][fMAslow]) then
begin
if position.ActiveShort then
begin
Inc(resultTotalClosedTrades);
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerShort(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerLong(aOHLC[i].C, i);
end;
{ MA }
if graphOut then
begin
if aMAvalue[i][fMAslow] > 0 then
slowMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAslow]);
if aMAvalue[i][fMAfast] > 0 then
fastMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAfast]);
end;
end;
Р
MО
for i := Max(fMAslow, fMAfast) to High(aOHLC) do
begin
if aOHLC[i].T < fTestFromDate then
Continue;
if not position.ActiveShort then
if (aMAvalue[i - 1][fMAslow] > aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] > aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] < aMAvalue[i][fMAslow]) then
begin
if position.ActiveLong then
begin
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerLong(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerShort(aOHLC[i].C, i);
end;
if not position.ActiveLong then
if (aMAvalue[i - 1][fMAslow] < aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] < aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] > aMAvalue[i][fMAslow]) then
begin
if position.ActiveShort then
begin
Inc(resultTotalClosedTrades);
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerShort(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerLong(aOHLC[i].C, i);
end;
{ MA }
if graphOut then
begin
if aMAvalue[i][fMAslow] > 0 then
slowMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAslow]);
if aMAvalue[i][fMAfast] > 0 then
fastMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAfast]);
end;
end;
Р
Р
Р
Р
AS
for i := Max(fMAslow, fMAfast) to High(aOHLC) do
begin
if aOHLC[i].T < fTestFromDate then
Continue;
if not position.ActiveShort then
if (aMAvalue[i - 1][fMAslow] > aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] > aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] < aMAvalue[i][fMAslow]) then
begin
if position.ActiveLong then
begin
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerLong(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerShort(aOHLC[i].C, i);
end;
if not position.ActiveLong then
if (aMAvalue[i - 1][fMAslow] < aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] < aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] > aMAvalue[i][fMAslow]) then
begin
if position.ActiveShort then
begin
Inc(resultTotalClosedTrades);
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerShort(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerLong(aOHLC[i].C, i);
end;
{ MA }
if graphOut then
begin
if aMAvalue[i][fMAslow] > 0 then
slowMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAslow]);
if aMAvalue[i][fMAfast] > 0 then
fastMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAfast]);
end;
end;
if aOHLC[i].T < fTestFromDate then
Continue;
?AS
for i := Max(fMAslow, fMAfast) to High(aOHLC) do
begin
if aOHLC[i].T < fTestFromDate then
Continue;
if not position.ActiveShort then
if (aMAvalue[i - 1][fMAslow] > aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] > aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] < aMAvalue[i][fMAslow]) then
begin
if position.ActiveLong then
begin
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerLong(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerShort(aOHLC[i].C, i);
end;
if not position.ActiveLong then
if (aMAvalue[i - 1][fMAslow] < aMAvalue[i][fMAslow]) then
if (aMAvalue[i - 1][fMAfast] < aMAvalue[i - 1][fMAslow]) and
(aMAvalue[i][fMAfast] > aMAvalue[i][fMAslow]) then
begin
if position.ActiveShort then
begin
Inc(resultTotalClosedTrades);
if aOHLC[i].T > fResultFromDate then
Inc(resultFromDateTotalClosedTrades);
PositionCloseTakerShort(aOHLC[i].C, i);
if aBalance[High(aBalance)].Sum < 1 then
Break;
if aBalance[High(aBalance)].Sum > resultBalanceMax then
resultBalanceMax := aBalance[High(aBalance)].Sum;
end;
PositionOpenTakerLong(aOHLC[i].C, i);
end;
{ MA }
if graphOut then
begin
if aMAvalue[i][fMAslow] > 0 then
slowMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAslow]);
if aMAvalue[i][fMAfast] > 0 then
fastMA.AddXY(aOHLC[i].T, aMAvalue[i][fMAfast]);
end;
end;
AS
aBalance[High(aBalance)].Sum
сколько раз используется? ;)Р
if aOHLC[i].T < fTestFromDate then
Continue;
?Р