Страница 2 из 6«123456»
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Исправление ошибок в советниках на новых билдах (Помощь в исправлении)
Исправление ошибок в советниках на новых билдах
Дата: Четверг, 04.09.2014, 12:55 | Сообщение # 1 Написал: expforex
Группа: Администраторы
Сообщений: 9132
Награды: 0
Статус: Online


Исправление ошибок в советниках. Ошибки при компиляции? Мы постараемся Вам помочь.

С начала 2014 года компания MetaQuotes выпустила большое обновление для терминалов MetaTrader4.

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

Мы написали статью по стандартным ошибкам в старых экспертах, которые можно исправить:
Новый язык программирования, Исправление ошибок при компиляции экспертов

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

Для того чтобы Вам помогли в данной ветке, выполните несколько шагов:

  • 1. Прикрепите эксперт в открытом коде с ошибками (Декомпил не приветствуется)
  • 2. Прикрепите информацию по данному эксперту, первоначальное ТЗ на разработку, либо документацию, что эксперт должен делать
  • 3. Прикрепите картинку с графика, где стоит эксперт, если он работает но не так.
  • 4. Опишите проблемы, которые возникли с экспертом на новом билде.
    Мы постараемся помочь Вам в решении данных проблем.




attach_file Прикрепления: 0900205.jpg(24Kb)

gestureс Уважением, Владислав Expforex

Дата: Пятница, 19.09.2014, 13:42 | Сообщение # 11 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

не помогло. проблема не решилась... wink

Дата: Суббота, 20.09.2014, 01:36 | Сообщение # 12 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

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

int tick=1;
double spread;
double average_spread;

int ()
{
spread=MarcetInfo (Symbol (), MODE_SPREAD);
}

start ()
{
average_spread=(spread/tick);

spread+=MarcetInfo (Symbol (), MODE_SPREAD);
tick++;
................

Что скажете?глупость или может получиться????

Сообщение отредактировал Nazar - Воскресенье, 21.09.2014, 11:12

Дата: Суббота, 20.09.2014, 11:03 | Сообщение # 13 Написал: expforex
Группа: Администраторы
Сообщений: 9132
Награды: 0
Статус: Online

Nazar, есть грамматические ошибки, но принцип тот же. 

вот ормула в советнике мне не совсем понятна:


Код
double Spreadt(double AddValue=0)
   {
    double LastValue;
    static double ArrayTotal=0;
//---  
    if(AddValue == 0 && SpreadSampleSize <= 0) return(Ask-Bid);
    if(AddValue == 0 && ArrayTotal == 0) return(Ask-Bid);
    if(AddValue == 0 ) return(ArrayTotal/ArraySize(Spread));
//---  
    ArrayTotal=ArrayTotal+AddValue;
    ArraySetAsSeries(Spread,true);
    if(ArraySize(Spread)==SpreadSampleSize)
      {
       LastValue=Spread[0];
       ArrayTotal=ArrayTotal-LastValue;
       ArraySetAsSeries(Spread,false);
       ArrayResize(Spread,ArraySize(Spread)-1);
       ArraySetAsSeries(Spread,true);
       ArrayResize(Spread,ArraySize(Spread)+1);
      }
    else ArrayResize(Spread,ArraySize(Spread)+1);
    ArraySetAsSeries(Spread,false);
    Spread[0]=AddValue;
//---
    return(NormalizeDouble(ArrayTotal/ArraySize(Spread), Digits));
   }

gestureс Уважением, Владислав Expforex

Дата: Суббота, 20.09.2014, 12:04 | Сообщение # 14 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

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

Дата: Понедельник, 22.09.2014, 18:20 | Сообщение # 15 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

возможно проблема здесь?      

Код
ArrayResize(Spread,ArraySize(Spread)-1);
        ........
        ArrayResize(Spread,ArraySize(Spread)+1);


зачем здесь "ArraySize(Spread)-1"   если  при невыполнении функция arrayresize и так возвращает  -1  и массив размер менять не будет?
может ету строку удалить?

Сообщение отредактировал Nazar - Понедельник, 22.09.2014, 18:58

Дата: Понедельник, 22.09.2014, 19:03 | Сообщение # 16 Написал: expforex
Группа: Администраторы
Сообщений: 9132
Награды: 0
Статус: Online

это строка изменяет размер массива.
В любом языке программировании отсчет начинается с 0,
если два значения то это 0 и 1
следовательно чтобы задать размер массива пишут - размер массива -1 или +1
+1 добавляет два значения
хм

удалите это:
 ArrayResize(Spread,ArraySize(Spread)+1);
а вместо
ArrayResize(Spread,ArraySize(Spread)-1); 
поставьте ArrayResize(Spread,ArraySize(Spread));

gestureс Уважением, Владислав Expforex

Дата: Вторник, 23.09.2014, 11:31 | Сообщение # 17 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

Ваш вариант не работает,попрежнему то в минус то в сумасшедший плюс. попробовал удалить строку ArrayResize(Spread,ArraySize(Spread)-1);  все заработало. Хотя я не понимаю почему Ваш вариант не работает. suspect

Сообщение отредактировал Nazar - Вторник, 23.09.2014, 13:30

Дата: Вторник, 23.09.2014, 12:11 | Сообщение # 18 Написал: expforex
Группа: Администраторы
Сообщений: 9132
Награды: 0
Статус: Online

Nazarwink

gestureс Уважением, Владислав Expforex

Дата: Вторник, 23.09.2014, 13:35 | Сообщение # 19 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

expforex, ех уж ети новые билды bash

Дата: Понедельник, 20.10.2014, 13:39 | Сообщение # 20 Написал: Nazar
Группа: Пользователи
Сообщений: 12
Награды: 0
Статус: Offline

expforex, здравствуйте! подскажите как правильно спрятать индикаторы советника в тестере стратегий. достаточно ли етой стороки или нужно прописать индикаторы которые надо прятать?

Код
{
    HideTestIndicators(true);   
   }

Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Исправление ошибок в советниках на новых билдах (Помощь в исправлении)
Страница 2 из 6«123456»
Поиск: