Добрый день. Меня мучает парочка вопросов! Умоляю:)
1) Как можно реализовать закрытие всех позиций при наступлении допустим 00:00, т.е. при наступлении нового дня?
2)Как сделать ограничение позиций за день (если один ордер открылся, то другой уже не открыется за этот день)? Я просто не пойму как условие связать с временем((
3)Как в условии указать на то, что прошлый допустим фрактал был ниже предыдущего? (с этим тоже не пойму что делать)
Спасибо!
воспользуйтесь этими функциями
bool Orders() // Есть-ли ордера
{
bool ret = false; // Пока нет ордеров
for(int i=0; i<OrdersTotal(); i++) // По рыночн. и отлож. ордерам
if( (OrderSelect(i,SELECT_BY_POS)==true) && (OrderSymbol()==Symbol()) // Выбрать ордер по номеру i если есть такой и чтоб совпадал валютная пара
&& (OrderMagicNumber()>10000||OrderMagicNumber()<10005) ) // и Магический номер бал наш от 10001 до 10004
ret = true; // если условие выполняется хоть раз то истина
return (ret); // возврат из функции true если есть false если нет ордеров
}
void CloseAllOrders() // Закрыть все ордера
{
while(Orders()) // Пока есть ордера повторать все
for(int i=0; i<OrdersTotal(); i++) // По рыночн. и отлож. ордерам
if( (OrderSelect(i,SELECT_BY_POS)==true) && (OrderSymbol()==Symbol()) // Выбрать ордер по номеру i если есть такой и чтоб совпадал валютная пара
&& (OrderMagicNumber()>10000||OrderMagicNumber()<10005) ) // и Магический номер бал наш от 10001 до 10004
{
if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(), Ask, 3); // Закрыть ордер по цене Ask +-3пп если это Селл
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid, 3); // Закрыть ордер по цене Bid +-3пп если это Бай
if(OrderType()==OP_SELLSTOP||OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()); // Удалить если отложка
}
}
Закрытие всех ордеров - непростая задача.
На эту тему посмотрите здесь: http://www.forextrade.ru/mqlabs/17.07.2009-zakrytie-orderov-v-strategii-k-autograf-4
Закрытие всех ордеров - непростая задача.
На эту тему посмотрите здесь: http://www.forextrade.ru/mqlabs/17.07.2009-zakrytie-orderov-v-strategii-k-autograf-4
спасибо. но каким образом можно описать временной интервал (в моём случае он равен одному дню), если ордер был открыт в этом промежутке, то по завершению его ...закрываем позиции
мне б подсказать как такое условие сделать)
спасибо. но каким образом можно описать временной интервал (в моём случае он равен одному дню), если ордер был открыт в этом промежутке, то по завершению его ...закрываем позиции
мне б подсказать как такое условие сделать)
Анализируйте дату.
Для каждого бара можно запросить время его закрытия.
Shev, мне нужно закрытие по окончании дня и ограничение ордеров, а у вас не понятно что)
Прошу прощения, мне нужен поиск по фракталам!)
И как после этого в условия его поставить?
например можно так
//вернет номенр бара int fractal(int mode,int nomer_fractala){ string symbol=Symbol(); int timeframe=0; int i=0; int fr=0; while(true){ int shift=i; if(iFractals(symbol,timeframe,mode,shift)>0.003){fr++;} if(fr>=nomer_fractala)break ; i++; } return(i); }
для проверки
int start() { for (int i =0;i<100;i++){ int f; f=fractal(MODE_UPPER,i); string name="fghfgh"+i; ObjectCreate(name,OBJ_ARROW, 0, Time[f], High[f]) ; } return(0); }
дла условий времени используйте
OrderOpenTime(),TimeDay( datetime date) //или TimeHour( datetime time)
то есть вам нужно написать, что то вроде
if(High[fractal(MODE_UPPER,1)]<High[fractal(MODE_UPPER,2)])
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. Меня мучает парочка вопросов! Умоляю:)
1) Как можно реализовать закрытие всех позиций при наступлении допустим 00:00, т.е. при наступлении нового дня?
2)Как сделать ограничение позиций за день (если один ордер открылся, то другой уже не открыется за этот день)? Я просто не пойму как условие связать с временем((
3)Как в условии указать на то, что прошлый допустим фрактал был ниже предыдущего? (с этим тоже не пойму что делать)
Спасибо!