MQL4 - automated forex trading   /  

Форум

Как "ловить" тики другой пары?

К списку тем  | 1 2 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
70
redig 14.09.2006 11:16 
Что то я не пойму, как получить в индикаторе тики(данные) другой пары?
Имеется ввиду что, например индикатор стоит на EURUSD и из него получаем к примеру ArrayCopySeries(arrAUDUSD,MODE_CLOSE,"AUDUSD",Period());
Понятно что, при тике на EURUSD сработает ArrayCopySeries, но меня интересует такая ситуация:
Нового тика по EURUSD еще нет, а новый тик по AUDUSD уже был, и нужно что бы это изменение по AUDUSD было сразу же отображено в индикаторе, а не после поступления нового тика по EURUSD.

Вот.

Бесплатная Groupware для групп разработчиков

Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение.


avatar
Модератор
33759
Rosh 14.09.2006 11:40 
Никак.

avatar
14054
komposter 14.09.2006 13:05 
В индикаторе - никак, в эксперте/скрипте - в цикле.

avatar
70
redig 14.09.2006 13:35 
komposter писал (а):
В индикаторе - никак, в эксперте/скрипте - в цикле.

Ну раз в индикаторе нельзя, может есть какие нибудь пути "обхода" с использованием скрипта.
Я Ваш эксперт "Сборщик тиков" смотрел, может. как то через файл? а вообще ничего не получится с индикатором, потому что Start() срабатывает только на тики текущей пары.

Плохо, я разачарован.

Спасибо!

avatar
190
Simca 14.09.2006 13:45 
redig писал (а):

Ну раз в индикаторе нельзя, может есть какие нибудь пути "обхода" с использованием скрипта.
Я Ваш эксперт "Сборщик тиков" смотрел, может. как то через файл? а вообще ничего не получится с индикатором, потому что Start() срабатывает только на тики текущей пары.
С индикатором точно ничего не получится. Эксперт же (или скрипт) могут работать в зацикленном режиме непрерывно (а не запускаться по тикам), в этом случае можно организовать опрос других пар через собственные интервалы времени, а не строго по тикам. Только не забывайте рефрешить котировки. Да, и не забывайте корректно расцикливать эксперт в случае его отключения или закрытия терминала.

avatar
14054
komposter 14.09.2006 13:46 
Конкретизируйте задачу - получите решение ;)
Идея в том, что зацикленый скрипт проверяет, изменилась ли цена по другой паре, или нет.
Кстати, сборщик тиков построен на этом принципе (и не только он, AllMinutes тоже).

avatar
70
redig 14.09.2006 14:01 

Спасибо за советы. Это я так с наскоку хотел решить. Буду обдумывать далее.

avatar
18
vizirn 14.09.2006 18:12 

Продемонстрируйте пожалуйста зацикливание на этом коде.
Заранее благодарен.

//+------------------------------------------------------------------+
//|                                                            @.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
double EG,cal_EG;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   cal_EG=MarketInfo("EURUSD",MODE_BID)/MarketInfo("GBPUSD",MODE_BID);// 3,4,3
   EG=MarketInfo("EURGBP",MODE_BID);
 Comment("EG= ", MathAbs(cal_EG-EG)*10000);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+



avatar
895
alexjou 14.09.2006 18:28 
// [...]
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
 //----
   // *** Сработает на первом тике. ***
   // *** На все тики, поступающие после первого, эксперт реагировать не будет. ***
   while(true)
    {
     cal_EG=MarketInfo("EURUSD",MODE_BID)/MarketInfo("GBPUSD",MODE_BID);// 3,4,3
     EG=MarketInfo("EURGBP",MODE_BID);
     Comment("EG= ", MathAbs(cal_EG-EG)*10000);
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
ИМХО, странная идея.

avatar
18
vizirn 14.09.2006 18:44 
Да,как все оказывается просто.

avatar
14054
komposter 14.09.2006 19:24 
alexjou писал (а):

   while(true)
    {
    }

Всё-таки лучше while ( !IsStopped() )
К списку тем   | 1 2  

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