Тут можно брать время воспользоваться функцией OrderOpenTime(). То есть в цикле, где происходит закрытие ордеров проверяешь условие TimeCurrent()-OrderOpenTime()>=15*60, если истинно, то закрываешь. Либо при открытии ордеров сохраняешь время в глобальной переменной, и опять в цилке условие проверки..
У Игоря смотрели ?
Спасибо большое.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день. Нужна помощь в создании простого советника по следующим критериям:
Цикличная установка и закрытие 2-х противоположных отложенных ордеров в заданный интервал времени на заданном расстоянии от рыночной цены.
Переменные:
1. Временной период (t) установление и закрытие ордеров (раз в 5 минут, раз в 15 минут…)
Программа:
1. Выставляются отложенные ордера покупка/продажа (на заданном расстоянии от рыночной цены на момент открытия).
2. По истечению заданного временного периода (t), удаляются ( и закрываются) все имеющиеся ордера на продажу, покупку.
3. Повторяет цикл (к пункту 1).
Самому удалось создать половину:
int start()
{
double bid =MarketInfo("EURUSD",MODE_BID);
double ask =MarketInfo("EURUSD",MODE_ASK);
double point =MarketInfo("EURUSD",MODE_POINT);
OrderSend("EURUSD",OP_BUYSTOP,0.1,Ask+10*Point,3,bid*0,bid*0);
{
OrderSend("EURUSD",OP_SELLSTOP,0.1,Ask-10*Point,3,bid*0,bid*0);
}
int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket());
}
return;
}
....не знаю как установить таймер между открытием ордеров и закрытием(удалением), банальный слип не подходит, он не действует в тестере стратегий :(
З.Ы. Весь день искал сам здесь, но конкретики нет, есть таймеры разные, но как их прикрепить и использовать не могу разобраться.