Чемпионат Automated Trading Championship 2010 стартовал! - страница 5

 

Здравствуйте,

Вопрос с 'Zero divide' решается с жюри.
Скорее всего в течении часа эксперты получившие данную ошибку будут перезапущены.


 
Alexander:

Здравствуйте,

Вопрос с 'Zero divide' решается. Скорее всего в течении часа эксперты получившие данную ошибку будут перезапущены.


Вот это уже дело. Теперь осталось понять почему проскакивает 315 участник (6 раз появлялся и исчезал).

Я уж подумал не начать ли мне креститься... :)

 
По ходу AccountInfoDouble(ACCOUNT_BALANCE) выдает 0, поскольку у меня Лот позиции минимальный встал.
2010.10.04 07:52 0 2010.10.04 07:52:11 som238 ответить

Возможно и другие режимы функции тоже возвращают ноль. Не может же баланс быть равен нулю на старте.

Просьба к организаторам проверить все режимы связанные с обслуживанием счета.

 
Alexander:

Здравствуйте,

Вопрос с 'Zero divide' решается с жюри.
Скорее всего в течении часа эксперты получившие данную ошибку будут перезапущены.


У меня нет 'Zero divide' , но при расчёте объёма отложенного ордера используется умножение на размер плеча. Если действительно leverage возвращает 0, то рассчитываемые объёмы отложенных ордеров окажутся равными 0, и ордера не будут сформированы-отправлены на сервер.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:
У меня нет 'Zero divide' , но при расчёте объёма отложенного ордера используется умножение на размер плеча. Если действительно leverage возвращает 0, то рассчитываемые объёмы отложенных ордеров окажутся равными 0, и ордера не будут сформированы-отправлены на сервер.

У меня, возможно, тоже не сформировался потенциально прибыльный ордер ('Zero divide' нет, но объем ордера возможно рассчитался равным 0).

Если организаторы примут решение о перезапуске экспертов с делением на ноль - это будет несправедливым решением!

Что делают в случае неправильного старта в спортивных соревнованиях, например, неправильная работа стартового светофора и т.п.? Правильно, рестарт!

Конечно, успешно стартовавшим участникам будет обидно, но так будет справедливо для всех!

 

Это только у меня двоится текущий лидер ShurikAn? Или что-то а-а-пще пошло не в ту степь?



Файлы:
Gluk1.jpg  66 kb
 

Всем доброго!

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

Я уже писал что обнаружил странную аномалию при заполнении массива, ответа так и не было на мой вопрос, соответственно начал искать ошибки у себя, так вот нашел, но ошибку ли?????

в классе объявляю массив:

class CNExpertOld
{
   protected:
      ...
      double            m_buff_[3];             // размер массива 3
      ...
}

//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CNExpertOld::CNExpertOld()
{
      ...
      ArraySetAsSeries(m_buff_,true);
}

bool CNExpertOld::Processing()
{
      ...
      CopyBuffer(m_handle,0,0,3,m_buff_);
      ...
}

В такой ситуации копирование в массив m_buff_ функцией CopyBuffer выполняется в обратном порядке, т.е. первый элемент индикатора копируется в массив последним.

Самое смешное, что ранее массив мной объявлялся в классе  без размерным (double m_buff_[]) и в такой ситуации функция CopyBuffer отрабатывала правильно(я так думаю).

В чем разница и где в хэлпе эта ситуация описана?

 

 
gfm73:

https://www.mql5.com/ru/docs/array/arraysetasseries

Примечание

Флаг AS_SERIES не может быть установлен у многомерных массивов и у статических массивов (то есть массивов, чей размер в квадратных скобках указан еще на этапе компиляции). Индексация в таймсерии отличается от обычного массива тем, что индексация элементов таймсерии производится от конца массива к началу (от самых свежих данных к самым старым).

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
Операции с массивами / ArraySetAsSeries - Документация по MQL5
 
gfm73:

Всем доброго!

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

Я уже писал что обнаружил странную аномалию при заполнении массива, ответа так и не было на мой вопрос, соответственно начал искать ошибки у себя, так вот нашел, но ошибку ли?????

в классе объявляю массив:

В такой ситуации копирование в массив m_buff_ функцией CopyBuffer выполняется в обратном порядке, т.е. первый элемент индикатора копируется в массив последним.

Самое смешное, что ранее массив мной объявлялся в классе  без размерным (double m_buff_[]) и в такой ситуации функция CopyBuffer отрабатывала правильно(я так думаю).

В чем разница и где в хэлпе эта ситуация описана?

 

CopyBuffer

Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве.

Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара).

При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно использовать динамический массив, так как функция CopyBuffer() старается распределить размер принимающего массива под размер копируемых данных. Если в качестве принимающего массива buffer[] выступает индикаторный буфер (массив, предварительно назначенный под хранение значений индикатора функцией SetIndexBufer()), то допускается частичное копирование. Пример можно посмотреть в пользовательском индикаторе Awesome_Oscillator.mq5 из стандартной поставки терминала.

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

Если необходимо копировать заранее известное количество данных, то лучше это делать в статически выделенный буфер, чтобы избежать излишнего перевыделения памяти.

Неважно, какое свойство имеет приемный массив - as_series=true или as_series=false, данные будут скопированы таким образом, что самый старый по времени элемент будет в начале физической памяти, отведенной под массив.

 
Swan:

https://www.mql5.com/ru/docs/array/arraysetasseries

Ну вот все встало на свои места.....
Причина обращения: