МТ4 или МТ5. Какие преимущества и недостатки? - страница 30

 

Mickey Moose:

Хуже, и я уже отписал почему

Это о чем, вопрос о тиках ? Возможно , где то еще что то писали - мне лень искать, так как знаю , что не увижу ничего логично изложенного с большой глубиной  знаний и практикой.  

      Не стану стучать лысиной по паркету,  брызгать слюной , в попытках убеждать , что то доказывать.

Что бы понять разницу , видимо у Вас просто не хватает ни знаний ни опыта, но это пройдет  - наберетесь опыта ,  время просто расставит все на свои места.

Со всем уважением к Вашей молодости.

 

Было бы очень хорошо, если бы добавили для мобильного приложения MT5 для IPad тоже количество таймфреймов, что и в стационарной версии на компе

и дико не устраивает , что в мт 5 нельзя открыть дополнительную позицию на оном инструменте, плохо что терминал объединяет позиции, а в целом качество продукта ураган

 
marand.pamm:

Было бы очень хорошо, если бы добавили для мобильного приложения MT5 для IPad тоже количество таймфреймов, что и в стационарной версии на компе

и дико не устраивает , что в мт 5 нельзя открыть дополнительную позицию на оном инструменте, плохо что терминал объединяет позиции, а в целом качество продукта ураган


Вероятно Вы не в курсе, но в MetaTrader 5 уже давно существует две системы учета позиций:

  • неттинговая - по одному символу может быть открыта только одна позиция
  • хеджинговая - по одному символу могут быть открыты несколько позиций, при этом они могут быть разнонаправленными
    В MetaTrader 5 добавлена хеджинговая система учета позиций
    В MetaTrader 5 добавлена хеджинговая система учета позицийПлатформа MetaTrader 5 изначально создавалась для биржевой торговли с. неттинговым учетом позиций. При неттинговом учете по одному финансовому. инструменту можно иметь только одну позицию, поэтому все дальнейшие операции по нему ведут к изменению объема, закрытию или развороту существующей позиции. Чтобы расширить возможности трейдеров ритейл-форекса, в платформу добавлена вторая система учета хеджинг. Теперь по инструменту можно иметь множество позиций, в том числе разнонаправленных. Это позволяет реализовывать торговые стратегии с так называемым локированием если цена пошла против трейдера, он имеет возможность открыть позицию в противоположном направлении. Новая система учета аналогична используемой в. MetaTrader 4, она будет привычна трейдерам. При этом они смогут использовать все преимущества пятой версии платформы исполнение ордеров несколькими сделками (в том числе частичное), мультивалютный и. многопоточный тестер с поддержкой вычислительной сети MQL5 Cloud Network и многое...
    Статьи | 2016.03.21 13:01 | MetaQuotes Software Corp. | Трейдинг | MetaTrader 5
 
вот так вот,  отсутствие знаний все и определяет. 

 
Yuriy Zaytsev:

Это о чем, вопрос о тиках ? Возможно , где то еще что то писали - мне лень искать, так как знаю , что не увижу ничего логично изложенного с большой глубиной  знаний и практикой.  

      Не стану стучать лысиной по паркету,  брызгать слюной , в попытках убеждать , что то доказывать.

Что бы понять разницу , видимо у Вас просто не хватает ни знаний ни опыта, но это пройдет  - наберетесь опыта ,  время просто расставит все на свои места.

Со всем уважением к Вашей молодости.


1) пост 284, я не буду даже чему то учится если в этом направлении продукты не пользуются спросом. Как курс тригонометрии из школьной программы - не пользовался ни разу в жизни.

2) я в том году написал\накачал кучу всего что было нужно. Суммарно получилось 15 тысяч строк кода для всего вместе взятого И вот я значит все это должен выбросить и писать заново только потому что кто - то посчитал что будет "лучше"? Что мне это даст если текущий конфиг прекрасно работает?

3) Есть счета с историей несколько лет на 4ке - почему я должен все это выбросить в мусор? Повар не будет это переносить, уже интересовался у техподдержки. Это Для меня важный материал из серии "по данной стратегии я смогу слить Х% в год и не меньше"

И это только за пару минут что вспомнил. Есть плюс который все это перекроет? Тогда вопрос будет закрыт.

 
Mickey Moose:

1) пост 284, я не буду даже чему то учится если в этом направлении продукты не пользуются спросом. Как курс тригонометрии из школьной программы - не пользовался ни разу в жизни.

2) я в том году написал\накачал кучу всего что было нужно. Суммарно получилось 15 тысяч строк кода для всего вместе взятого И вот я значит все это должен выбросить и писать заново только потому что кто - то посчитал что будет "лучше"? Что мне это даст если текущий конфиг прекрасно работает?

