| / | Форум |
|
Integer
01.12.2009 23:45
Список тикетов по времени закрытия: int HstSrtByCloseTime_Ticket[]; datetime HstSrtByCloseTime_Time[]; int start(){ if(!OrdHstByCloseTime(HstSrtByCloseTime_Ticket,HstSrtByCloseTime_Time)){ return(0); } //в массиве HstSrtByCloseTime_Ticket имеем список тикетов осортированные по времени закрытия ордеров } bool OrdHstByCloseTime(int & aTicket[],int & aTime[]){ static int sLastOrdersHistoryTotal=0; for(int ti=sLastOrdersHistoryTotal;ti<OrdersHistoryTotal();ti++){ if(OrderSelect(ti,SELECT_BY_POS,MODE_HISTORY)){ if(OrderMagicNumber()==Magic_N){ if(OrderSymbol()==Symbol()){ if(OrderType()==OP_BUY || OrderType()==OP_SELL){ for(int tj=ArraySize(aTicket)-1;tj>=0;tj--){ if(OrderCloseTime()>=aTime[tj]){ break; } } tj++; ArrayResize(aTicket,ArraySize(aTicket)+1); ArrayResize(aTime,ArraySize(aTime)+1); for(int tk=ArraySize(aTicket)-1;tk>tj;tk--){ aTicket[tk]=aTicket[tk-1]; aTime[tk]=aTime[tk-1]; } aTicket[tj]=OrderTicket(); aTime[tj]=OrderCloseTime(); } } } sLastOrdersHistoryTotal=ti+1; } else{ return(false); } } return(true); } Список тикетов по времени открытия: int HstSrtByOpenTime_Ticket[]; datetime HstSrtByOpenTime_Time[]; int start(){ if(!OrdHstByOpenTime(HstSrtByOpenTime_Ticket,HstSrtByOpenTime_Time))return(0); // в массиве HstSrtByOpenTime_Ticket имееем список тикетов отсортированных по времени открытия } bool OrdHstByOpenTime(int & aTicket[],int & aTime[]){ static int sLastOrdersHistoryTotal=0; for(int ti=sLastOrdersHistoryTotal;ti<OrdersHistoryTotal();ti++){ if(OrderSelect(ti,SELECT_BY_POS,MODE_HISTORY)){ if(OrderMagicNumber()==Magic_N){ if(OrderSymbol()==Symbol()){ if(OrderType()==OP_BUY || OrderType()==OP_SELL){ for(int tj=ArraySize(aTicket)-1;tj>=0;tj--){ if(OrderOpenTime()>=aTime[tj]){ break; } } tj++; ArrayResize(aTicket,ArraySize(aTicket)+1); ArrayResize(aTime,ArraySize(aTime)+1); for(int tk=ArraySize(aTicket)-1;tk>tj;tk--){ aTicket[tk]=aTicket[tk-1]; aTime[tk]=aTime[tk-1]; } aTicket[tj]=OrderTicket(); aTime[tj]=OrderOpenTime(); } } } sLastOrdersHistoryTotal=ti+1; } else{ return(false); } } return(true); } Функции OrdHstByCloseTime() и OrdHstByOpenTime() вызываются в самом начале функции start(), если они возвращают false - завершаем работу start(). В результате - имеем списки тикетов отсортированные по времени закрытия и по времени открытия. |
|
Отчет о заседании Жюри 17 декабря 2007 года На заседании Жюри обсуждался вопрос о дисквалификации некоторых Участников. |
|
Urain
01.12.2009 23:49
Integer писал(а) >>
Список тикетов по времени закрытия: Список тикетов по времени открытия: Функции OrdHstByCloseTime() и OrdHstByOpenTime() вызываются в самом начале функции start(), если они возвращают false - завершаем работу start(). В результате - имеем списки тикетов отсортированные по времени закрытия и по времени открытия. Дима что это было, крик души, достали однотипными вопросами? |
|
Integer
02.12.2009 00:07
Да. Глядя на эти постоянные вопросы и на их неправильные ответы. |
|
keekkenen
02.12.2009 00:20
Integer писал(а) >>
Сразу после закрытия ордера, и попадания его в список истории его еще невозможно выделить и получить по нему данные, поэтому обязательно нужно проверять выделился ли ордер. уточни про его еще невозможно выделить и получить по нему данные что значит еще невозможно выраженное во времени ? должно быть это ограниченно тиком, потому что не замечал проблем при отслеживании пар ордеров: рыночный - отложенный, рыночный отработал по стопу, тут же (при появлении нового тика скорее всего) оперируем отложенный..
|
|
DDFedor
02.12.2009 00:22
может вообще стОит делать такие вещи и по другим темам... каждую ветку называть "ПРАВИЛЬНАЯ РАБОТА: ......... название темы.... " Если такая практика закрепится очень полезная вещь может получиться... как ни крути, а подобие FAQ - нужно... хотя бы и силами пользователей форума... всеравно ведь каждый раз приходится отвечать. а сделав РАЗ - можно ссылку давать... |
|
Integer
02.12.2009 00:36
keekkenen писал(а) >>
уточни про его еще невозможно выделить и получить по нему данные что значит еще невозможно выраженное во времени ? должно быть это ограниченно тиком, потому что не замечал проблем при отслеживании пар ордеров: рыночный - отложенный, рыночный отработал по стопу, тут же (при появлении нового тика скорее всего) оперируем отложенный.. По времени - меньше 0.1 секнды. Если сделать так: if(OrderClose(Ticket...)){ OrderSelect(Ticket...); } то ордер не получится выделить. Sleep(100) - помогает. Совсем недавно поднималась эта тема. Если сработка стоплосс/тейкпрофит, кто его знает, как совпадет с тиком по времени. Точнее, понятно, что совпадет, но не наблюдал есть ли в этом случае проблемы, всегда делаю проверу выделился ли ордер. |
|
keekkenen
02.12.2009 04:29
а смысл его выделять.. а ну если нужно.. обычно я создаю массив, в который помещаю инфу об удаляемых ордерах, после удаления ордеров, ее можно использовать при необходимости.. и побоку обновился журнал или нет, был тик или нет.. |
|
khorosh
02.12.2009 04:59
Integer писал(а) >>
Список тикетов по времени закрытия: Список тикетов по времени открытия: Функции OrdHstByCloseTime() и OrdHstByOpenTime() вызываются в самом начале функции start(), если они возвращают false - завершаем работу start(). В результате - имеем списки тикетов отсортированные по времени закрытия и по времени открытия. Не помешало бы ещё пояснить когда и как могут использоваться эти функции и дать примеры использования. Спасибо. |
|
Integer
02.12.2009 05:54
keekkenen писал(а) >>
а смысл его выделять.. а ну если нужно.. обычно я создаю массив, в который помещаю инфу об удаляемых ордерах, после удаления ордеров, ее можно использовать при необходимости.. и побоку обновился журнал или нет, был тик или нет.. Молодец! Поздравляю! Не перестаю удивляться, каким говнокодом люди самоудовлетворяются, когда сами для себя пишут, и как они говняются, когда им пишут советника на заказ за их 20-30 ср-ых баксов. |
|
Integer
02.12.2009 05:55
khorosh писал(а) >>
Не помешало бы ещё пояснить когда и как могут использоваться эти функции и дать примеры использования. Спасибо. Может так поможет: |
|
keekkenen
02.12.2009 06:55
Integer писал(а) >>
Молодец! Поздравляю! Не перестаю удивляться, каким говнокодом люди самоудовлетворяются, когда сами для себя пишут, и как они говняются, когда им пишут советника на заказ за их 20-30 ср-ых баксов. и что плохого в моем подходе, если нет потребности держать историю постоянно под рукой ? я в общем-то говорил о частном случае удалении, другое дело когда история действительна нужна, но тогда ее отдельно в файл писать нужно, а не хранить, а то мало ли чего и смысла от ваших функций тоже не будет, как и от обычных, когда лузер возьмет и историю выключит.. |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий