вставляем код в эксперт (уже давал ссылку там что-то не понятно?)
//-------------------------------------------------------------------+ // Функция возвращающая время последнего открытого(закрытого) ордера | // если возвращено -1 (ошибка выполнения), 0-ордера не обнаружено, | // положительное значение = искомому времени ордера | //-------------------------------------------------------------------+ int CheckLastOrderTime (string mSymbol, int select, int mode_price) //на входе три значения //1. наименование инструмента //2. смотреть в истории(закрытые) или действующие ордера (соответственно 0 и 1) //3. смотреть цену открытия или закрытия (соответственно 0 и 1) { //---- int oTotal=0; //хранит значение количества ордеров (истории или действующие) int co; //хранит значение номера текущего ордера datetime LastTime=0; //проверка корректности переданных функции значений if((select>1 || select<0) || (mode_price<0 || mode_price>1)) { Print("Неверно переданные параметры (функция CheckLastOrderTime)"); return(-1); } if(select!=1) //если нужно смотреть в истории закрытых ордеров { oTotal=HistoryTotal(); for(co=0;co<oTotal;co++) // цикл по ордерам { if(m_OSelect(co,SELECT_BY_POS,MODE_HISTORY,100)!=-1) //делаем 100 попыток ордер селект { if(mSymbol==OrderSymbol()) { if(LastTime==0) LastTime=1; //ордер в наличии if(mode_price!=1) //если нужно смотреть не время закрытия (открытия) { if(LastTime<OrderOpenTime()) LastTime=OrderOpenTime(); } else //иначе смотрим время закрытия { if(LastTime<OrderCloseTime()) LastTime=OrderCloseTime(); } } } else { Alert("Возникла ошибка , см. журнал!"); return(-1); } } } else //иначе смотрим действующие ордера { oTotal=OrdersTotal(); for(co=0;co<oTotal;co++) // цикл по ордерам { if(m_OSelect(co,SELECT_BY_POS,MODE_TRADES,100)!=-1) //делаем 100 попыток ордер селект { if(mSymbol==OrderSymbol()) { if(LastTime==0) LastTime=1; //ордер в наличии if(mode_price!=1) //если нужно смотреть не время закрытия (открытия) { if(LastTime<OrderOpenTime()) LastTime=OrderOpenTime(); } else { Alert("Неверно переданный параметр! Ордер еще в действии."); } } } else { Alert("Возникла ошибка , см. журнал!"); return(-1); } } } //---- return(LastTime); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Функция делает Attempt количество попыток ордер селект | //+------------------------------------------------------------------+ int m_OSelect(int ct, int sel, int pool, int Attempt) { int i; //---- //ордер селект за Attempt попыток for(i=0;i<Attempt;i++) { if( OrderSelect(ct,sel,pool)==1 ) //если ордер выбран { Print( "Попытка ордер селект удачна "+OrderTicket() ); return(1);//завершаем функцию } } Alert( "Код ошибки - "+GetLastError() ); Alert("Невозможно ордер селект! Сделано "+Attempt+" попыток."); //---- return(-1); } //-------------------------------------------------------------------------------------------------
в эксперте пишем
//если с последнего закрытия по текущему инструменто не прошло 2х часов if( CurTime()-CheckLastOrderTime(NULL,0,1)<2*60*60 ) { ...... здесь можно уснуть, или просто выйти } //иначе else { ...... а здесь проверка на условия выхода из сделки (кроме условия по времени) и выход (если нужно) }
Спасибо большое! Я разобралась.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
int LTZ=0;
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
if (
OrderCloseTime()>LTZ && //находим последнее закрытие
Symbol()== OrderSymbol()) // по данной валютной паре
{
LTZ=OrderCloseTime();
}
}
if ( LTZ == 0 )//если нет закрытых ордеров
{
.............//условия для закрытия
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
}
}
else // есть закрытые ордера
{
.............//условия для закрытия
&& CurTime()-LTZ >= 7200 //разница во времени между закрытиями
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
}
}
}
Подскажите, пожалуйста, что не так?
С уважением, Елена