Вопрос по ограничению кол-ва входов.

Подробнее
7 года 7 мес. назад - 7 года 7 мес. назад #902 от 7onkovalev
Есть замечательная статья про «Пирамидинг».
www.bot4sale.ru/blog-menu/ami/amibroker-.../353-pyramiding.html

Вот пример реализации «доливки»

Buy и увеличение + 1 лот = как только инструмент/индикатор делает новый максимум за день.
Sell и увеличение - 1 лот = как только инструмент/индикатор делает новый минимум за день.
SetPositionSize(1,spsShares);
s3= инструмент или индикатор;

	ND = DateNum()!= Ref(DateNum(), -1);

	temphi = Ref(HighestSince(ND,s3, 1),-1);
	Plot(temphi, "",colorGreen , styleNoRescale, Null, Null, 0, -1);

	templo = Ref(LowestSince(ND,s3, 1),-1);
	Plot(templo, "",colorRed , styleNoRescale, Null, Null, 0, -1);

	b1=Ref(Cross(s3,temphi),-1);
	Buy = Cover= IIf( b1, sigScaleIn, 0 );

	s1=Ref(Cross(templo,s3),-1);
	Sell = Short=IIf( s1, sigScaleIn, 0 );

BuyPrice = ShortPrice = CoverPrice = SellPrice = O;
Задача.
Как ограничить количество входов?
Скажем только первые три сигнала.

SetOption(“MaxOpenPositions",3) как я понимаю ограничивает количество торгуемых инструментов и не относится к количеству сделок по одному инструменту.

В режиме реальных торгов можно выводить в Amisharp кол-во открытых контрактов по инструменту и в зависимости от них прописать в формуле ограничение на кол-во входов, но на истории данный подход протестировать не получится.
На форуме Amisite данный вопрос поднимался но решения нет.

Форум Amisite

Может есть у кого свежие мысли по этому поводу?
Последнее редактирование: 7 года 7 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 7 мес. назад - 7 года 7 мес. назад #903 от admin
Что-то типа такого? (для убирания 4го и более подряд сигнала Buy)
BuyCounter = 0;
for (i = 0 ; i < BarCount ; i++)
	if (Sell[i])
		BuyCounter = 0;
	else if (Buy[i])
          if (BuyCounter == 3)
              Buy[i] = False;
          else
              BuyCounter++;
Последнее редактирование: 7 года 7 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
7 года 7 мес. назад #904 от 7onkovalev
Всё работает:
//=== ограничение на N входов =======
n = 3;
//=== ограничение Short ===
SellCounter = 0;
for (i = 0 ; i < BarCount ; i++)
if (Cover[i])
SellCounter = 0;
else if (Short[i])
if (SellCounter== n)
Short[i] = False;
else
SellCounter++;

//==== ограничение Buy ===

BuyCounter = 0;
for (i = 0 ; i < BarCount ; i++)
if (Sell[i])
BuyCounter = 0;
else if (Buy[i])
if (BuyCounter== n)
Buy[i] = False;
else
BuyCounter++;
//===========
Admin - гений.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin