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



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

СообщениеДобавлено: Вт Июн 24, 2008 1:29 pm Ответить с цитатой Вернуться к началу

Всем привет, хочу спросить как определить предидущую сделку, был ли по ней доход или убыток? Мож есть у кого код, а то я совсем застрял
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

По правильному это делается при помощи Advanced Porfolio Backtester Interface там для этот есть функция
Цитата:

double GetProfit()

retrieves current dollar (point) profit of the trade

Но можно и по простому. Сначала функцией Equity() формируешь массивы сделок, затем функцией ValueWhen() получаешь цену открытия и закрытия последней сделки и сравнивая узнаешь профит был или убыток. Это надо делать отдельно для длинных и коротких сделок.

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



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

СообщениеДобавлено: Ср Июн 25, 2008 10:39 am Ответить с цитатой Вернуться к началу

000 писал(а):
Но можно и по простому. Сначала функцией Equity() формируешь массивы сделок, затем функцией ValueWhen() получаешь цену открытия и закрытия последней сделки и сравнивая узнаешь профит был или убыток. Это надо делать отдельно для длинных и коротких сделок.


а как на любом баре получит инфу о состоянии предыдущей закрытой сделки т.е. цену входа/выхода, закрылся ли по стопу или реверсной позой и т.д. пытаюсь написать функцию

function GETLASTPOS(Direct) // 1-ищем лонг -1- ищем шорт
{OpenPos=0;
bi = BarIndex();
// CurrBar = SelectedValue( bi ) - bi[ 0 ]; // здесь берем выбранное
// мышью значение бара
Currbar = bi;
if (Direct==1) {
for( j = CurrBar-1; j > 0; j-- )
{ if (Buy[j]) {OpenPos=O[j]; break; }
if (Sell[j] OR Cover[j] OR Short[j]) {break;}
} }
if (Direct ==-1) {
for( j = CurrBar-1; j > 0; j-- )
{ if (Short[j]) {OpenPos=O[j]; break; }
if (Sell[j] OR Cover[j] OR Buy[j]) {break;}
} }
return OpenPos;
}

в таком виде дает ошибку, что массив нельзя юзать - надо переменную.
как получить номер _обрабатываемого_в_данный_момент_ бара, а не последнего или текущего (как в закоментареном примере - так работает, только неправильно показывает) ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июн 25, 2008 8:29 pm Ответить с цитатой Вернуться к началу

Цитата:
а как на любом баре получит инфу о состоянии предыдущей закрытой сделки т.е. цену входа/выхода, закрылся ли по стопу или реверсной позой и т.д. пытаюсь написать функцию

Чесно говоря я не понял логику....

Имхо проще всего так
Код:

Buy = Cross(MA(C, 5), MA(C, 20));
Sell = Cross(C, MA(C, 5));

Equity(1);

result = ValueWhen(Sell, SellPrice) > ValueWhen(Sell, ValueWhen(Buy, BuyPrice));
// result == 1 когда предыдущая сделка выиграла. В противном случае == 0
Plot(C, "", colorBlack, styleCandle);
PlotShapes(Buy*shapeUpArrow, colorGreen);
PlotShapes(Sell*shapeDownArrow, colorRed);
Plot(result, "", colorBlue, styleHistogram|styleOwnScale);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen