Обучение языку MQL5 под MetaTrader 5📌

От pavlus777, 1 августа, 2016 в Уголок Программиста

Страница 9 из 12
#201

Для MQL5 функционал вышел под экономический календарь _https://www.mql5.com/ru/docs/calendar
Ни статей, ни примеров пока нет ни где, было бы очень актуально записать урок по этой теме, если не затруднит.

Автор#202

http://tlap.io/otlichiya-mezhdu-mql4-i-mql5/

Новый урок

#203

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

Автор#204


Для MQL5 функционал вышел под экономический календарь _https://www.mql5.com/ru/docs/calendar
Ни статей, ни примеров пока нет ни где, было бы очень актуально записать урок по этой теме, если не затруднит.


Готово
http://tlap.io/mql5-pishem-novostnoj-sovetnik/
#205

Господа программисты MQL5 да и все остальные форумчане, как известно, в МТ5 встречные позиции по одному инструменту перекрываются. Замки, как МТ4 не поставишь. А хотелось бы. Очень хотелось бы иногда. Идея проста - хеджироваться по корреллируемой валютной паре.Не совсем замок, но все же. Пересчитать объем по стоимости пункта, можно приплести сюда волатильность и вперед. Спать спокойно не даст, но все же реальная страховка. Особенно для СОВЕТНИКА.

#206


Господа программисты MQL5 да и все остальные форумчане, как известно, в МТ5 встречные позиции по одному инструменту перекрываются. Замки, как МТ4 не поставишь. А хотелось бы. Очень хотелось бы иногда. Идея проста - хеджироваться по корреллируемой валютной паре.Не совсем замок, но все же. Пересчитать объем по стоимости пункта, можно приплести сюда волатильность и вперед. Спать спокойно не даст, но все же реальная страховка. Особенно для СОВЕТНИКА.


В МТ5 уже довольно давно можно открывать замок или локироваться.
https://www.mql5.com/ru/articles/2299
#207

Есть еще брокеры, которые для МТ5 разрешают только неттинговые позиции.
Если советник не под конкретного брокера пишется, я бы перестраховался. Если память не изменяет, там функция есть AccountInfoInteger(ACCOUNT_MARGIN_MODE) для проверки типа счета

#208

Есть еще брокеры, которые для МТ5 разрешают только неттинговые позиции.
Если советник не под конкретного брокера пишется, я бы перестраховался. Если память не изменяет, там функция есть AccountInfoInteger(ACCOUNT_MARGIN_MODE) для проверки типа счета

#210

Приветствую всех.

Вопрос от новичка по 2-му уроку - Работа с ордерами.

Почему-то редактор не видит "MqlTradeRequest o_request".

Т. е. с 17 строки  после "o_request" не дополняет после точки и в выпадающем списке нет.
o_result нормально видит, в чем может быть дело?

Screenshot_1.jpg

Изменено 29 июня, 2019 пользователем Elkino

#211
16 часов назад, Elkino сказал:

Почему-то редактор не видит "MqlTradeRequest o_request".

"о_" может раскладка языка другую английская "o" или русская "о" похоже визуально, но с точки программирования это разные вещи.

Еще может MQL еще не подхватил "о_". Попробуй написать в ручную и скомпилировать код. И тут либо не будет ошибок и пойдет все как по маслу, либо будут ошибки и они тебе подскажут в чем проблема.

Изменено 30 июня, 2019 пользователем MikR0ReR

#212

Здравствуйте, подскажите пож, возможно ли в МТ5(mql5) использовать внешнюю dll.

Куда ее копировать?  Как Вызывать ?

Спасибо.

#214

Спасибо за подсказку, но у меня не получается.
#import "MQL5\Libraries\permvar2.dll"

.

.

Ошибка :
'#import' - #import was not closed    stend_mq52.mq5    11    1
 

#215
1 час назад, berlios сказал:

но у меня не получается

Могу предположить что закрывающего импорта у вас нет.

#import "stdlib.ex5" 				открыли
string ErrorDescription(int error_code); 
#import						закрыли

#import "ExpertSample.dll"			открыли
int    GetIntValue(int); 
#import						закрыли

Почитай "Вызов импортируемых функций" https://www.mql5.com/ru/docs/runtime/imports

#216

Спасибо за напряги, все скомпелировалось.

Однако оказалось все напрасно, dll оказывается 32-битная, mql5 - ругается.

#217
39 минут назад, berlios сказал:

Однако оказалось все напрасно, dll оказывается 32-битная, mql5 - ругается.

Если импортируемая функция имеет разные варианты вызова для 32-х и 64-х битной версий Windows, то необходимо импортировать оба и явно вызывать нужный вариант функции с помощью переменной _IsX64.

https://www.mql5.com/ru/docs/basis/preprosessor/import

https://www.mql5.com/ru/docs/predefined/_isx64

#218

Т.е насколько я понимаю 32-разрядную dll в mql5 вызывать можно.

Или нельзя ?

#219

знаю, что это просто, но не могу сообразить. подскажите пжл

 

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

линия строится по зонам перекуплености осциллятора на графике цены. на скрине начертила как хочу чтобы работал индюк.

будет 2 буфера для хая и для лоу. в коде на данный момент 1 буфер покажите на его примере пжл

Спойлер

//+------------------------------------------------------------------+
//|                                                           qw.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot highlow
#property indicator_label1  "highlow"
#property indicator_type1   DRAW_COLOR_ARROW
#property indicator_color1  clrYellow,clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         highBuffer[];
double         highColors[];

//----------------------------------
#include <Trade\SymbolInfo.mqh>

CSymbolInfo    m_symbol;                     // symbol info object
//-----------------------------------
input int         WPRperiod   =  14;
input double      WPRmax      = -20;
input double      WPRmin      = -80;

int    h;
double wpr[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  
   h=iWPR(Symbol(),Period(),WPRperiod);
    if(h==INVALID_HANDLE)
    {
      Print("Can't load indicator");
      return(INIT_FAILED);
    }
    
    SetIndexBuffer(2,wpr,INDICATOR_CALCULATIONS); 
    
//--- indicator buffers mapping
   SetIndexBuffer(0,highBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,highColors,INDICATOR_COLOR_INDEX);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   PlotIndexSetInteger(0,PLOT_ARROW,159);
   
//---
   return(INIT_SUCCEEDED);
  }
  
  void OnDeinit(const int reason)
  {
   if(h!=INVALID_HANDLE)
    {
      IndicatorRelease(h);
    }
  }  
//+------------------------------------------------------------------+
//| 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[])
  {
  
  MqlRates rates[]; 
  ArraySetAsSeries(rates,true);
   if(CopyRates(m_symbol.Name(),Period(),0,3,rates)!=3)  
            
   double cl1   = rates[1].close;
   double op1   = rates[1].open;
   double high1 = rates[0].high;
   double low1  = rates[0].low;
//-----------------------------------
  int start;
 //Print(start);
  if(prev_calculated==0)
  {
   start=0;
  }
    else
    {
      start=prev_calculated-1;
    }
//Print(start);
   if(CopyBuffer(h,0,0,rates_total-start,wpr)==-1)
   {
    return(0);
   }
   //Print(highBuffer[i]);
   
   for(int i=start;i<rates_total;i++) 
   {
    highBuffer[i]=EMPTY_VALUE;
    if(wpr[i]>WPRmax){
      highBuffer[i]=high[i];
      highColors[i]=0;
   }

}//Print(highBuffer[0]);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

 

 

Безымянный.png

Изменено 26 августа, 2019 пользователем 0ll

#220
В 03.07.2019 в 17:00, MikR0ReR сказал:

Если импортируемая функция имеет разные варианты вызова для 32-х и 64-х битной версий Windows, то необходимо импортировать оба и явно вызывать нужный вариант функции с помощью переменной _IsX64.

https://www.mql5.com/ru/docs/basis/preprosessor/import

https://www.mql5.com/ru/docs/predefined/_isx64

MikR0ReR, Вы дали ссылки для способа вызова 32 разрядной dll в МТ5, но у меня ничего не получается.
Если есть такая возможность, подскажите, где посмотреть реальный код (пример) вызова dll_32 для МТ5.
Или же может кто подскажет как на Win_64 установить 32-разрядный МТ5, очень надо.
Спасибо.

#221
2 часа назад, berlios сказал:

Или же может кто подскажет как на Win_64 установить 32-разрядный МТ5, очень надо.

Скопировав установленный терминал исключительно ИЗ Windows х32. Поставь виртуальную машину с Win_32, от туда скопируй.

MetaTrader5 64 => dll 64

MetaTrader5 32 => dll 32

#222
41 минуту назад, MikR0ReR сказал:

Скопировав установленный терминал исключительно ИЗ Windows х32. Поставь виртуальную машину с Win_32, от туда скопируй.

MetaTrader5 64 => dll 64

MetaTrader5 32 => dll 32

Прошу прощения, но что-то я не догоняю. Терминал МТ5 ? из Win x32 ? У меня Win x64 и установлен МТ5 х64.

Если можно, подробнее.

Спасибо.

#223
33 минуты назад, qbar сказал:

не догоняю

Как я понял у вас dll 32, и перекомпелировать в 64 нет возможности. Далее вы ее, dll 32, хотите запустить в MetaTrader5, тут проблема следующая, у вас MetaTrader5 64. А MetaTrader5 64 не работает с dll32. значит вам нужен MetaTrader5 32. Так как получить MetaTrader5 32 на Win x64? Скопировав ИЗ Windows 32! Как получить Windows 32 на Windows 64? Использовать технологию виртуализации! На виртуальную машину поставить Windows 32, поставить MetaTrader5 32, потом скопировать с папку C:\Program Files\MetaTrader 5 и эту скопированную папку поместить в вашу Win x64 в папку C:\Program Files (x86).

 

не догоняешь, спрашивай не стесняйся.

Изменено 21 августа, 2019 пользователем MikR0ReR

#224
1 час назад, MikR0ReR сказал:

Скопировав установленный терминал исключительно ИЗ Windows х32. Поставь виртуальную машину с Win_32, от туда скопируй.

MetaTrader5 64 => dll 64

MetaTrader5 32 => dll 32

Прошу прощения, но что-то я не догоняю. Терминал МТ5 ? из Win x32 ? У меня Win x64 и установлен МТ5 х64.

Если можно, подробнее.

Спасибо.

 

Спасибочки, уже догнал, буду пробовать.

 

#225
В 03.07.2019 в 17:00, MikR0ReR сказал:

Если импортируемая функция имеет разные варианты вызова для 32-х и 64-х битной версий Windows, то необходимо импортировать оба и явно вызывать нужный вариант функции с помощью переменной _IsX64.

https://www.mql5.com/ru/docs/basis/preprosessor/import

https://www.mql5.com/ru/docs/predefined/_isx64

MikR0ReR, Вы дали ссылки для способа вызова 32 разрядной dll в МТ5, но у меня ничего не получается.
Если есть такая возможность, подскажите, где посмотреть реальный код (пример) вызова dll_32 для МТ5.
Или же может кто подскажет как на Win_64 установить 32-разрядный МТ5, очень надо.
Спасибо.

MikR0ReR, еще раз спасибо, все срослось и даже работает.

Страница 9 из 12

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025