Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как определить цену сделки Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
tvilsa
Гость





СообщениеДобавлено: Чт Ноя 06, 2008 11:12 am Ответить с цитатой Вернуться к началу

Начал изучать ами.
По учебнику сделал МТС с пересечением средней и цены.
Хотелось бы расширить возможности системы и потому вопрос:
Как определить цену сделки при выполнении условия покупки.
Т.е. стоит
Buy=......
Как мне в программе узнать по какой цене произошла покупка.
Заранее спасибо.
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 06, 2008 11:45 am Ответить с цитатой Вернуться к началу

Цена покупки определяется массивом Buyprice. Соответственно цена закрітия покупки SellPrice, цена короткой продажи Shortprice и цена закрітия короткой продажи.
Следует иметь ввиду, что в общем случае цена сделки должна входить в диаппазон бара на котором произошла сделка т.е. біть не ниже минимума и не віше максимума.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
tvilsa
Гость





СообщениеДобавлено: Чт Ноя 06, 2008 2:55 pm Ответить с цитатой Вернуться к началу

Видимо я не правильно спросил
BuyPrice я так понял лимитирует цену сделки а мне надо
определить по какой конкретно цене выполнилась операция Buy.
Я хочу добавить к стратегии

Ps = Optimize("P_slow", 13, 10, 20, 1);
Pf = Optimize("P_fast", 2, 2, 9, 1);

Buy = Cross(EMA(C,Pf ), EMA(C,Ps ));
/* покупка когда быстрая МА пересекает медленную МА снизу вверх и средняя цена за последний бар больше средней цены за предпоследний бар*/
Sell = Cross(EMA(C,Ps ),EMA(C,Pf ));
/* продажа когда быстрая МА пересекает медленную МА сверху вниз */

что бы продавалось также не только при пересечении средних на и при превышении текущей ценой цены покупки на величину ххх. для фиксации прибыли.
Попробывал так
a=Buy+0.1; /* а равно цена окупки +0.1 */
Sell = Cross(EMA(C,Ps ),EMA(C,Pf )) OR Close[ BarCount - 1 ] > a;
не получается. по отчету после покупки сразу продажа. Почему?
Чейто закралось подозрение пока писал что Buy хранит величину ввсей сделки тобишь цена на кол-во?
Как мне учесть при продаже изменение цены относительно окупки?
Заранее спасибо.
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 06, 2008 11:48 pm Ответить с цитатой Вернуться к началу

Прочитай про функцию ApplyStop() Она может делать подобные вещи. Будут вопросы - спрашивай.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
tvilsa
Гость





СообщениеДобавлено: Пт Ноя 07, 2008 8:51 am Ответить с цитатой Вернуться к началу

Попробывал так

////////// Правила системы ///////////////

Buy = Cross(EMA(C,2 ), EMA(C,13 ));
/* покупка когда быстрая МА пересекает медленную МА снизу вверх и средняя цена за последний бар больше средней цены за предпоследний бар*/
Sell = 0;

ApplyStop( stopTypeProfit, stopModePercent, 1.05,2, False ,0 ); /* типа снять профит 1.05 процента*/

Short=0;
Cover=0;

///////////// Рисуем всякое ///////////////


Plot(C,"price",1,128);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);

на графиках только точки входа, а выхода нет.

а вот так работает

priceatbuy=0;

for( i = 0; i <BarCount> 0 && SellPrice[ i ] > 1.01 * priceatbuy )
{
Sell[ i ] = 1;
SellPrice[ i ] = 1.01 * priceatbuy;
priceatbuy = 0;
}
else
Sell[ i ] = 0;
}

в чем дело?
Заранее благодарен
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Ноя 07, 2008 9:04 am Ответить с цитатой Вернуться к началу

Для того чтобы ApplyStop() сработала в индикаторе необходимо в код добавить функцию Equity(). Почитай про неё в хелпере, там есть коментарий Томаша, что при срабатывании стопов в массив сделок (Buy, sell) будет записана не 1. Соответственно и PlotShapes() можно сделать подругому.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
tvilsa
Гость





СообщениеДобавлено: Пт Ноя 07, 2008 9:30 am Ответить с цитатой Вернуться к началу

Есть еще один трабл.
Делаю МТС из Ами и квика
вопрос такой.
Если условие покупки наступает несколько раз без наступления условия продажи то ами делает две покупки.
Как ограничить систему что если один раз купила то больше не покупать пока не продаст предыдущие.
tvilsa
Гость





СообщениеДобавлено: Пт Ноя 07, 2008 9:57 am Ответить с цитатой Вернуться к началу

сделал вот так

Sell = 0;
ApplyStop( stopTypeProfit, stopModePercent, 1.01,2, False ,0 ); /* типа снять профит 1.01 процента*/

Short=0;
Cover=0;

////// Убираем лишние сигналы /////////////

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

///////////// Рисуем всякое ///////////////

Plot(C,"price",1,128);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);

Equity(1); // THIS EVALUATES STOPS
Plot(Sell==4,"ApplyStop Sell",colorRed,1|styleOwnScale);

как небыло точек продажи так и нет
строка Plot(Sell==4,"ApplyStop Sell",colorRed,1|styleOwnScale);
добавляет линию на уровне 0

Не могли бы Вы написать как добавить на график точки продажи по исполненым стопам?
И правильно ли я записываю
ApplyStop( stopTypeProfit, stopModePercent, 1.01,2, False ,0 );
для выставления тайк профита на величину 1% от сделки?
Можно ли одновременно выставить условия продажи по стоп лосс и тай профит?
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Ноя 10, 2008 9:19 am Ответить с цитатой Вернуться к началу

Интересно, а почему в коде Sell = 4. При взятии профита sell будет равен 3.
Далее кусок кода
Код:

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

Он удаляет "лишние" сигналы. Но у Вас написано Sell = 0;, а стопы еще не работают, поэтому сигналов sell нет и оответственно сработает только первый сигнал Buy.
И еще нюансик. у Вас
Код:

ApplyStop( stopTypeProfit, stopModePercent, 1.01, 2, False ,0 );

если ExitAtStop = 2, то это не стоп ордер (моментальное исполнение), а исполнение по обычному алгоритму в случае если была ситуация на остановку. Не знаю понятно ли написал...
Цитата:

Можно ли одновременно выставить условия продажи по стоп лосс и тай профит?

Можно писать сколько надо ApplyStop в которых перечислить все необходимые остановки.

В общем надо примерно так.

Код:

MA1 = MA(C, 10);
MA2 = MA(C, 30);

Buy = Cross(MA1, MA2);
Sell = 0;
ApplyStop( stopTypeProfit, stopModePercent, 1.01, 2, False ,0 ); /* типа снять профит 1.01 процента*/
ApplyStop( stopTypeLoss, stopModePercent, 1.01, 2, False ,0 ); /* типа стоп 1,01 процента */

Short=0;
Cover=0;

Equity(1); // THIS EVALUATES STOPS

////// Убираем лишние сигналы /////////////

Buy=ExRem(Buy,Sell);

///////////// Рисуем всякое ///////////////


Plot(C,"price",1,128);
Plot(MA1, "MA1", colorBlue);
Plot(MA2, "MA2", colorBlue);

PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);

PlotShapes(IIf(Sell == 3,shapeDownArrow,0),colorRed,0,Graph0,-15);
PlotShapes(IIf(Sell == 2,shapeDownArrow,0),colorRed,0,Graph0,-15);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Ноя 10, 2008 9:21 am Ответить с цитатой Вернуться к началу

Кстати. Если используете функцию Equity(), то убирать лишние сигналы при помощи ExRem вообще не надо, Equity() это и так делает.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
tvilsa
Гость





СообщениеДобавлено: Пн Ноя 10, 2008 9:43 am Ответить с цитатой Вернуться к началу

спасибо большое. все понятно сейчас попробую.

Все заработало. Еще раз спасибо.
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen