Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

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

expforexДата: Четверг, 04.09.2014, 12:55 | Сообщение # 1
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]


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

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

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

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

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

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

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




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


Программирование на заказ || Наши Разработки

 
Сообщение

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

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

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

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

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

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

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





Автор - expforex
Дата добавления - 04.09.2014 в 12:55

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


[Бонусы за сообщения ]

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

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

Автор - Nazar
Дата добавления - 19.09.2014 в 13:42

NazarДата: Суббота, 20.09.2014, 01:36 | Сообщение # 12
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 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
 
СообщениеЯ в программировании не силен , извиняйте если напишу глупость но если попробовать так

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
Дата добавления - 20.09.2014 в 01:36

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


[Бонусы за сообщения ]

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));
   }



Программирование на заказ || Наши Разработки

 
Сообщение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));
   }

Автор - expforex
Дата добавления - 20.09.2014 в 11:03

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


[Бонусы за сообщения ]

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

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

Автор - Nazar
Дата добавления - 20.09.2014 в 12:04

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


[Бонусы за сообщения ]

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

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


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



Сообщение отредактировал Nazar - Понедельник, 22.09.2014, 18:58
 
Сообщениевозможно проблема здесь?      
Код
ArrayResize(Spread,ArraySize(Spread)-1);
        ........
        ArrayResize(Spread,ArraySize(Spread)+1);


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

Автор - Nazar
Дата добавления - 22.09.2014 в 18:20

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


[Бонусы за сообщения ]

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

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



Программирование на заказ || Наши Разработки

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

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

Автор - expforex
Дата добавления - 22.09.2014 в 19:03

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


[Бонусы за сообщения ]

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



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

Автор - Nazar
Дата добавления - 23.09.2014 в 11:31

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


[Бонусы за сообщения ]

Nazarwink



Программирование на заказ || Наши Разработки

 
СообщениеNazarwink

Автор - expforex
Дата добавления - 23.09.2014 в 12:11

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


[Бонусы за сообщения ]

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

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

Автор - Nazar
Дата добавления - 23.09.2014 в 13:35

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


[Бонусы за сообщения ]

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

Код
{
    HideTestIndicators(true);   
   }

 
Сообщениеexpforex, здравствуйте! подскажите как правильно спрятать индикаторы советника в тестере стратегий. достаточно ли етой стороки или нужно прописать индикаторы которые надо прятать?
Код
{
    HideTestIndicators(true);   
   }

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


WebMoney Яндекс цитирования.