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

 
Artyom Trishkin:
Print() в визуальном режиме

Супер! Спасибо! Все получилось. Сразу все переменные проверил.

 
Roni Iron:

Добрый День!

Какие есть варианты получить данные такого вида:

Time (UTC),Ask,Bid,AskVolume,BidVolume

Ask,Bid - достаточно указать. Замудрствовать не надо, а Volume в форексе только 1.

iVolume

Возвращает значение тикового объема бара (указанного параметром shift) соответствующего графика.

long  iVolume( 
   string           symbol,          // символ 
   int              timeframe,       // период 
   int              shift            // сдвиг 
   );
 
Здравствуйте, подскажите пожалуйста, при установке написанного пользовательского индикатора в MQL4, все срабатывает, но при переключениях на другой таймфрейм срабатывает только deinit (от прошлого таймфрейма), а на новом init не срабатывает, то есть программа не перезапускается, а просто удаляется из окна. При ручной установке индикатора к новому таймфрейму все проходит хорошо. В чем может быть дело?
 

Как раз в этом и прикол - что в форексе есть тиковый объем бара, а торгового объема тика нет. Но источники тиковых котировок (Ducascopy и пр.) дают значения  AskVolume,BidVolume после значений цен в таком виде 0,32,0,12 (причем непонятно то ли это 2 цифры с запятыми, то ли 4 цифры.

Спасибо!

 
Существует какая нибудь хитрость что-бы файл CSV создавался без разделителя?
 

Здравствуйте.

Подскажите пожалуйста,переписал под MQL5 свой код написанный для  MQL4.

Это две  ЕМА одна на одну,вроде всё просто.

 При компиляции ошибок не выдаёт,но и рисует не то ,как написано для MQL4 .

 В руководстве по MQL5 уже все глаза сломал,ни чего не пойму.

//+------------------------------------------------------------------+
//|                                                           MA.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 2
#property indicator_plots   2
//--- plot 1
#property indicator_label1  "MA 1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot 2
#property indicator_label2  "MA 2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrYellow
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//
input int PER=8; //Period
//
double         MA_1[];
double         MA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MA_1,INDICATOR_DATA);
      SetIndexBuffer(1,MA_2,INDICATOR_DATA);
         IndicatorSetInteger(INDICATOR_DIGITS,2);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   program(rates_total,prev_calculated,close);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+---EMA

double EMA(double N,double P,double EMA0=0)//формула
  {
   double  A=2/(N+1);                      //расчета
   return(A*P+(1-A)*EMA0);                 //ЕМА
  }
//+---
void program(int rates_total,int prev_calculated,const double &close[])
  {

   int Y=rates_total-prev_calculated;
   if(prev_calculated==0) Y=Y-PER-1;

   for(Y=Y; Y>=0; Y=Y-1)

     {
     
      MA_1[Y]=EMA(PER,close[Y],MA_1[Y+1]);//первая
      MA_2[Y]=EMA(PER,MA_1[Y],MA_2[Y+1]);//на неё вторая

     }
   return;
  }
//+------------------------------------------------------------------+
 
imknk:

Здравствуйте.

Подскажите пожалуйста,переписал под MQL5 свой код написанный для  MQL4.

Это две  ЕМА одна на одну,вроде всё просто.

 При компиляции ошибок не выдаёт,но и рисует не то ,как написано для MQL4 .

 В руководстве по MQL5 уже все глаза сломал,ни чего не пойму.

В mql5 нужно переворачивать буферы, они идут задом-наперёд.

Добавьте конструкцию и почитайте о ней

ArraySetAsSeries(MA_1,true);
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
[in]  Тип данных, хранящихся в индикаторном массиве. По умолчанию INDICATOR_DATA (значения рассчитанного индикатора). Может также принимать значение INDICATOR_COLOR_INDEX, тогда данный буфер предназначен для хранения индексов цветов для предыдущего индикаторного буфера. Можно задать до 64 цветов в строке #property indicator_colorN. Значение...
 
Vitaly Muzichenko:

В mql5 нужно переворачивать буферы, они идут задом-наперёд.

Добавьте конструкцию и почитайте о ней

Спасибо,сейчас попробую.
 

Пожалуйста помогите, где ошибка?

Почему при условии if c переходом на функцию он ругается " 'all_clouse' - function not defined"

if(buy>=position)
 {
   All_clouse();  // 'All_clouse' - wrong parameters count

 }
..............
дальше код
..............
Уже за пределами OnTick
void All_clouse(int a,double x, double y)
  {
.............
   } к самой функции закрытия ордеров у него претензий нет.
 
Gilmor:

Пожалуйста помогите, где ошибка?

Почему при условии if c переходом на функцию он ругается " 'all_clouse' - function not defined"

Потому, что нужно в функцию подать параметры, а вы её вызываете пустую All_clouse()

void All_clouse(int a,double x, double y)
Причина обращения: