Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 512
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//открытие ордера на покупку.
if (buy>0)
{
Alert ("Установлен ордер BuyStop ",buy);
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//открытие ордера на продажу.
if (sell>0)
{
Alert ("Установлен ордер SellStop ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //удаляем отложенные и открытые ордера в пятницу, в 23:00 по серверному времени
{
if (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(тикет,лот,цена закрытия,проскальзывание в пунктах,цвет стрелки закрытия на графике)зыкрытие рыночного ордера на продажу.
OrderDelete(sell);//закрытие лимиток на продажу.
}
if (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(тикет,лот,цена закрытия,проскальзывание в пунктах,цвет стрелки закрытия на графике)зыкрытие рыночного ордера на покупку.
OrderDelete(buy);//закрытие лимиток на покупку.
return(0);
}
}
}
Кто подскажет почему не закрывает ордера и не удаляет лимитки?
Закрывать buy ордер нужно по цене Bid, sell по Ask.
Закрывать buy ордер нужно по цене Bid, sell по Ask.
Простое условие в функции init
Металлы, акции и сырьё не в счёт.
Спс. Не подскажите самый простой вариант. Необходимо понять, есть ли открытые позиции по данной паре или нет. Есть ли ордера на продажи, а есть ли на покупку. То есть необходимо получить
0-если нет открытых ордеров
1-есть ордера на продажу но нет на покупку.
2-есть ордера на покупку но нет на продажу
3-есть то и другое...
https://docs.mql4.com/ru/series
if(DayOfWeek()==1,2..... && Hour()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0)));//определяем хай
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0)));//определяем лов.
/////////////////////////////////////////////////////////////////////////////////////////////////
double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0)));//определяем открытие.
Благодарю!
Спс. Не подскажите самый простой вариант. Необходимо понять, есть ли открытые позиции по данной паре или нет. Есть ли ордера на продажи, а есть ли на покупку. То есть необходимо получить
0-если нет открытых ордеров
1-есть ордера на продажу но нет на покупку.
2-есть ордера на покупку но нет на продажу
3-есть то и другое...
Например так:
int i_buy=0;
int i_sell=0;
//--- получим количество открытых и отложенных ордеров
int total=OrdersTotal();
for(int i=0;i<total;i++)
{
//--- выберем i-й ордер из списка торговли
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
//--- если ордер открыт по текущему финансовому инструменту
if(OrderSymbol()==Symbol())
{
switch(OrderType())
{
//--- Бай ордер
case OP_BUY:
i_buy++;
break;
//--- Селл ордер
case OP_SELL:
i_sell++;
break;
case OP_BUYSTOP:
case OP_BUYLIMIT:
case OP_SELLSTOP:
case OP_SELLLIMIT:
//--- пробойники, лимитники
break;
}
}
}
}
if(i_buy==0 && i_sell==0)
{
//--- нет открытых ордеров
}
if(i_buy>0 && i_sell==0)
{
//--- открыты баи
}
if(i_buy==0 && i_sell>0)
{
//--- открыты селы
}
if(i_buy>0 && i_sell>0)
{
//--- открыты и баи и селы
}
Например так:
Спасибо большое. Я так понимаю, аск- текущая цена. Открываю ордер тогда когда нет открытых ордеров. Цикл перебирает от первого до последнего открытого ордера? Как мне передать в переменную лот последнего открытого ордера и цену его?
Спасибо большое. Я так понимаю, аск- текущая цена. Открываю ордер тогда когда нет открытых ордеров. Цикл перебирает от первого до последнего открытого ордера? Как мне передать в переменную лот последнего открытого ордера и цену его?
https://docs.mql4.com/ru/trading/orderselect https://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
double z; //обьявляем переменную "z"
double y; //обьявляем переменную "y"
if(OrderSelect(10,SELECT_BY_POS)==true) //если выбранный ордер (по тикету) присутствует
{
OrderLots()=z //присвоить лот данного ордера переменной "z"
OrderOpenPrice()=y //присвоить цену открытия переменной "y"
}
попробуй так
https://docs.mql4.com/ru/trading/orderselect https://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
double z; //обьявляем переменную "z"
double y; //обьявляем переменную "y"
if(OrderSelect(10,SELECT_BY_POS)==true) //если выбранный ордер (по тикету) присутствует
{
OrderLots()=z //присвоить лот данного ордера переменной "z"
OrderOpenPrice()=y //присвоить цену открытия переменной "y"
}
попробуй так
y = OrderOpenPrice();
Спс, разобрался.Вот только не пойму. if((i_buy==0 && i_sell==0) || y > Step). Должен открыть еще один ордер если растояние от последнего открытого больше 5 пунктов. Но не работает, вопрос.
for(int i=0;i<total;i++) Перебирается от первого открытого до последнего? То есть я в итоге должен получить цену последнего открытого ордера.
y = OrderOpenPrice();
Спс, разобрался.Вот только не пойму. if((i_buy==0 && i_sell==0) || y > Step). Должен открыть еще один ордер если растояние от последнего открытого больше 5 пунктов. Но не работает, вопрос.
for(int i=0;i<total;i++) Перебирается от первого открытого до последнего? То есть я в итоге должен получить цену последнего открытого ордера.
вот ето я не знаю, не сталкивался
Здравствуйте. В теме https://forum.mql4.com/ru/51490/page2 видел пост где есть скрипт который открывает окно настроек советника:
этот вызывает окно настроек советника :
Скажите можно ли сделать так чтобы скрипт с интервалом в 1 секунду открывал окно настроек советника и сразу же его подтверждал (нажимал кнопку ок) и так постоянно?