Реализация пирамидальности в Ами

  • Автор темы Morrowind
  • Дата начала

Morrowind

New member
Господа и дамы, программирующие на Ами, к вам вопрос:)
Все равно сейчас думаю почти никто не торгует, больше обсуждаем ситуацию на рынке и сопутствующие вопросы, так что может кто-то уделит внимание.
Так вот вопрос. Как реализовать "пирамидальность" в ами?
То есть например, в открывается поза в какое-то время на часть депо. С этого момента (бара?) нужно задать условие добавления позиции к уже существующей сделке. Например прохождение ценой в направлении сделки какого-то диапазона. Затем еще и еще. Ну по аналогии как добавить я наверное догадаюсь))
Надеюсь с размером позиции я разберусь сам. Кстати, как реализовать маржинальность в Ами? Пусть базовое депо 100000р например и требуется расчет системы с максимальным плечом 1:5. Система не обязательно должна нагружаться ВСЕГДА на такое плечо, но должна учитывать что такая возможность у нее есть.
И еще. У системы платинируется несколько стопов по условиям. То есть поза будет закрываться при реализации одного из условий стопов.
Опять же при построении пирамиды очевидно, что стопы будут двигаться вслед за позой.
Насколько легко это реализуемо?
Заранее всем спасибо за ответы.
 

YellowSubmarine

New member
Как реализовать "пирамидальность" в ами?
Поиск по pyramiding в хелпе ами поможет.

на www.amisite.ru есть переведенный на русский хелп.

что стопы будут двигаться вслед за позой.
Сам пытаюсь с этим разобраться. Безуспешно. Почему-то ApplyStop вообще не срабатывает при тестировании. И график стопов не выводит, рисует горизонтальную линию на нуле.
 

Morrowind

New member
Скачал help файл... какая то фигня. Все оглавление на русском, а там где должно быть описалово:
Недействительный адрес


Возможные причины:
Возможно, сделана опечатка в адресе.
Если вы щелкнули ссылку, возможно, что она устарела.

Попробуйте сделать следующее:
Заново введите адрес.

Перейдите на предыдущую страницу.
 

YellowSubmarine

New member
Нужно в проводнике встать на этот файл, клацнуть правой кнопкой мыши, выбрать Свойства, и нажать "Разблокировать файл"
 

Morrowind

New member
Сам шучу, сам смеюсь! Опять шучу опять удачно!
Вспомнил, что у меня такая проблема уже была и я (ну не совсем я:) ) ее решил, причем сам же об этом все написал, для тех у кого будет такая проблема.
http://www.russian-trader.ru/forum/viewtopic.php?t=3980
 

Morrowind

New member
Сам пытаюсь с этим разобраться. Безуспешно. Почему-то ApplyStop вообще не срабатывает при тестировании. И график стопов не выводит, рисует горизонтальную линию на нуле.
Я тут прочитал, когда стопы срабатывать начинают
Использование Equity( 1 ) активирует стопы и записывает их сигналы в массивы sell/cover. Кроме того Equity(1) удаляет все лишние (неторгуемые) сигналы.

В зависимости от типа стопа в массив sell/cover будут записаны различные величины. Это позволяет Вам различать сигналы сгенерированные правилами системы или стопами.

1 - обычный выход
2 - стоп лосс
3 - взятие прибыли (профит)
4 - скользящий стоп (трейлинг)
5 - стоп через n-баров
6 - потеря капитала

... правила Вашей системы...
ApplyStop( stopTypeTrail, stopModePercent, 10, True );
Equity( 1 );
WriteIf( sell == 1, "Regular exit",
WriteIf( sell == 4, "Trailing stop", "" ) );
Есть такая строчка в коде? Я понимаю, что это вроде как азы, но вдруг ты пропустил.
На счет пирамидинга все равно непонятно, как он возьмет цены, по которой пррошел первый сигнал или програма помнит по какой цене был первый сигнал на buy например?
 

YellowSubmarine

New member
Есть такая строчка в коде? Я понимаю, что это вроде как азы, но вдруг ты пропустил.
Рад был бы пропустить... Пробовал кучу разных вариантов, этот тоже. Не помогло. Вообще спасибо, вечером еще раз попробую, втупую скопирую код, посмотрю что получится.

На счет пирамидинга все равно непонятно, как он возьмет цены, по которой пррошел первый сигнал или програма помнит по какой цене был первый сигнал на buy например?
Тут к сожалению не помогу, ибо подробно и вдумчиво не разбирался с пирамидингом.
Мне обычно помогает вывод входов / выходов на график в виде стрелочек. Смотришь на график, нет стрелочки, а должна быть - значит ищешь ошибку в коде. Но это безотносительно пирамидинга.
 

Morrowind

New member
Тут к сожалению не помогу, ибо подробно и вдумчиво не разбирался с пирамидингом.
Мне обычно помогает вывод входов / выходов на график в виде стрелочек. Смотришь на график, нет стрелочки, а должна быть - значит ищешь ошибку в коде. Но это безотносительно пирамидинга.
Это я согласен, просто стрелочками и добавлением позы я ручками и сам могу посчитать систему. Но хочу написать чтобы сама машина считала, причем чтобы можно было менять параметры, а это я на бумажке запутаюсь...
 

YellowSubmarine

New member
Это я согласен, просто стрелочками и добавлением позы я ручками и сам могу посчитать систему. Но хочу написать чтобы сама машина считала, причем чтобы можно было менять параметры, а это я на бумажке запутаюсь...
Не, стрелочки не для того, чтобы удобнее считать руками, а чтобы удобнее отлаживать и находить ошибки в коде.

Первый вход осуществляется по условию Buy=УсловиеВходаВЛонг, а последующие входы уже как там в хелпе написано.
 

