Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зачем продавать продукты в MetaTrader AppStore? Узнай из статьи!
OkhunTursunov
22
OkhunTursunov 2014.12.18 06:53 

Пожалуйста Сделайте мне это:

If (если нет открытых ордеры )

If (БИД > 1,2550)
{
Alert "Бид > 1,2550"
{
If (БИД < 1,2510)
{
Alert "БИД < 1,2510"
}
}
И все это повторялся бесконечно (do … loop)

 

Спасибо за ответ... 

Gobo
33
Gobo 2014.12.18 17:35  

Это вам в советнике или в скрипте? И чтоб прям-таки до бесконечности? В советнике кажись никокого цикла не надо, просто в функции OnTick напишите

if(OrdersTotal()==0 && Bid>1.2550) Alert(Bid>1.2550);

Только это глупо - функция Алерт вывешивает табличку посреди экрана, одну запись вы  тоже заметите, зачем вам 1000 записей в минуту?

Если чтоб до бесконечности, но с какими-то разумными интервалами, то 

input double   a1=1.255;
input double   a2=1.251;
int OnInit()
  {
//--- create timer
   EventSetTimer(10); 
//---
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
  }
void OnTick()
  {
//---
   return;
  }

void OnTimer()
  {
//---

   if(OrdersTotal()==0 && Bid>a1) Alert("Bid>",a1);

   if(OrdersTotal()==0 && Bid<a1) Alert("Bid<",a2);

   }


То есть в функции OnInit() задаете интервал сообщений, с помощью EventSetTimer(сколько секунд), 10 там у меня означает 10 секунд. а1 и а2 вместо цифр там для того чтобы можно было поставить другие значения, а не только 1,2550 и 1,2510

Если добавить кликом функцию OnTimer() при создании эксперта в самом начале, то этот EventSetTimer там уже есть.

и в функции OnTimer() конкретно пишете что вам надо, то есть 

   if(OrdersTotal()==0 && Bid>a1) Alert("Bid>",a1);

   if(OrdersTotal()==0 && Bid<a1) Alert("Bid<",a2);

Только это достаточно глупо, будет немного опазбдывать, уж лучше зделать так чтобы сообщение появлялось только 1 раз

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий