Предотвратить вход Amibroker в тот же день, что и выход, в том же символе
Я пытаюсь создать систему на основе портфеля акций / акций, которая будет входить при открытии и, возможно, выходить в тот же день при закрытии, если условия будут выполнены. У меня это в основном работает. Единственное, чего я не могу добиться, так это того, что я хотел бы, чтобы в моей системе акций в любой момент времени была только одна открытая позиция в компании.
Похоже, что если есть выход и вход в один и тот же день, бэктестинг amibroker разрешает покупку одной и той же компании на открытии, если у той же компании есть ордер на продажу в тот же день. Вот пример этого:
Обратите внимание на точку 1 - мы будем входить на открытии 17-го числа. В точке 2 мы получаем сигнал на продажу в тот день, поэтому мы должны выйти на закрытии 24-го. Однако в пункте 3 - у нас есть запись для той же компании в тот же день.
Чтобы было ясно - я хотел бы разрешить несколько записей в один и тот же день - это работает. Единственное, что я хотел бы выяснить, - это запретить бэк-тестеру входить в одну и ту же компанию в тот же день, когда она выходит, так как из-за системных правил у нас будет один день с двумя позициями в одной компании.
Вот пример кода, чтобы повторить это:
SetOption("AllowSameBarExit", True );
SetOption("SettlementDelay", 1 );
Buy = C > MA(C,10);
Sell = C < MA(C,10) OR C > O;
// trade on todays open
SetTradeDelays( 0, 0, 0, 0 );
BuyPrice = Open;
SellPrice = Close;
SetPositionSize( 20, spsPercentOfEquity );
Я прочитал и перечитал страницу о сроках портфеля: здесь, но я все еще не могу понять, как запретить записи для той же компании в тот же день, что и выход. Любая помощь будет принята с благодарностью!
ОБНОВЛЕНИЕ Похоже, что использование OR C > O в состоянии SELL влияет на это. Если я удаляю часть OR C > O, я получаю правильное поведение. Это входит в следующий день. Теперь мне интересно, как использовать этот выход, не возвращаясь к тому же бару, входу и выходу той же компании...
1 ответ
Спасибо Tomasz от Amibroker за публикацию приведенного ниже решения:
SetOption("AllowSameBarExit", True );
BuyPrice = Open;
SellPrice = Close;
Buy = Ref( Close > MA( Close, 10 ), -1 );
Sell = Close > Open OR Close < MA( Close,10);
// removing buys you don't want
intrade = False;
for( i = 0; i < BarCount; i++ )
{
if( NOT intrade )
{
if( Buy[ i ] )
{
intrade = True;
// same bar sell
if( Sell[ i ] ) intrade = False;
}
}
else
{
if( Sell[ i ] )
{
intrade = False;
Buy[ i ] = False; // remove buy if exited this bar
}
}
}
Вы можете найти: подробное обсуждение здесь