Полезные функции от KimIV - страница 60

 

Уважаемый Kim, огромное спасибо за Вашу работу. мне облегчают жизнь написанные вама функции.

Нет ли в Вашем арсенале функции, возвращающей суммарный убыток всех последовательных закрытых убыточных сделок. Допустим три последние сделки закрылись в убыток, нужно узнать суммарный убыток по ним в валюте депозита. Уточню - именно последовательные последние убыточные сделки.

Буду благодарен за помощь, думаю и другим подобная функция может пригодиться

 

KimIV

Пытался подключить ваши функции в советник. компилятор пишет такую гадость: Function "ClosePositions" is not referenced and will be removed from exp-file

Function "ExistPositions" is not referenced and will be removed from exp-file

Function "ManagePositions" is not referenced and will be removed from exp-file ...........................

В чем может быть косяк?




 
WroC писал(а) >>
компилятор пишет: Function "ClosePositions" is not referenced and will be removed from exp-file

В чем может быть косяк?

Это не косяк. Это предупреждение, что функция не используется и поэтому нет смысла компилировать её код.

 

Игорь!

Есть ли какие наработки или просто мысли насчёт функций временнОго фильтра?

таких как например: за текущий месяц, день, неделю...

или там: за предыдущий месяц, день, неделю, квартал...

*

В идеале конечно видится так:

// FuncStPeriod(int Per, int Val)
// Где:
// Per = 0-день, 1-неделя, и т.д...
// Val = 0-текущие, 1-прошедший

// пример использования для выбора ордеров за период
if(FuncStPeriod(1, 0)) ...

сорри, но сам вижу что ничего не выходит...

А может и модель фильтрования выбрал неверно...

В общем пока в тупике... причём во всех смыслах этого слова... :)))

 

Вы, Василий, неполиткорректны! Вход указали, а где же выход?

 

Да вот нутром чую что 0.5+0.5 будет литр!

а задачу решить не могу... (с) )))

*

Буду весьма признателен за примеры выборок ордеров из истории по их веремени.

*

А это:

// FuncStPeriod(int Per, int Val)
// Где:
// Per = 0-день, 1-неделя, и т.д...
// Val = 0-текущие, 1-прошедший


// пример использования для выбора ордеров за период
if(FuncStPeriod(1, 0)) ...
*

написано мной неверно, точнее без пояснения...

выделеное это просто параметры что могут быть у функции.

а ниже именно пример применения этой функции...

ЕСЛИ время ордеров РАВНО (попадает) периоду ФИЛЬТРА

...

 

Василий, Вы опять про вход. На выходе что хотите иметь и в каком виде?

 

аааа...

Точно... вот оно место моей логической ошибки...

Функция то вернёт ЧТО-ТО, например число 123456

А нужно для фильтра С и ПО (ну или ОТ и ДО, не суть...)

*

В общем, так-же как и фильтр истории счёта в МТ4.

Наверняка там формируется список циклом, например:

for( ...

if(ЗНАЧЕНИЕ1 > OrderCloseTime() > ЗНАЧЕНИЕ2)

...

*

Получается что функция должна вернуть строковое (?) значение для подстановки в фильтр if()

for( ...

if(FuncStPeriod(1, 0))

...

*

Блин. Сложно в описании...

Сам попутался и Вас напряг.

:(

 

Ну вот, Вы сами почти всё и сделали! Не надо никакого фильтра. Просто готовите два значения типа datetime, например dt1 и dt2. Организуете цикл по закрытым сделкам. Выбираете селектом ордера и проверяете их время закрытия, чтобы:

if (OrderCloseTime()>dt1 && OrderCloseTime()<dt2) {
  // что-то делаете с выбранным ордером
}
 

Игорь" да это-то понятно...

С того и начинал проработку этого вопроса.***

*

Однако задача в том, что-бы "заполнить" те самые dt1 и dt2 нужными значениями!

Например квартал, текущий. По идее функция должна вернуть на нечто подобное:

OrderCloseTime()>"01.10.2008" && OrderCloseTime()<"04.12.2008"

Взяв в качестве отправной даты - сегодня.

*

Конец функции FuncStPeriod(int Per, int Val) вижу таким:

FuncStPeriod(int Per, int Val)
{
string fsp;

//...
fsp="OrderCloseTime()>"+"dt1+" && OrderCloseTime()<"+dt2;
return(fsp);
}

***

Например "вычислялка" количества месяцев взад относительно текущего:

int KM()
{
int kolm;
kolm=(TimeLocal()-StrToTime("2007.10.01"))/2592000;
return(kolm-1);
} 

однако такой упрощёный подход имеет свою погрешность,

которая проявится тем, что возможно неправильное определение

в начале последующих месяцев...

Причина обращения: