Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1514

 
Линии выставлял чтобы увидеть где сработает советник, на место линий вставил условие на выставление и модификацию ордеров и советник заработал. Честно говоря рад тому, что он хоть заработал. Это мой первый самостоятельный советник. Дошло, почему тестер выставлял только одну линию ))
 
Alexey Viktorov:

Проверяйте пересечение МА не на 1 и 2 барах, а на 3 и 4. И если пересечение, то проверить значения АО на 1 и 2 барах.

Спасибо. Буду пробовать.
 

есть еще одна головная боль - объясните как прописать клавишу KEY_TILDE для выделения объекта Прямоугольная метка, чтобы можно было выделить и переместить на другое место на графике, никак не могу понять. В низу прикрепил скрин с примером на индикаторе Вилка Нео.  С мышкой разобрался, а вот с назначение клавиш никак.

int OnInit()
  {
RectLabelCreate(0,"RectLabel",0,10,200,149,143,C'55,55,55',BORDER_SUNKEN,CORNER_LEFT_LOWER,C'55,55,55',STYLE_SOLID,1,false,false,true,0);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam) // параметр события типа string
  {

    if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE:
            Print("Нажата KEY_TILDE");
            break;
        }
        ChartRedraw(); 
     }

  }
Файлы:
01.jpg  8 kb
02.jpg  3 kb
 
DYM:

есть еще одна головная боль - объясните как прописать клавишу KEY_TILDE для выделения объекта Прямоугольная метка, чтобы можно было выделить и переместить на другое место на графике, никак не могу понять. В низу прикрепил скрин с примером на индикаторе Вилка Нео.  С мышкой разобрался, а вот с назначение клавиш никак.

    if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE:
         ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true); 
         Print("Нажата KEY_TILDE");
         break;
        }
        ChartRedraw(); 
     }
 
MakarFX:
Спасибо большое за подсказку. Понял что нужно использовать разрешение и выделение, но как применить, всё никак не доходило. Ещё раз спасибо.
 
Коллеги! Странная ситуация, допилил советник. В тестере гоняет хорошо, настроен так что при добавлении на график сразу откроет случайный ордер. Оптимально для GBPUSD. Но на демо не открывает ордера. Спред поставил широкий, ошибок не выдает, но опять же за то время что поставил на сутки не открыл ордера, но за те же сутки по скачаным тикам в тестере поторговал нормально. Все настройки метатрейдера в норме, рожица улыбается, связь с брокерским серваком вроде тоже нормальная. Остается смотреть что там не так с кодом. Хотя индюки к нему не требуются и параметры валидные по условиям для пропуска открытия ордеров. Ломаю голову. 
Файлы:
BlackJack.mq4  47 kb
 
Порт-моне тв:
Коллеги! Странная ситуация, допилил советник. В тестере гоняет хорошо, настроен так что при добавлении на график сразу откроет случайный ордер. Оптимально для GBPUSD. Но на демо не открывает ордера. Спред поставил широкий, ошибок не выдает, но опять же за то время что поставил на сутки не открыл ордера, но за те же сутки по скачаным тикам в тестере поторговал нормально. Все настройки метатрейдера в норме, рожица улыбается, связь с брокерским серваком вроде тоже нормальная. Остается смотреть что там не так с кодом. Хотя индюки к нему не требуются и параметры валидные по условиям для пропуска открытия ордеров. Ломаю голову. 

Очень много узких мест. Код написан плохо - крайне неаккуратная обработка данных. Нужен рефакторинг

 
Nikita Chernyshov:

Очень много узких мест. Код написан плохо - крайне неаккуратная обработка данных. Нужен рефакторинг

Ваша абстрактная оценка не выявляет причину. 

 
Порт-моне тв:

какие нах узкие места...какой в @@#$ рефактор

код написан "для себя единственного любимого, под пиво и пока помню" :-)

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

----

любой код документируется/комментируется на случай внезапной личной проф-амнезии. Это когда забыл всё, кроме языка программирования.

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

вы-же в том числе. Сделав перерыв два-три месяца вы не вспомните нафига там столько переменных в OnTick и что от них хотелось считать

 
Maxim Kuznetsov:

какие нах узкие места...какой в @@#$ рефактор

код написан "для себя единственного любимого, под пиво и пока помню" :-)

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

----

любой код документируется/комментируется на случай внезапной личной проф-амнезии. Это когда забыл всё, кроме языка программирования.

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

вы-же в том числе. Сделав перерыв два-три месяца вы не вспомните нафига там столько переменных в OnTick и что от них хотелось считать

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