Small Moneymanagement-Indicator разрушен новым MQL4 - страница 3

 
mar:

angevoyageur, я думаю, что вы не видели это сообщение от меня:

mar 2014.04.02 08:16 #

Вы правы... Я не могу избежать этого :-)

"Я имел в виду, могу ли я подождать, пока обновление будет завершено, прежде чем продолжить SL-расчет? Проблема в том, что я не могу дать SL случайное значение, потому что тогда весь индикатор будет бесполезен. Поэтому я хотел бы проверить наличие ошибки 4066 и, если она возникнет, я хотел бы как-то подождать и снова проверить, прежде чем продолжать."

Там вы можете видеть, что описано, что я не могу следовать совету, и поскольку я пришел к этому решению, вы также можете видеть, что я точно проверил то, что посоветовал мне qjol.

Нет не так, qjol написал :

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

И после этого вы сообщаете об ошибке деления нуля. Но это по вашему желанию.

 
mar:

Другой пример:

Если вы откроете MetaTrader, результат будет нулевым! И он останется нулевым, пока вы не смените таймфрейм или пару. Я думаю, что это именно проблема ошибки деления на ноль. Вы тоже так считаете?

Вы пробовали это сделать в выходные, когда не было входящих тиков? Это единственная причина, которую я могу придумать, чтобы комментарий не обновлялся.
 
GumRai:

Вы пробовали сделать это в выходные, когда не было входящих тиков? Это единственная причина, о которой я могу думать, что комментарий не обновляется.

То же самое и здесь. Нет тика - нет обновления.
 

Нет, я пробовал это сегодня. Приходит много тиков, но нет обновления AccountBalance. Я подождал почти минуту, но AccountBalance все еще был нулевым.


Дело в том, что в последние годы эта проблема никогда не возникала. С момента выхода нового MetaTrader эта проблема существует. Поэтому я не думаю, что это связано с кодом. Должны быть внутренние изменения в самой платформе, которые приводят к сбою этого кода. А в этом индикаторе всего одна линия комментариев и он не работает. Так что это должно быть проблемой платформы/данных.

 
mar:

Нет, я пробовал это сегодня. Приходит много тиков, но нет обновления AccountBalance. Я подождал почти минуту, но AccountBalance все еще был нулевым.


Дело в том, что в последние годы эта проблема никогда не возникала. С момента выхода нового MetaTrader эта проблема существует. Поэтому я не думаю, что это связано с кодом. Должны быть внутренние изменения в самой платформе, которые приводят к сбою этого кода. А в этом индикаторе всего одна линия комментариев и он не работает. Так что это должно быть проблемой платформы/данных.


Вы уверены, что индикатор точно такой же, как и код, который вы опубликовали?

Похоже, что вы проверяете индикатор, у которого однострочный код находится в init, а не в start.

 

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


qjol:

очевидно, что вы не можете избежать обновления ;-), но вы должны избежать ситуации "нулевого деления"

поэтому вы должны проверить, равна ли одна из переменных 0.... в случае избежания деления нуля

и поскольку вы не можете остановить индикатор, вы должны что-то придумать.


мар:


Могу ли я дождаться завершения обновления, прежде чем продолжить расчет SL?

нет, не можете (уже написано выше)

qjol:
и поскольку вы не можете остановить индикатор, вы должны что-то придумать.


mar:


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


Я уже дал вам решение

SL = MathFloor((iATR(NULL, PERIOD_D1, 7, 0)*MathPow(10,Digits-exp)+1)*0.1);
if (SL == 0) // because error 4066 (for example)
   {
   SL = Someting;
   }
lots=MoneyRisk/SL/(MarketInfo(Symbol(), MODE_TICKVALUE)*multi);


случайный только до окончания обновления (не более 2-3 секунд плюс-минус) (ИМХО это лучше, чем получить сообщение об ошибке и индикатор вообще не будет работать)

если у вас есть другое решение, не стесняйтесь использовать его, мое разрешение не требуется ;-)


мар:


Переключитесь на любой таймфрейм, который вам нравится, кроме D1. Затем перетащите индикатор на свой график. В результате вы получите ошибку, как описано выше. Мне кажется, что ATR(5) на дневном графике не корректен из-за отсутствия ДНЕВНЫХ ДАННЫХ. Открытие "свежего" графика на таймфрейме D1 не вызывает никаких проблем. И когда вы переключаетесь на другой таймфрейм, все также нормально, потому что ATR(5) корректен. Я заметил, что я могу переключаться на любую пару, пока я остаюсь на графике D1. Но переключение на другие пары в других таймфреймах, кроме D1, вызывает проблемы до тех пор, пока MetaTrader не получит ежедневные данные. Итак, мой вопрос теперь в том, как я могу получить ежедневные данные, чтобы мой ATR-расчет был правильным, когда я открываю новый график в таймфрейме, который не D1?


поскольку вы используете iATR ... PERIOD_D1 и снова ... вы должны ждать, пока Daily пара закончит обновление (2-3 сек., если вы не используете dial up соединение).

 

qjol, извините за столько недоразумений! Теперь я понимаю, что Вы сказали мне кормить индикатор случайными данными только потому, что тогда исчезает деление на ноль. Я также не подумал о том, что после обновления данных индикатор использует правильное значение. Извините за тупость... :D

Но тем не менее вопрос остается открытым: почему, черт возьми, это работало раньше? Что не так с новым MetaTrader?

 
mar:


Но, тем не менее, вопрос остается открытым: почему, черт возьми, это работало раньше? Что не так с новым MetaTrader?


Это не связано со старым или новым MT4, это связано с тем, как работают и выполняются индикаторы.
поскольку индикаторы "не могут ждать" и выполняются немедленно
но, в это время у вас нет данных для iATR ... PERIOD_D1 поэтому. он равен 0
вот почему вы получаете нулевое деление
 
Это абсолютно ясно для меня. Но я использую этот индикатор уже довольно долгое время, и у меня никогда не было проблем с отсутствием данных или чего-то подобного. Поэтому мне интересно, почему это произошло в первый раз, когда я использую версию MT4 build-625.
 
mar:

Нет, я пробовал это сегодня. Приходит много тиков, но нет обновления AccountBalance. Я подождал почти минуту, но AccountBalance все еще был нулевым.


Дело в том, что в последние годы эта проблема никогда не возникала. С момента выхода нового MetaTrader эта проблема существует. Поэтому я не думаю, что это связано с кодом. Должны быть внутренние изменения в самой платформе, которые приводят к сбою этого кода. А в этом индикаторе всего одна линия комментариев и он не работает. Так что это должно быть проблемой платформы/данных.

Вы уверены, что индикатор точно такой же, как и код, который вы опубликовали?

Похоже, что вы проверяете индикатор, у которого однострочный код находится в init, а не в start.