?

Log in

No account? Create an account

jc_trader


JC-TRADER. Биржевые игры. Системные Спекуляции.


Previous Entry Поделиться Пожаловаться Next Entry
Эссе об "Амиброкер"
jc_trader
Все таки, чтобы правильно тестировать в Амиброкере, необходимо быть крайне подкованным и внимательным, так как могут вылезти такие несоответствия реальной торговле, от которых в других программах есть защита. Наверняка, поэтому и скорость тестирования из-за этого и превышает другие программы. Вот я, например, постоянно сверяю тесты в Амиброкере с Велслабом и если бы не было Велслаба, то почти каждый раз гарантированно неправильно протестировал бы в Амиброкере, то одно надо в настройках отметить, то в коде подправить . Кто является гуру в Амиброкере, тот, конечно же, уже знает как все сделать правильно. Но уверен, что новички точно делают что-нибудь неправильно и из-за этого системы либо выдают результаты с подглядыванием в будущее, либо с искаженными результатами, особенно в портфельных тестах.

Вот, например, вчера придумал новую систему в Велслабе. Протестировал на действующих акциях и убедился что результаты довольно привлекательны, по крайней мере на исторических тестах. Перекодировал в Амиброкер для того чтобы проверить на ВСЕХ существующих и выбывших акциях, протестировал и тест выдал равномерный и уверенный слив. Стал разбираться в чем проблема. Выяснилось следующее: 

В каждый момент времени может быть открыто восемь позиций из листа акций. Позиции закрываются на открытии следующей сессии, если есть сигнал на закрытие их. Если, например, было открыто восемь позиций и есть сигналы на закрытие двух позиций, то остается шесть позиций и имеем право на открытии следующей сессии закрыть две позиции и одновременно открыть две новых позиции (если есть сигналы на открытие, конечно). Это все в Амиброкере происходит корректно. Но если какие-то позиции закрываются по стопу в течении сессии, то реально к концу сессии будем иметь меньше восьми позиций. А Амиброкер же, закрывает позиции по стопу в течении сессии и вместо них сразу же открывает новые позиции  на открытии этой же сессии -- то есть смотрит в будущее. 

Наверное, есть какие-то настойки в Амиброкере чтобы предотвратить это безобразие, но новичок вряд ли заметит этот момент в массе сделок, особенно если их несколько десятков тысяч -- даже и не задумается что так может произойти. Вот у меня бы не было Велслаба, и не заметил бы я такое значительное расхождение в результатах теста, и даже не заподозрил бы подвох...... 
Метки:


  • 1
Кстати, если кто знает как избежать описанной конкретной проблемы, может раскрыть секрет. Если, конечно, решение простое. Если для этого надо писать циклы и сложные коды, то не надо заморачиваться :)

Да, структура системы такая:

---------------------------
SetFormulaName("Название");
SetPositionSize( 12, spsPercentOfEquity );
SetOption("MaxOpenPositions", 8 );
SetOption("InitialEquity", 100000 );
SetOption( "UsePrevBarEquityForPosSizing", 1 );
RoundLotSize = 1;

Setup = Условие Входа;
Entry = Точка Входа;
Buy = Ref(Setup, -1) AND Low < Ref(Entry, -1);
BuyPrice = Min(Ref(Entry, -1), Open);
PositionScore = Нечто;

Exit = Условие Выхода;
Sell = Ref(Exit, -1) OR BarIndex() == BarCount-1;
ApplyStop( 0, 2, 0.5 * ATR( 20 ), 1);
--------------------------------

В сеттинге задаю открытие и закрытие позиций на опене следующего дня.

(Анонимно)
В конце системы добавляю:
//Не входить в лонг на баре с выходом из шорта
Buy =Buy AND NOT Cover;
//не входить в шорт на баре в выходом из лонга
Short= Short AND NOT Sell;

Для стопов ставлю условие не выходить на первом баре
ApplyStop(stopTypeLoss , stopModePoint, IIf(Buy OR Short,100,PointLoss), 1, 1 );

Простого решения нет

(Анонимно)
Простого решения нет, виной всему функция ApplyStop, лучше ее вообще не использовать, а стоп эмулировать самому в условиях на выход, в большинстве случаев для этого проще написать цикл.

Re: Простого решения нет

Ну вот я так и подозревал.

Я кстати сегодня купил АМИ, чего-то оно мне больше сейчас нравится чем WLD и МЧ :)

Сижу в него Рашу заливаю :)

Your registration is for version 5.60 Professional
It also entitles you to receive FREE upgrades for 24 months since the date of purchase.

И Саппорт кстати в течении 5 мин отвечает, такие приветливые !

Как уже написал, с ним нужно быть ОЧЕНЬ и ОЧЕНЬ внимательным. Без предварительного теста в Велслабе я бы тесту в Амиброкер не особо бы доверял.

Млять чето эта ЖЖ-е тупит если код вставлять 6)

JC короче в Хелпе пишут, что типа Луупинг это старые методы граалиния

другими словами если код делать через цикл, он в 50-100 раз медлененей чем через масивы без цикла

Help -> Technical information -> Perfomance tuning tips

Только для меня не понятно с какого хрена так, массивы то тоже там расчитываются если индикатор какой-то идет....

Ну вот, я помню какую-то систему из интернета запустил в Амиброкере, а тест еле шевелится, еще медленнее чем в Велсе -- заглянул, а там цикл.

Я сейчас подрубил AMI х64 к ESignal RT х64 короче зверская штука получается, данные вобще моментом сливаются

Если делать Скан на интрадее 1 Мин!, вобще все моментом сканируется и доливается

Короче TS теперь и нах.. не нужна, и есть все и Пендосы и Европа

там кстати оказывается есть еще большой форум по АМИ, а я его и не видел :)

http://amisite.ru/phpBB2/index.php

Попробуйте поиграться с этими настройками:

SetOption("ActivateStopsImmediately", False );

SetOption("AllowSameBarExit", False );


//Выдержка из хелпа
http://www.amibroker.com/guide/afl/applystop.html

Scenario 1:
you trade on next bar OPEN and want to exit intraday on stop price

Correct settings:
ActivateStopsImmediately turned ON
ExitAtStop = 1
Trade delays set to one
Trade price set to open

Не помогает. Вот, на примере. Депозит разбит на 5 частей. То есть может открываться 5 позиций одновременно. Смотрим:

1

25 января открылось 5 позиций. 26 января 3 позиции закрылись по стопу в течении дня. И тем же днем 26 января на открытии сессии "вместо них" открылось 2 новых позиции. То есть, как бы знали заранее что позиции закроются по стопу.

  • 1