robot_bsk
robot_bsk личный блог
02 июня 2014, 11:44

Глаза обманывают или почему надо все тестировать

Год назад пришел ко мне клиент и говорит: «Хочу робота для Quik».
Объяснил стратегии — очень простую:
Берем фьючерс на доллар-рубль Si, таймфрейм 30 или 60 минут, строим машку.
Ниже нее еще одну на 1-2% ниже, Выше -соответсвенно, т.е. получаем канал из трех машек.
От верхней шортим, от нижней лонгуем.
Система реверсная — переворотная.
Я клиента спрашиваю — стопы нужны?
Он — зачем, все равно все возвращается к средней, а стопы постоянно будут выбивать.
Я спрашиваю, надо ли тестировать систему?
Он — зачем я и так глазами вижу, что система прибыльная и будет колбасить мне бабло, т.к. очень много прибыльных сделок.

Я все таки уговорил его посидеть 30 минут и подождать, накидал в wealth-lab код и показал ему результаты:

Глаза обманывают или почему надо все тестировать

66% прибыльных сделок, т.е. 2 из 3-х  -  круто, но система, то сливает:

Глаза обманывают или почему надо все тестировать

Я говорю клиенту, что во флете он зарабатывает часто и по чуть-чуть, а в трендах очень сильно сливает.
Давайте перевернем систему:

Глаза обманывают или почему надо все тестировать
Всего 33% прибыльных сделок, но система зарабатывает:

Глаза обманывают или почему надо все тестировать

В итоге клиент вообще отказался от робота, т.к. его система сливает,
а наоборот он не готов был психологически торговать, при 1-й прибыльной сделке из 3-х.

P.S. Прежде чем торговать на реал, нужно тестировать стратегию в специализированном ПО (wealth-lab, amibroker и т.д.)
      или если не умеете програмить, то на бумаге или в Excel.

P.S.S. Код:
{#OptVar1 20;8;30;2}
{#OptVar2 2;1;20;1}
var Bar,MA,MAD,MAU:integer;
MA:=EMASeries(#Close,#OptVar1);
MAD:=CreateSeries;
MAU:=CreateSeries;
for Bar := 100 to BarCount — 1 do begin
@MAD[bar]:=@MA[bar]*(1-#OptVar2/1000);
@MAU[bar]:=@MA[bar]*(1+#OptVar2/1000);
if LastShortPositionActive then
if CoverAtStop( Bar, @MAU[bar-1],LastPosition, 'Sell' ) then
BuyAtStop(Bar, @MAU[bar-1], 'Short' );
if LastLongPositionActive then
if SellAtStop (Bar, @MAD[bar-1],LastPosition,'Cover' ) then
ShortAtStop (Bar, @MAD[bar-1],'Buy' );
if not lastpositionactive then begin
ShortAtStop(Bar, @MAD[bar-1], 'Short1' );
BuyAtStop (Bar, @MAU[bar-1],'Buy1' );
end;
end;
PlotSeries( MAD, 0, #Red, #Thick );
PlotSeries( MA, 0, #Blue, #Thick );
PlotSeries( MAU, 0, #Green, #Thick ); 
58 Комментариев
  • Лучше бы сделал робота, добавил бы ликвидности, да и что пилить))
  • Cokol23
    02 июня 2014, 12:27
    «Всего 33% прибыльных сделок, но система зарабатывает:»

    так это на истории зарабатывает, а на реале сливать скорее всего будет. 99%
  • SHCHUTUSHCHA
    02 июня 2014, 12:30
    клиент правильно все говорит, стопы не нужны да и робота тестить это только время зря тратить
  • home30
    02 июня 2014, 12:30
    А как это МАшка на 1-2% ниже, просто с другим периодом что ли? Или сами считаете среднюю цену и отбрасываете 1-2%?

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

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