Можете эту реализацию взять, так-же сортирует по тикетам
Конечно возьмём Спасибо! Но как я уже сказал первый код меня устраивает ваш код использую так, Сейчас всего открыто ордеров шт 12, проверял через Print
POP_2 возвращает время последнего открытого соответственно его профит
double POP_2(int index=0)
{
double p[];
int c=-1,pr=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(OrderSymbol()==Symbol())
{
c++;
ArrayResize(p,c+1);
p[c]=OrderProfit()+OrderSwap();
pr=c>=index?index:c; // если открытых меньше, чем указано в выборе по индексу, то выведет профит самой первой открытой
}
}
}
}
return(c==-1?0:p[pr]);
}
POP_1 предпоследний по времени возвращает соответственно его профит
double POP_1(int index=1)
{
double p[];
int c=-1,pr=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(OrderSymbol()==Symbol())
{
c++;
ArrayResize(p,c+1);
p[c]=OrderProfit()+OrderSwap();
pr=c>=index?index:c; // если открытых меньше, чем указано в выборе по индексу, то выведет профит самой первой открытой
}
}
}
}
return(c==-1?0:p[pr]);
}
Конечно возьмём Спасибо! Но как я уже сказал первый код меня устраивает ваш код использую так
Я Вам показываю несколько реализаций, а Вы для себя возьмите на вооружение работу с массивами, в предыдущей был двухмерный массив.
Если заменить:
// тут идёт сортировка к последнимArraySort(p, WHOLE_ARRAY, 0, MODE_DESCEND); // сортируем по убыванию// а вот тут от более старых к новымArraySort(p, WHOLE_ARRAY, 0, MODE_ASCEND); // сортируем по возрастанию
Я Вам показываю несколько реализаций, а Вы для себя возьмите на вооружение работу с массивами, в предыдущей был двухмерный массив.
Если заменить:
// тут идёт сортировка к последнимArraySort(p, WHOLE_ARRAY, 0, MODE_DESCEND); // сортируем по убыванию// а вот тут от более старых к новымArraySort(p, WHOLE_ARRAY, 0, MODE_ASCEND); // сортируем по возрастанию
ArraySort
Сортирует многомерный числовой массив по возрастанию значений в первом измерении.
bool ArraySort( void&array[]// массив для сортировки );
Параметры
array[]
[in][out] Числовой массив для сортировки.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Примечание
Массив всегда сортируется по возрастанию, независимо от значения флагаAS_SERIES.
Функции ArraySort и ArrayBSearch принимают в качестве параметра массив любой размерности, при этом сортировка и поиск происходят только по первому (нулевому) измерению.
В таком случае предпоследний по времени не 1
____________________________________________________________________
2016.08.16 15:30:30 -------------->"0"
2016.08.16 15:30:31 -------------->"1"
2016.08.16 15:30:38 -------------->"2"
2016.08.16 15:34:38 -------------->"3" предпоследний
2016.08.16 15:39:38 -------------->"4"
и т д
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
OrderProfit() предпоследнего ордера
Vladimir Deryagin, 2016.08.15 23:38
Как можно получить OrderProfit() предпоследнего открытого ордера, пробую как на примере с низу даёт OrderProfit() только последнего
t=OrderOpenTime();Равно времени последнему открытому ордеру
__________________________________________
2016.08.16 15:30:30 -------------->"0"
2016.08.16 15:30:31 -------------->"1"
2016.08.16 15:30:38 -------------->"2"
2016.08.16 15:34:38 -------------->"3" предпоследний
2016.08.16 15:39:38 -------------->"4" t
По крайней мере Равно времени последниму открытому ордеру
По крайней мере Равно времени последниму открытому ордеру
Можете эту реализацию взять, так-же сортирует по тикетам
По крайней мере Равно времени последниму открытому ордеру
Можете эту реализацию взять, так-же сортирует по тикетам
Конечно возьмём Спасибо! Но как я уже сказал первый код меня устраивает ваш код использую так, Сейчас всего открыто ордеров шт 12, проверял через Print
POP_2 возвращает время последнего открытого соответственно его профит
POP_1 предпоследний по времени возвращает соответственно его профит
Конечно возьмём Спасибо! Но как я уже сказал первый код меня устраивает ваш код использую так
Я Вам показываю несколько реализаций, а Вы для себя возьмите на вооружение работу с массивами, в предыдущей был двухмерный массив.
Если заменить:
посмотрите , что покажет алерт?
Я Вам показываю несколько реализаций, а Вы для себя возьмите на вооружение работу с массивами, в предыдущей был двухмерный массив.
Если заменить:
Я Вам показываю несколько реализаций, а Вы для себя возьмите на вооружение работу с массивами, в предыдущей был двухмерный массив.
Если заменить:
ArraySort
Сортирует многомерный числовой массив по возрастанию значений в первом измерении.
bool ArraySort(
void& array[] // массив для сортировки
);
Параметры
array[]
[in][out] Числовой массив для сортировки.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Примечание
Массив всегда сортируется по возрастанию, независимо от значения флага AS_SERIES.
Функции ArraySort и ArrayBSearch принимают в качестве параметра массив любой размерности, при этом сортировка и поиск происходят только по первому (нулевому) измерению.
Я спорить с вами не буду если бы этот код работал как надо, я не обратился к тем кто в этом разбирается. )))