|
AmiSite.ru
Форум по Ами |
Автор |
Сообщение |
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
Всем привет, хочу спросить как определить предидущую сделку, был ли по ней доход или убыток? Мож есть у кого код, а то я совсем застрял |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
По правильному это делается при помощи 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
Откуда: Екатеринбург
|
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
|
Цитата: |
а как на любом баре получит инфу о состоянии предыдущей закрытой сделки т.е. цену входа/выхода, закрылся ли по стопу или реверсной позой и т.д. пытаюсь написать функцию |
Чесно говоря я не понял логику....
Имхо проще всего так
Код: |
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
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
| |