Скачать MetaTrader 5

NormalizeDouble(Bid,Digits) ???

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся активность участников MQL5.community на одной странице!
Forex Trader
114257
Forex Trader 2006.01.31 21:06 
Столкнулся с такого типа записями в журнале тестирования
2005.01.18 01:58  Market_Order2 EURUSD,M1: invalid price 1.30305004 for OrderSend function

После модификации OrderSend введением NormalizeDouble(Bid,Digits)

OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,Ask+dStopLoss,Bid-dTakeProfit,"",MAGICMA,0,Red);

эффект исчезает. Чтобы исключить дефект истории, переписал её с использованием такого блока

    FileWriteInteger(HstHandle, HstCurr, LONG_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Open[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Low[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(High[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Close[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, Volume[i], DOUBLE_VALUE);

Не помогло. Версия МТ - от 23 января 2006.

Forex Trader
114257
Forex Trader 2006.01.31 21:51  
P.S. Как бы очевидно, но всё же добавлю, для полноты, первоначальный OrderSend
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+dStopLoss,Bid-dTakeProfit,"",MAGICMA,0,Red);

И ещё деталь: тестирование проводилось по ценам открытия.

Forex Trader
114257
Forex Trader 2006.02.01 13:15  
Вы не могли бы прислать на stringo at metaquotes dot ru полученный таким образом файл? Хотелось бы его поанализировать.
Forex Trader
114257
Forex Trader 2006.02.01 14:38  
Вы не могли бы прислать на stringo at metaquotes dot ru полученный таким образом файл? Хотелось бы его поанализировать.
Имеется в виду файл истории? Смогу только вечером выслать.
Forex Trader
114257
Forex Trader 2006.02.01 22:13  
Проверил ещё раз. Всё таки нормализация истории помогает. Прошу прощения за ложную тревогу. Видимо вчера я преждевремнно снял галочку "пересчитать". Вероятно, дефективный файл истории интереса не представляет, но выслать всё равно могу :) (архив - 194 Кб).
Пожалуй добавлю ещё полный код скрипта, нормализующего историю
//+------------------------------------------------------------------+
//|                                             NormalizeHistory.mq4 |
//|                                         Copyright © 2006, Candid |
//|                                                   likh@yandex.ru |
//+------------------------------------------------------------------+

// Копирует файл истории, нормализуя данные (на всякий случай)

#property copyright "Copyright © 2006, Candid"
#property link      "likh@yandex.ru"
#property show_inputs

#include <stdlib.mqh>


datetime HstCurr;
int HstHandle=-1;

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()  {
   int    version=400;
   string c_copyright;
   string c_symbol=Symbol();
   int    i_period=Period();
   int    i_digits=Digits;
   int    i_unused[13];
   int    i; 
//----  
  HstHandle=FileOpenHistory(c_symbol+i_period+"_Normalized"+".hst", FILE_BIN|FILE_WRITE);
  if(HstHandle < 0) {
    Print(" .hst файл открыть не удалось, последняя ошибка ", GetLastError());
    return(-1);
  }
// Пишем заголовок hst файла
  c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
  FileWriteInteger(HstHandle, version, LONG_VALUE);
  FileWriteString(HstHandle, c_copyright, 64);
  FileWriteString(HstHandle, c_symbol, 12);
  FileWriteInteger(HstHandle, i_period, LONG_VALUE);
  FileWriteInteger(HstHandle, i_digits, LONG_VALUE);
  FileWriteInteger(HstHandle, 0, LONG_VALUE);       //timesign
  FileWriteInteger(HstHandle, 0, LONG_VALUE);       //last_sync
  FileWriteArray(HstHandle, i_unused, 0, 13);

// Начинаем заполнять
  i = Bars;
  while (i > 0) {
    i--;
    HstCurr = Time[i];
    FileWriteInteger(HstHandle, HstCurr, LONG_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Open[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Low[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(High[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, NormalizeDouble(Close[i],Digits), DOUBLE_VALUE);
    FileWriteDouble(HstHandle, Volume[i], DOUBLE_VALUE);
  }
//----
  FileClose(HstHandle);
  return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий