вставляем код в эксперт (уже давал ссылку там что-то не понятно?)
//-------------------------------------------------------------------+
// Функция возвращающая время последнего открытого(закрытого) ордера |
// если возвращено -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);
}
}
}
Подскажите, пожалуйста, что не так?
С уважением, Елена