[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 407

 
Zhunko:

Во всяком случае, без RefreshRates() мои советники работать не будут. Делаю их зацикленными. Поэтому RefreshRates() обязательна.

 Всмысле зацикленными? По сути, любой эксперт, можно сказать, зациклен, т.к. у старта есть цикл. Раз в тик..

Zhunko:

Первоначальную подкачку истории произвожу по этому принципу. Потом периодически подкачиваю. Иначе образуются "дыры" в истории, с которой работает эксперт. Почему это происходит - не знаю.

Сдаётся мне что это Вы торгуете в кухнях, поэтому и образуются дыры в истории. Я замечаю, что у отстойных кухонь такое бывает. А у качественного брокера такой хрени не должно быть.

Zhunko:

Пробовал использовать RefreshRates() для подкачки. Это работает не всегда.

Но RefreshRates() же служит для обновления переменных рыночного окружения, а не для подкачки. Есс-но что он не подкачает.


Zhunko:

Иногда приходит только последний бар.

Куда последний бар приходит?

Zhunko:

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

Хм. Ну если тянуть рыночные данные через MarketInfo() ошибок, как я понимаю, не должно быть. А если минуя, то есс-но.. Вроде как так. Я ещё не проверял, но логика по ходу такая.
 

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

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

Советник простой, параметров оптимизации почти нет. Не пипсовка. Торговля велась на D1 в период с 2000-2013 одним минимальным лотом 0,01 при депо в 100$. Получается такой отчет.

отчет


Можно ли доверять таким результатам? Всего 300 сделок, но по логике стратегии и таймфрейме в D1 - сильно больше и не должно быть. В стратегии есть всего один параметр оптимизации - лояльность к сигналам. Если сделать систему более строгой к ним, то по идее улучшаются параметры, но сделок становиться всего 175. Можно ли доверять результатам при таком количестве сделок? Или лучше выбрать первый вариант где хуже показатели, но больше сделок?

отчет 2


Или и то и другое полная ерунда и нужно больше мат ожидание и прочее?

 
на валютной паре EUR/USD Н4 светится " ожидание обновления " и не переключается на другие периоды как быть?
 
shurik32:
на валютной паре EUR/USD Н4 светится " ожидание обновления " и не переключается на другие периоды как быть?
Войти в историю F2 подкачать H4!
 
Vinin:

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

Сложно сказать на счёт выделенного. Это надо Метаквотов спросить.

Мне в MRC заблокировали реальный счёт из-за частого открытия и обновления графика. Это не функции MQL4, но штатные средства просмотра графика. Возможно, например, MarketInfo() обращается к серверу или только часть данных получает из обзора рынка.

==================================== 

На сколько помню, данные из обзора рынка не обязаны совпадать с Предопределенными переменными. Тогда что и откуда обновляет RefreshRates()?

У меня только один ответ. Обновление происходит подкачкой и сверкой истории с сервера. Многократно в этом убеждался при попытке обновить ей историю. Часто приходил только последний бар. После выгрузки терминала в HST-файле образовалась "дыра". Но если открыть этот график и обновить его, то "дыра" заполнялась. Кстати, при работе RefreshRates() в диспетчере задач можно наблюдать подгрузку данных.  Возможно, что сверка не происходит в случае обновления истории функцией RefreshRates(), а при обновлении графика происходит. 

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

hoz:
1. Всмысле зацикленными? По сути, любой эксперт, можно сказать, зациклен, т.к. у старта есть цикл. Раз в тик..

2. Сдаётся мне что это Вы торгуете в кухнях, поэтому и образуются дыры в истории. Я замечаю, что у отстойных кухонь такое бывает. А у качественного брокера такой хрени не должно быть.

3. Но RefreshRates() же служит для обновления переменных рыночного окружения, а не для подкачки. Есс-но что он не подкачает.

4. Куда последний бар приходит?

5. Хм. Ну если тянуть рыночные данные через MarketInfo() ошибок, как я понимаю, не должно быть. А если минуя, то есс-но.. Вроде как так. Я ещё не проверял, но логика по ходу такая.

1. Вот так:

extern string Tool           = "";    // Имя инструмента.
extern bool   IsRefreshRates = false; // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
  string sTool = Tool; // Имя инструмента.
  if (Tool == "") sTool = Symbol();
  while (!IsStopped())
   {
    if (IsRefreshRates) RefreshRates();
    Comment("MarketInfo()\n",
            TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
            DoubleToStr(MarketInfo(sTool, MODE_BID), Digits), "  ", DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits),
            "\n\nПредопределенные переменные\n",
            TimeToStr(Time[0], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
            DoubleToStr(Bid, Digits), "  ", DoubleToStr(Ask, Digits),
            "\n\nМассив-таймсерия \"Close[]\"\n",
            TimeToStr(Time[0], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
            DoubleToStr(Close[0], Digits));
    Sleep(300);
   }
 }

2. Это от брокера не зависит. Это особенность терминала и его работа с сервером. Почему-то RefreshRates() обновляет историю не так, как обновление графика.

3. Может уже справку почитаете? Вот ещё раз:

 Обновление данных в предопределенных переменных и массивах-таймсериях. Эта функция используется, когда эксперт или скрипт производит вычисления в течение долгого времени и нуждается в обновленных данных. Возвращается TRUE, если данные обновлены, иначе FALSE. Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала. Эксперты и скрипты работают с собственной копией исторических данных. Копия данных по текущему инструменту создается при первоначальном запуске эксперта или скрипта. При каждом следующем запуске эксперта (напомним, что скрипт выполняется однократно и не зависит от приходящих тиков) первоначально созданная копия обновляется. За то время, пока эксперт или скрипт работает, может прийти один или несколько новых тиков, поэтому данные могут устареть.

4. О чём разговор-то? Разговор об обновлении данных в потоке эксперта.

5. Код эксперта, что выше, показывает, как и где обновляются данные. Если не включать IsRefreshRates, то данные обновляются только в MarketInfo().

 
 

Успешно торговал на alpari с ilan 2.0 (1.6) с толковыми настройками, пока не стали приходить предупреждения о частых непродуктивных запросах, которые зря грузят сервер. Оказалось, что при быстром рынке alpari увеличивает минимально возможный уровень выставления стоп-лосс до 2х спредов, что соотвествовало 40 пунктам, иногда менее. Но мой советник, по-видимому, выставляет эту величину в диапазоне 15-55 пунктов, это я понял, полистав код советника. Но alpari это соответственно неустраивало и пригрозили блокировкой, так что приостановил торговлю. Не зная практически mql4, отредактировал просто в коде советника эти строчки, которые мне показались единственными, которые отвечают за проблему, это во вкладке любой ilan, недалеко от начала:

 double PrevCl;

   double CurrCl;

   if (UseTrailingStop) TrailingAlls(TrailStart, TrailStop, AveragePrice);

   if ((iCCI(NULL,15,55,0,0)>Drop && ShortTrade)||(iCCI(NULL,15,55,0,0)<(-Drop) && LongTrade)) { 

где тупо поменял цифры 15 на 40, чтобы решить проблему, но далее от alpari я узнал, что проблема не решена, то есть я сделал что-то не так, что не удивительно. Подскажите, как правильно отредактировать код советника, чтобы он выставлял уровень стоп-лосс в диапазоне 40-55 пунктов, а не 15-55. Понимаю, что диапазон 40-55 маловат для удобного выставления стоп-лоссов, да и от цены далековато, что уменьшает прибыль. Но выбора особо нету, покидать alpari не хочется, там удобно. В стандартных настройках советника соотвествующего параметра нету.

 
Dmido:

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

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

Советник простой, параметров оптимизации почти нет. Не пипсовка. Торговля велась на D1 в период с 2000-2013 одним минимальным лотом 0,01 при депо в 100$. Получается такой отчет.


Можно ли доверять таким результатам? Всего 300 сделок, но по логике стратегии и таймфрейме в D1 - сильно больше и не должно быть. В стратегии есть всего один параметр оптимизации - лояльность к сигналам. Если сделать систему более строгой к ним, то по идее улучшаются параметры, но сделок становиться всего 175. Можно ли доверять результатам при таком количестве сделок? Или лучше выбрать первый вариант где хуже показатели, но больше сделок?



Или и то и другое полная ерунда и нужно больше мат ожидание и прочее?


10% в год это хорошо или плохо?
 
Andrew245:

Успешно торговал на alpari с ilan 2.0 (1.6) с толковыми настройками, пока не стали приходить предупреждения о частых непродуктивных запросах, которые зря грузят сервер. Оказалось, что при быстром рынке alpari увеличивает минимально возможный уровень выставления стоп-лосс до 2х спредов, что соотвествовало 40 пунктам, иногда менее. Но мой советник, по-видимому, выставляет эту величину в диапазоне 15-55 пунктов, это я понял, полистав код советника. Но alpari это соответственно неустраивало и пригрозили блокировкой, так что приостановил торговлю. Не зная практически mql4, отредактировал просто в коде советника эти строчки, которые мне показались единственными, которые отвечают за проблему, это во вкладке любой ilan, недалеко от начала:

 double PrevCl;

   double CurrCl;

   if (UseTrailingStop) TrailingAlls(TrailStart, TrailStop, AveragePrice);

   if ((iCCI(NULL,15,55,0,0)>Drop && ShortTrade)||(iCCI(NULL,15,55,0,0)<(-Drop) && LongTrade)) { 

где тупо поменял цифры 15 на 40, чтобы решить проблему, но далее от alpari я узнал, что проблема не решена, то есть я сделал что-то не так, что не удивительно. Подскажите, как правильно отредактировать код советника, чтобы он выставлял уровень стоп-лосс в диапазоне 40-55 пунктов, а не 15-55. Понимаю, что диапазон 40-55 маловат для удобного выставления стоп-лоссов, да и от цены далековато, что уменьшает прибыль. Но выбора особо нету, покидать alpari не хочется, там удобно. В стандартных настройках советника соотвествующего параметра нету.


так и меняйте параметры стоплосса, зачем вы меняете параметры индикатора?
 
pako:

так и меняйте параметры стоплосса, зачем вы меняете параметры индикатора?

догадывался об этом, но не могу их никак найти, эти параметры стоп-лосса
Причина обращения: