Евгений Макеев
Евгений Макеев личный блог
02 июня 2014, 13:38

Тест системы Монетка. Грааль опять ускользнул.

Тест системы Монетка. Грааль опять ускользнул.


Несколько раз обсуждалась система монетка, предложенная  уважаемым «Алексей».  Здесь например
smart-lab.ru/blog/181103.php
 Система  входит случайно на открытии — направление выбираем подбрасыванием монетки. Закрываемся на закрытии первого убыточного  дня.
Я прогнал данную систему на фьючерсе RTS  за 10 лет — 10 контрактов. Получилось вобщем-то то, что и должно было получиться, а именно — какой вход, такие и результаты. Здесь результаты на дневках, на часовиках в приципе то же самое. Так же гонял на корзине Ри и Си — аналогично  сливает.
На картинках эквити за 10  прогонов, а также общая диаграмма результатов за 50 прогонов. 
 Тест системы Монетка. Грааль опять ускользнул.

Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.
Тест системы Монетка. Грааль опять ускользнул.

Это диаграмка доходности за 50 прогонов:
Тест системы Монетка. Грааль опять ускользнул. 
Кому интересно код системки:

(Не пугайтесь это паскаль для древней WealthLab. Да я консерватор :) Оно же работает, зачем его менять!   )

var p: integer;
var enter_: integer;
var bar: integer;
for Bar := 20 to BarCount — 3 do
begin
// случайно выбираем направление входа переменная enter_
enter_ := randomint(2);
if not LastPositionActive then //Open positions 
// вход long
begin
if enter_ = 1 then
begin
BuyAtlimit( Bar + 1,priceopen(Bar+1), 'long' );
end;
end;
if not LastPositionActive then
// вход short
begin
if enter_ = 0 then
begin
ShortAtlimit( Bar + 1, priceopen(Bar+1), 'short' );
end;
end;
if LastPositionActive then // Close positions 
begin
p := LastPosition;
if PositionLong( p ) then
begin
if priceopen(Bar+1) > priceclose( Bar+1) then SellAtClose( Bar + 1, p, 'exit' );
end;
if PositionShort( p ) then
begin
if priceopen(Bar+1)< priceclose( Bar+1) then CoverAtclose( Bar + 1, p, 'exit' );
end;
end;
end;


В общем случайный подход не грааль.


Но! И здесь те, кто дотерпел  до конца получат маленький бонус. Данный тест и системка, у меня, скажем так, побочный продукт производства.
Если ваша система имеет некие праметры входов, выходов и Вы видите, что качественный результат колеблется в определенном промежутке этих параметров, у вас есть два пути — оптимизация (подгон под историю ) или воспользоваться этой идеей.
Как, думаю Вы догадались. Проверено — это работает очень хорошо.
 
33 Комментария
  • Aleksandr On
    02 июня 2014, 14:00
    А что значит 50 прогонов?
  • Oleg
    02 июня 2014, 14:08
    не лень вам было это изучать… чудес не бывает ))

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн