2017-02-05 23 views
0

Я хочу реализовать код afl, чтобы найти ограничение на ежедневные потери во внутридневной торговле. Я буду использовать код для backtesting около 200 дней. У меня есть следующий код, но он с ошибками.Amibroker: Daily Loss Limit

// identify new day 
dn = DateNum(); 
newDay = dn != Ref(dn,-1); 

// Daily Loss Limit 
dll = Optimize("dll", 0, 5, 10000, 5); 

EquityCount = 10000; 

for(i = 0; i < BarCount; i++) 
{ 
// signals 
Buy = ....; 
Sell = ....; 

diff = (Equity(1) - Ref(Equity(1), -1)); 
EquityCount = EquityCount + diff; 

// allow only dll 
Buy = Buy AND EquityCount > dll; 
} 

Любая помощь будет оценена по достоинству. Спасибо.

ответ

-1

Прежде всего, ваш код полностью неправильный. Вторая функция Equity() - это единая функция безопасности. Это устарело.

Вместо этого используйте собственный интерфейс backtest AmiBroker. См. Помощь AmiBroker.

+0

«Сначала ваш код совершенно неправильный». Если вы собираетесь сделать такое широкое заявление, было бы полезно проработать на нем. – ADyson

+0

Руководство AmiBroker уже подробно объясняет это! Например, «Понимание того, как работает AFL» и «Ошибки общего кодирования в AFL ». Переменные покупки и продажи - это массивы, а функции Equity и Ref - это функции массива. Поэтому для доступа к элементам массивов вам необходимо применять индексы. – fxshrat

+0

Итак, руководство объясняет это, но: а) вы не упомянули об этом в качестве справочного источника, и б) цель SO также заключается в создании хранилища знаний. Предоставьте ссылку на источник, а также сводку, сохраненную здесь, чтобы будущие читатели поняли - ссылки часто могут устаревать. См. Http://stackoverflow.com/help/referencing и http://stackoverflow.com/help/how-to-answer – ADyson