Ошибки, баги, вопросы - страница 2218

 
fellow:

что это за цифры в кавычках?

наверное значение поля

 
Georgiy Merts:

Точно.

На мой взгляд, вобще все структурные части программ - должны оформляться в платформонезависимые блоки (вот, виртуальные интерфейсы, на мой взгляд, для этого ох, как хорошо подходят), чтобы изменения в платформах затрагивали небольшие изолированные участки кода. Плюс бонусом идет и возможность подключения новых платформ.

Что же касается новых i-Функций, то я гляжу только на одну - поиск бара по указанному времени. Возможно, эта функция будет работать быстрее, чем работает моя. Остальные же - я уверен, не будут давать увеличение скорости по сравнению с моими, а значит, от добра добра не ищут.

Я по барам давно свою библиотеку написал и новшествами пользоваться вряд ли буду

 
Alexey Volchanskiy:

Я по барам давно свою библиотеку написал и новшествами пользоваться вряд ли буду

Нативный поиск бара по времени - может оказаться реально быстрее. 

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

Раньше также я использовал бинарный поиск, но прямой расчет с корректировкой - оказался быстрее.

А у разработчиков может существовать индекс, который находит нужный бар значительно быстрее обоих этих вариантов.

 
fellow:

что это за цифры в кавычках?

строка типа string - это массив uchar

в кавычках символ, левее кавычек код символа. 


а точнее :

void OnStart()
  {
   string s;
   uchar u[1];
   for(int i=32; i<=255; i++)
     {
      u[0]=(uchar)i;
      if(i%16==0) s="";
      s+=IntegerToString(u[0],3)+"-"+CharArrayToString(u)+"  ";
      if (i==152) s+=" ";
      if(i%16==15)  Print(s);
     }
  }
 

кто обновился до 1860, подтверждаете ли проблему указанную ранее несколькими пользователями при тестировании?

а то брокер Открытие уже второй раз прислал это обновление ))

 
Vitaly Muzichenko:

Используете бесплатный софт - тогда следите за его новостями и обновлениями, а если уж в будущем будет реклама, то это тоже вполне нормально(бесплатное ПО). Вам никто и ничем не обязан.

Софт не бесплатный - он стоит брокеру кучу денег. А я как трейдер, оплачиваю брокеру комиссию, из которой зп платится создателям. Поэтому и хочется отношения адекватного.

Относится не к функциям (фиг с ними - переписал), а вот то что тестер после обновления дико глючить начал и вылетатть каждые 2-3 запуска, можно было залить стабильную версию

 
Как минимум возьмите тот факт, что за 10 лет так и не научили ПО правильно считать просадку. Пришлось все написать самому
 
// Воспроизведение ситуации, когда OrderSend успешно выполнилась, но ордера нет ни среди живых, ни среди мертвых.

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
/*
  // Посылаем поочередно ордера на открытие/закрытие позиций
  while (!IsStopped() &&
         (OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0) != -1) &&
         OrderSelect(0, SELECT_BY_POS) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ;
*/

  MqlTradeResult Result;
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_DEAL;
  Request.symbol = _Symbol;
  
  do
  {
    Request.position = PositionSelect(Request.symbol) ? PositionGetInteger(POSITION_TICKET) : 0;  
    Request.type = Request.position ? (ENUM_ORDER_TYPE)(1 - PositionGetInteger(POSITION_TYPE)) : ORDER_TYPE_SELL;
    Request.price = Request.position ? PositionGetDouble(POSITION_PRICE_CURRENT) : Bid;
    Request.volume = Request.position ? PositionGetDouble(POSITION_VOLUME) : 1;
          
  } // Посылаем поочередно ордера на открытие/закрытие позиций
  while (!IsStopped() && (OrderSend(Request, Result) ? OrderSelect(Result.order) || HistoryOrderSelect(Result.order) : true));
  
  PRINT(Result.order);
  PRINT(OrderSelect(Result.order));
  PRINT(HistoryOrderSelect(Result.order));
}


Результат на ForexTimeFXTM-Demo01

Result.order = 2210942086
OrderSelect(Result.order) = false
HistoryOrderSelect(Result.order) = false


Скрипт открывает и закрывает позиции до тех пор, пока не обнаружит "фантомный ордер" - нет ни среди текущих, ни в истории. Считать это багом или фишкой платформы?


ЗЫ Скрипт написан так, что может открыться несколько позиций из-за данного нюанса. Но это не мешает получению "фантомного ордера".

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.02.08
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Было такое же на БКС форекс год назад, после того как дц что-то переключил у своего советника
 

Здравствуйте. Сегодня обновился до версии 1860 и при оптимизации советника столкнулся вот с такой проблемой:

Задержка при оптимизации

задержка между проходами составляет 1 минуту! Подскажите пожалуйста, в чем может быть дело?

p.s. до обновления все работало как часики.