3) Есть счета с историей несколько лет на 4ке - почему я должен все это выбросить в мусор? Повар не будет это переносить, уже интересовался у техподдержки. Это Для меня важный материал из серии "по данной стратегии я смогу слить Х% в год и не меньше"

И это только за пару минут что вспомнил. Есть плюс который все это перекроет? Тогда вопрос будет закрыт.

Сообщество медленно переползает с мт4 (mql4) на мт5 (mql5) , продуктов еще мало - но количество постепенно увеличиваются.

MQ - просто так в один день не могут убить MT4 , ибо есть рынок , который его еще требует.

В свое время был терминал mt3 и там тоже был язык , которому далеко до mql4 и еще дальше до mql5 , mt3 - канул в вечность,  кое кто о нем вообще никогда не слышал,  будьте начеку , внимательны  -  не прозевайте  переход.

иначе можно будет попасть вот в такую историю    Помогите конвертировать Profitunity (MT3) в МТ4   только будет  (MT4) в MT5

 

Помогите конвертировать Profitunity (MT3) в МТ4
Помогите конвертировать Profitunity (MT3) в МТ4
  • 2006.07.09
  • www.mql5.com
Пожалуйста, Помогите конвертировать Profitunity (MT3) в МТ4 или хотя бы отдельные индикаторы: пять последовательных баров одного цвета и раскраску...
 
George Merts:

То есть ?

Я не раз выкладывал свой код, который абсолютно одинаково, безо всяких изменений компилируется и работает как в МТ4 так и в МТ5.

У меня все эксперты - работают на счету МТ4, но тестирую я их в МТ5, поскольку средства для этого там удобнее.

Ты бы (давай на "ты") продемонстрировал, в чем разница языка МТ4 и МТ5. Я бы хоть поглядел.

Разница есть в протоколах посылки торговых приказов, но язык-то тут при чем ? Существует библиотека, которая преобразует эти протоколы так, чтобы эксперты, написанные для МТ4 без проблем переводились на МТ5. Это возможно как раз потому, что MQL4 и MQL5 - один и тот же язык.


разница языков может и минимальна, но часто бывают случаи, когда поведение некоторых мелких функций разное. Пишешь на 4 вставляешь в 5 компилятор молчит, ставишь на график и начинаешь искать что зачем выполняется..и почему работает так а не как в 4
примеров приводить не буду, скажу одно каждый раз приходится мудрить в 5 как там это работает(
пишу сначала на 4, потому как проверяю поэтапно каждый блок и хочу быть уверен, что если, что то не так, то это я не так написал; с 5 такой уверенности до сих пор нет(
если за "одинаковостью" нужно специально следить разве это одинаково..

 
Pavel Verveyko:

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

Странно.

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

Pavel Verveyko:

примеров приводить не буду, скажу одно каждый раз приходится мудрить в 5 как там это работает(
пишу сначала на 4, потому как проверяю поэтапно каждый блок и хочу быть уверен, что если, что то не так, то это я не так написал; с 5 такой уверенности до сих пор нет(
если за "одинаковостью" нужно специально следить разве это одинаково..

Тоже странно, если КАЖДЫЙ РАЗ мудришь - то легко можешь привести пример такой разности работы. Я вот, кроме как вышеупомянутую функцию объединения строк - и припомнить ничего не могу.

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

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

Я уж не говорю, что писать изначально надо на пятерке, и потом - проверять на четверке (хотя, когда написаны кроссплатформенные классы - даже этого не надо).

 

я тут подумал , может я просто не занимался "кроссплатформенностью" целенаправленно отсюда такое отношение.
и я Вас ввёл в заблуждение, извините) - мелкие функции имел ввиду мои написанные функции которые за счёт разности программ работают иначе. речь не о функциях языка.
разница в том что это разные программы в которых различия: в 5 нужно специально подготавливать данные, индикаторные массивы в разную сторону, в 5 отсутствуют не которые функции которые указаны в этой статье https://www.mql5.com/ru/articles/81 , раньше было замечено что 4 не так критична воспринимает отсутствие например ChartRedrow я сейчас уже так не вспомню остальное(
я вот всерьёз задумался а может и правда продумать все различия в языках и вписать на уровне препроцессора.

я так понимаю это нужно вписать в двух вариантах- организация предопределённых переменных, направлений массивов в индикаторах если нужно конечно (я привык как в 4), получение данных из индикаторов, функции которых нет в 5, и использование одинаковых торговых классов из библиотеки. и тогда будет кросс платформенный код, верно или что то ещё нужно? и не использовать функции ObjectGet то есть без типа в имени так как в 5 такой нет.


а вот пример - код компилируется в обоих компиляторах. 
(белая рамка перемещается мышью за ней синхронно двигается чёрный квадрат)
но в MT5 так не работает расстояние нарушается  (значит где то есть разница в обработке функций)
#property strict
#property indicator_chart_window
#property indicator_plots 0
string Common_List = "Common_List";
string Other_List = "Other_List";
int x_common_list = 452;
int y_common_list = 30;
int x_other_list = 482;
int y_other_list = 70;
long x_memory = x_common_list;
long y_memory = y_common_list;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,0,true);

   if (ObjectCreate(0,Common_List,OBJ_RECTANGLE_LABEL,0,0,0))   
   {
      ObjectSetInteger(0,Common_List,OBJPROP_XDISTANCE,x_common_list);                  
      ObjectSetInteger(0,Common_List,OBJPROP_YDISTANCE,y_common_list);                    
      ObjectSetInteger(0,Common_List,OBJPROP_XSIZE,400);              
      ObjectSetInteger(0,Common_List,OBJPROP_YSIZE,400);              
      ObjectSetInteger(0,Common_List,OBJPROP_BGCOLOR,Gray);        
      ObjectSetInteger(0,Common_List,OBJPROP_BORDER_TYPE,BORDER_FLAT); 
      ObjectSetInteger(0,Common_List,OBJPROP_CORNER,CORNER_LEFT_UPPER); // 
      ObjectSetInteger(0,Common_List,OBJPROP_COLOR,White);                   
      ObjectSetInteger(0,Common_List,OBJPROP_STYLE,STYLE_SOLID);              
      ObjectSetInteger(0,Common_List,OBJPROP_WIDTH,3);                      
      ObjectSetInteger(0,Common_List,OBJPROP_BACK,false);            
      ObjectSetInteger(0,Common_List,OBJPROP_SELECTABLE,true); 
      ObjectSetInteger(0,Common_List,OBJPROP_SELECTED,true);
   } 
      
   if (ObjectCreate(0,Other_List,OBJ_RECTANGLE_LABEL,0,0,0))    
   {
      ObjectSetInteger(0,Other_List,OBJPROP_XDISTANCE,x_other_list);                   
      ObjectSetInteger(0,Other_List,OBJPROP_YDISTANCE,y_other_list);               
      ObjectSetInteger(0,Other_List,OBJPROP_XSIZE,100);              
      ObjectSetInteger(0,Other_List,OBJPROP_YSIZE,100);            
      ObjectSetInteger(0,Other_List,OBJPROP_BGCOLOR,Black);      
      ObjectSetInteger(0,Other_List,OBJPROP_BORDER_TYPE,BORDER_FLAT); 
      ObjectSetInteger(0,Other_List,OBJPROP_CORNER,CORNER_LEFT_UPPER);   
      ObjectSetInteger(0,Other_List,OBJPROP_COLOR,White);                    
      ObjectSetInteger(0,Other_List,OBJPROP_STYLE,STYLE_SOLID);               
      ObjectSetInteger(0,Other_List,OBJPROP_WIDTH,1);                      
      ObjectSetInteger(0,Other_List,OBJPROP_BACK,false);             
   } 

   ChartRedraw(0);                                               

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   ObjectDelete(0,Other_List);
   ObjectDelete(0,Common_List);
   ChartRedraw(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   switch (id)
   {
      case CHARTEVENT_MOUSE_MOVE:
      {
         if (ObjectGetInteger(0,Common_List,OBJPROP_SELECTED))
         {                   
         
            long x_div = ObjectGetInteger(0,Common_List,OBJPROP_XDISTANCE,0)-x_memory;
            long y_div = ObjectGetInteger(0,Common_List,OBJPROP_YDISTANCE,0)-y_memory;     
                  
            ObjectSetInteger(0,Other_List,OBJPROP_XDISTANCE,ObjectGetInteger(0,Other_List,OBJPROP_XDISTANCE)+x_div);
            ObjectSetInteger(0,Other_List,OBJPROP_YDISTANCE,ObjectGetInteger(0,Other_List,OBJPROP_YDISTANCE)+y_div);

            x_memory = ObjectGetInteger(0,Common_List,OBJPROP_XDISTANCE,0);
            y_memory = ObjectGetInteger(0,Common_List,OBJPROP_YDISTANCE,0);

            ChartRedraw(0);
         }      
         break;
      }
   } 
}
//+------------------------------------------------------------------+
Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

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

при навыке никаких проблем