Morrowind

New member
Не, стрелочки не для того, чтобы удобнее считать руками, а чтобы удобнее отлаживать и находить ошибки в коде.

Первый вход осуществляется по условию Buy=УсловиеВходаВЛонг, а последующие входы уже как там в хелпе написано.
хм... Хорошая идея!!! Спасиб, буду пробовать.
 

tserg

New member
Серег, я сам мучался с такой проблемой. Пытался построить Черепах на ами. В результате ничего не получилось, нигде подходящую инфу не нашел, а сам не догадался.
Поэтому я пошел по другому пути, написал полную систему (с юнитами, передвигающимися стопами) на VBA в Excel. Правда там тоже гемор с закачкой истории из таблицы. Я закачиваю пятиминутки, из них режу дни и обрабатываю, но толька закачка по 6 бумагам истории с 2001 г. занимает ~45 мин.
В результате я остановился на таком решении: простую систему оптимизирую в ами, нахожу оптимальные параметры и заганяю их в свою прогу.
Если ты найдешь ответы на свои вопросы по ами, кинь их сюда плз :). Думаю интересно будет не только для меня :)
 

Andres

New member
Могу подсказать направление в котором дальше надо думать. Я реализовывал пирамидинг в Ами давно, всех нюансов уже не помню, зависит от самой системы. У меня была пробойная система, (и если рассматривать только лонг) сигналы BUY могут возникать несколько раз подряд перед SELL.
Создаем несколько копий тикера, столько, сколько макс кол-во раз планируется добавляьтся к позиции: например GAZP_1, GAZP_2, ну и кладем их в какой нить отдельный вотчлист по которому и прогоняем систему, дальше чтобы не объяснять приведу код:


a3=Optimize("trail",7,5,10,1);
ps=33;
Long = Условие1;
Short_= Условие2;
/////////////////////////////////////////////////

if(Name()=="GAZP_1")
{
PositionSize=-ps;

Buy= Long;
Short =Short_;
Cover= Buy;
Sell=Short;
ApplyStop ( stopTypeTrailing,1,a3,1);
}

if(Name()=="GAZP_2)
{
PositionSize=-ps;

Bu= Long;
Shor =Short_;

bn=Sum(Bu,BarsSince(Shor));
sn=Sum(Shor,BarsSince(Bu));

Buy=bu AND bn==2;
Short=shor AND sn==2;

Sell=Shor;
Cover= Bu;

ApplyStop ( stopTypeTrailing,1,a3,1);
}
 

Andres

New member
Есть еще второй вариант, с одним тикером. Об этой идее я помоему на пауке читал. Суть такая, при первом сигнале входим как обычно, при втором (речь про лонг) нужно продать и купить по одной и той же цене, но увеличив positionsize. Но реализовать это в коде не просто.
 

Andres

New member
в AFL есть операторы sigScaleIn / sigScaleOut . Специально для пирамидинга вроде))
Отстал я от прогресса значит ))
Я как первый раз себе Ами поставил, так на новые версии и не переходил, в моей версии (4.5) этих операторов нету.
 

Morrowind

New member
Сам создал ветку и как-то не заходил, дел много было((
За код - огромное спасибо, может быть как-то освежит мои мысли)) Но через несколько тикеров мне кажется это как-то изподвыподверта:) Должно быть какое то нормальное решение без изголения, вот как раз выходные будут, отосплюсь может какая идея, как Менделеева посетит во сне.

Операторы то эти есть, вопрос как их прикрутить стоит.
Надо будет может в сети примеры поискать.

Серег, система моя новая похожа на Черепах, но есть нюансы и отличия, но пирпмидинг - это общее что у них есть. В Экселе не силен, я вообще не понимаю как вы там программируете, шо такое VBA даже не подозревая, MBA знаю, а вот VBA нет:) Если у меня что-то получится, то выложу сюда конечно, может быть не весь код, а эту часть.
В принципе есть мысли уже, нашел очень нужный оператор flip, с помощью которого можно убрать множественные повторения сигналов. Ну например если цена раз за разом пробивает какой-то уровень, а я и так в позе. Теперь думаю "как поставить служить народу разрушительную энергию атома":) То есть в какой то период разрешить еще раз сигнал на Buy, а потом чтоб только выход был.
 

YellowSubmarine

New member
Ага, разобрался, пирамидит

нормальное решение без изголения
Код:
SetPositionSize(1, spsShares);

b = Close>SAR() AND Ref(Close,-1)<Ref(SAR(),-1)  ;
s = Close<SAR() AND Ref(Close,-1)>Ref(SAR(),-1) ;

bScale = SAR()>Ref(SAR(),-1) AND Close>SAR();
sScale = SAR()<Ref(SAR(),-1) AND Close<SAR();

Buy = IIf(b!=0, 1, IIf(bscale!=0,sigScaleIn,0)) ;
Sell = IIf(s!=0, 1, IIf(sScale!=0,sigScaleIn,0)) ;


Short = Sell;
Cover = Buy;

Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);

Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);

PlotOHLC(O,H,L,C,"Price", colorBlack) ;
Plot(SAR(), "SAR", colorRed, styleDots | styleNoLine) ;

shape = b * shapeUpArrow + s * shapeDownArrow;
PlotShapes( shape, IIf( b, colorGreen, colorRed ), 0, IIf( b, Low, High ) );


shape = IIf(bScale, shapeHollowUpArrow, IIf(sScale,shapeHollowDownArrow,0));
PlotShapes( shape, IIf( bScale, colorGreen, colorRed ), 0, IIf( bScale, Low, High ) );
Вход в позицию: при переворачивании SAR. С каждым баром увеличение позиции до тех пор, пока SAR не перевернется. При переворачивании вход в противоположную позу и опять пирамидим.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху