Скачать MetaTrader 5

Новая версия MetaTrader 4 Client Terminal build 402

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

MetaTrader 4 Client Terminal build 402

  1. Terminal: Исправлена коррекция таймзон при закачке истории в History Center (клавиша F2).
  2. Terminal: Исправлено отображение графиков в масштабе 1-1 для символов с 5 знаками.
  3. Исправления по сообщениям на форуме и крешлогам.
Автоматическое обновление будет доступно через систему LiveUpdate
Дмитрий
230
Дмитрий  

Проблема вторая.

вот функция:

void MonitorTick()
{   
   string s;
   
   datetime dt=TimeCurrent();
   int y1=TimeYear(dt);
   int m1=TimeMonth(dt);
   int d1=TimeDay(dt);
   string fn=y1+"_"+m1+"_"+d1+"_Monitor_Tick_"+Symbol()+".mon";
         
   {
      handleM=FileOpen(fn,FILE_BIN|FILE_WRITE|FILE_READ);
      if (handleM<0) 
      {
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE);
      }
      else
      {
         s="Time;;Shift "+Symbol()+"\n";
         FileWriteString(handleM,s,StringLen(s));
      }
   }

   s=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+";;";
   
   s=s+DoubleToStr((Bid-iOpen(NULL,PERIOD_D1,0))/Point,0)+"\n";
   
   {      
      FileSeek(handleM,0,SEEK_END);
      FileWriteString(handleM,s,StringLen(s));
   
      FileClose(handleM);
   }
      
}

НА словах - при каждом тике пишет в файл разницу между текущей ценой и ценой открытия дня.

в один прекрасный момент начинает писать в файл мусор. Содержимое ниже:

2011.05.12 15:40:50;;2
2011.05.12 15:40:50;;1
2011.05.12 15:40:51;;0
2011.05.12 15:40:51;;1
2011.05.12 15:40:52;;2
2011.05.12 15:40:53;;2
2011.05.12 15:40:55;;3
2011.05.12 15:53:54;;15692
2011.05.12 15:53:54;;15688
2011.05.12 15:54:05;;15692
2011.05.12 15:54:28;;15696
2011.05.12 15:54:42;;15694
2011.05.12 15:54:56;;15698
2011.05.12 15:55:40;;15697
2011.05.12 15:56:40;;15698
2011.05.12 15:56:47;;15696
2011.05.12 15:57:17;;15696
2011.05.12 15:57:34;;15699 

Как это объяснить????

Эксперт с этой функцией не делает больше ничего, кода три строчки. стоит на 10 инструментах, и периодически по 5-7 из них выдает это. Помогает только перезагрузка терминала. К слову, индикаторы (мультивалютные) тоже начинают показывать бред.

PapaYozh
3768
PapaYozh  
dimonsky:

Проблема вторая.

Как это объяснить????


Когда используется конструкция, типа

Bid-iOpen(NULL,PERIOD_D1,0))

необходимо убедиться в наличие бара на истории D1 и в соответствии его ожидаемому.

Т.е., если вы используете цену открытия текущего дневного бара, необходимо убедиться в том, что Вы используете цену открытия именно текущего дневного бара.

P.S.

Подозреваю, что в кодах Ваших мультивалютников тоже самое.

Дмитрий
230
Дмитрий  

то есть того что эти данные видны на экране - не достаточно?

у меня на экране история за несколько месяцев. также прошу объяснить чем тик секунду назад отличается от текущего, когда история "вдруг" пропала, а также сразу после перезагрузки, когда она "вдруг" появляется в ту же секунду как включился терминал и тики пишутся дальше без глюков.

в мультивалютниках то же самое. бред показывается даже на нулевом баре, когда история по всем парам есть - они специально открыты в других окнах чтобы 100% иметь историю.

Дмитрий
230
Дмитрий  
PapaYozh:


Т.е., если вы используете цену открытия текущего дневного бара, необходимо убедиться в том, что Вы используете цену открытия именно текущего дневного бара.

странная ситуация. открыт график, который естественно показывает текущий день. секунду назад цена открытия была, и исчезла? а при отключенной сети, без доступа в интернет выполненная перезагрузка вдруг помогает терминалу найти историю?

и какой это должен быть день, чтобы разница составляла 15000 пунктов.... ?

PapaYozh
3768
PapaYozh  
dimonsky:
странная ситуация. открыт график, который естественно показывает текущий день. секунду назад цена открытия была, и исчезла?


Я не разработчик терминала и о связях баров в открытых окнах с доступной программно историей могу только догадываться.

Я Вам написал как правильно программировать, что бы избежать неоднозначностей.

Дмитрий
230
Дмитрий  
PapaYozh:


Я не разработчик терминала и о связях баров в открытых окнах с доступной программно историей могу только догадываться.

Я Вам написал как правильно программировать, что бы избежать неоднозначностей.


какая может быть неоднозначность при обращении к цене открытия текущего дня? какие еще проверки нужны?

Для пары GBPCAD 15000 пунктов означают что пропала вся история по дням включая сегодняшний. причем пропала вдруг, ведь была только что?

Rustamzhan Salidzhanov
7805
Rustamzhan Salidzhanov  
для пары GBPCAD 15000 пунктов обозначает то цена Бида = 0 потому что вы не удосужились обновить котировки командой RefreachRates(), или не воспользовались MarketInfo(Symbol(),MODE_BID)
Дмитрий
230
Дмитрий  
xrust:
для пары GBPCAD 15000 пунктов обозначает то цена Бида = 0 потому что вы не удосужились обновить котировки командой RefreachRates(), или не воспользовались MarketInfo(Symbol(),MODE_BID)


нет. потому что в этом случае полученное значение было бы отрицательным (см формулу рассчета).

проблема именно в том, что БИД был, а истории не было. и я выясняю причину ее недоступности для программного кода, при том что за секунду до этого эта история была.

brici
433
brici  

- А у меня, на сегодняшний день, (13-05-2011), никакого обновления не было. Это что, мой ДЦ игнорирует новый build ?

Во всяком случае, не было ни предупреждения обновления, ни обычной перезагрузки.

Rashid Umarov
Админ
12611
Rashid Umarov  
brici:

- А у меня, на сегодняшний день, (13-05-2011), никакого обновления не было. Это что, мой ДЦ игнорирует новый build ?

Во всяком случае, не было ни предупреждения обновления, ни обычной перезагрузки.

Обновление должно пройти завтра. Это предварительное объявление.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий