| / | Форум |
|
Gorillych
05.09.2006 20:41
Здесь есть тема про паузу между открытиями позиций. Но мне нужно
организовать паузу после закрытия позиции до открытия новой.
Попытался увидеть OrderCloseTime, но не получается. int z= HistoryTotal();
Какие есть идеи? |
|
Организуйте багтрекинг и техсаппорт для своей компании В TeamWox имеются все для того чтобы организовать багтрекинг. Интегрировав модуль Сервисдеск с веб-сайтом, Вы сможете получать заявки своих клиентов напрямую в TeamWox. Более того, вся переписка с клиентами автоматически распознается и попадает в архив, где ее без труда можно найти в будущем. |
33759 |
Rosh
05.09.2006 20:53
int z= HistoryTotal();
возвращает общее количество ордеров в Истории (допустим 10). При этом список ордеров начинается с нуля. Дальше сами... ЗЫ Даже если бы пример был корректным, не факт, что последний закрытый ордер будет находиться на позиции z. |
|
Gorillych
05.09.2006 23:06
Спасибо. Это я понял ещё из Документации (там тоже в примере 10.
А чего десять?) А как мне выйти на номер последнего ордера в истории?
Я пробовал for(z=1,z<=0,z++)..., но результат тот же |
33759 |
Rosh
05.09.2006 23:14
Почитайте
24. Техника скользящего стопа |
|
Gorillych
05.09.2006 23:33
Rosh писал (а): Спасибо! Прочитал. Написал необходимый минимумПочитайте 24. Техника скользящего стопаfor ( int z=0;z<HystoryTotal();z++) { if (OrderSelect (z,SELECT_BY_POS,MODE_HISTORY)) { datetime oct=OrderCloseTime(); Comment ("Order Close Time is ", TimeToStr(oct, TIME_SECONDS)); } else Comment ("Ошибка № ", GetLastError()); } При компиляции выдает ошибку: 'HystoryTotal' - function is not defined |
33759 |
Rosh
05.09.2006 23:41
Попробуйте HistoryTotal(), пожалуй мне хватит.
|
|
komposter
05.09.2006 23:44
HistoryTotal()
|
|
komposter
05.09.2006 23:48
Rosh писал (а): =)))Попробуйте HistoryTotal(), пожалуй мне хватит. Спасибо! Прочитал. Написал необходимый минимум Нет, этого недостаточно.Надо находить последний закрытый ордер, сравнивая все ордера. Что-то типа этого: datetime lastclose = -1; int _GetLastError = 0, _OrdersTotal = HistoryTotal(); for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS, MODE_HISTORY ) ) { _GetLastError = GetLastError(); Print( "OrderSelect( ", z, ", SELECT_BY_POS, MODE_HISTORY ) - Error #", _GetLastError ); continue; } if ( OrderMagicNumber() != _MagicNumber ) continue; if ( OrderSymbol() != _Symbol ) continue; if ( OrderCloseTime() <= lastclose ) continue; lastclose = OrderCloseTime(); } |
|
Gorillych
06.09.2006 14:03
komposter писал (а): Rosh писал (а): =)))Попробуйте HistoryTotal(), пожалуй мне хватит. Спасибо! Прочитал. Написал необходимый минимум Нет, этого недостаточно.Надо находить последний закрытый ордер, сравнивая все ордера. Спасибо! Оказалось вполне достаточно исправить ошибку в HistoryTotal(). |
|
Gorillych
06.09.2006 14:08
Итоговый код для паузы в 1 минуту:
for ( int z=0;z<HistoryTotal();z++) { if (OrderSelect (z,SELECT_BY_POS, MODE_HISTORY)) datetime oct=OrderCloseTime(); } if(CurTime()-oct<60) return(0); |
|
komposter
06.09.2006 14:31
Gorillych писал (а): Насколько я помню, если история будет отсортирована не по тикету,
ваш код вернёт неправильный клоустайм.Спасибо! Оказалось вполне достаточно исправить ошибку в HistoryTotal(). В любом случае, мой надежнее |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий