Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 785

 
Vitaly Muzichenko:

Никак, этот ресурс для поддержки торговой платформы "MetaTrader"

Ну а как с ними связаться?
 
maksgas77:
Ну а как с ними связаться?

Поиском в гугл по ключевой фразе: "Надёжный брокер форекс", "Торговля на форекс", "Выбор брокера форекс", "Отзывы о форекс брокерах", ну и тд.

 
Vitaly Muzichenko:

Поиском в гугл по ключевой фразе: "Надёжный брокер форекс", "Торговля на форекс", "Выбор брокера форекс", "Отзывы о форекс брокерах", ну и тд.

Спс
 

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

 
Aleksey Vyazmikin:

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

Мож обиделся?

Вы ж ему запретили торговать - он и не торгует.

Или что вы имеете в виду под "отказ советника функционировать советника" ?

 
Artyom Trishkin:

Мож обиделся?

Вы ж ему запретили торговать - он и не торгует.

Или что вы имеете в виду под "отказ советника функционировать советника" ?


Чудно написал :)

Суть такая, запущен советник, я снял галку "Разрешить автоматическую торговлю", после этого комп ушел в гибернацию, загрузил я это дело спустя время, поставил галочку на место, а советник не функционирует - в лог не принтует даже.

Если же отключить и включить галочку без гибернации, то все работает корректно. В MT4 таких проблем нет, там советники по пол года крутятся без перезагрузки ПК, а с MT5 что т не понятное.

 

О. Классная тема. Мне сюда.

Подскажите, пожалуйста, что означает

CHART_POINTS_PER_BAR значение масштаба в пунктах на бар.
В пунктах на миллиметр или на пиксель - это было бы понятно.
А как может быть "на бар"?  Это же другая шкала..  Объясните, пожалуйста, что имеется ввиду.
 
User_mt5:

О. Классная тема. Мне сюда.

Подскажите, пожалуйста, что означает

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

Исправьте пожалуйста код, кому не сложно.

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


//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_plots 0


long     mass_id[];
datetime Time[1];
long     MassID;
string   MassSY;
int      Shift=0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   int  _CHART_WIDTH_IN_BARS = (int)ChartGetInteger(0, CHART_WIDTH_IN_BARS);
   int  BarTimeVisible = iBarShift(Symbol(), 0, TIME(_CHART_WIDTH_IN_BARS));//Print(TIME(_CHART_WIDTH_IN_BARS));

   long ID=ArraySize(mass_id);
// Запомним время
   for(int i=0; i<ID; i++)
     {
      MassID = mass_id[i];
      Shift = BarTimeVisible - (int)ChartGetInteger(MassID, CHART_VISIBLE_BARS);
      if(GlobalVariableGet("FirstVisibleBar") != TIME((int)ChartGetInteger(MassID, CHART_FIRST_VISIBLE_BAR) + Shift))
        {
         GlobalVariableSet("FirstVisibleBar", TIME((int)ChartGetInteger(MassID, CHART_FIRST_VISIBLE_BAR) + Shift));
         break;
        }
     }

// Прокрутка графиков
   for(int i=0; i<ID; i++)
     {
      MassID = mass_id[i];
      MassSY = ChartSymbol(MassID);
      Shift = (BarTimeVisible -  (int)ChartGetInteger(MassID, CHART_VISIBLE_BARS));
      if(GlobalVariableGet("FirstVisibleBar") != TIME((int)ChartGetInteger(MassID, CHART_FIRST_VISIBLE_BAR) + Shift))
        {
         ChartNavigate(MassID, CHART_END, (_CHART_WIDTH_IN_BARS - iBarShift(Symbol(), 0, (datetime)GlobalVariableGet("FirstVisibleBar"))) - 2);
        }
     }
  }
  
  
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ChartGetIDList(mass_id);
   EventSetMillisecondTimer(50);
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int ChartGetIDList(long &aList[])
  {
   int i=0;
   long handle=0;
   long chartID=ChartNext(handle);
   while(chartID!=-1)
     {
      handle=chartID;
      i++;
      ArrayResize(aList,i);
      aList[i-1]=chartID;
      chartID=ChartNext(handle);
     }
   return(i);
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int iBarShift(string symbol,ENUM_TIMEFRAMES timeframe,datetime time,bool exact=false)
  {
   datetime LastBAR;
   if(!SeriesInfoInteger(symbol,timeframe,SERIES_LASTBAR_DATE,LastBAR))
     {
      datetime opentimelastbar[1];
      if(CopyTime(symbol,timeframe,0,1,opentimelastbar)==1)
         LastBAR=opentimelastbar[0];
      else
         return(-1);
     }
//--- if time > LastBar we always return 0
   if(time>LastBAR)
      return(0);
//---
   int shift=Bars(symbol,timeframe,time,LastBAR);
   datetime checkcandle[1];

   if(CopyTime(symbol,timeframe,time,1,checkcandle)==1)
     {
      if(checkcandle[0]==time)
         return(shift-1);
      else if(exact && time>checkcandle[0]+PeriodSeconds(timeframe))
         return(-1);
      else
         return(shift);
     }
   return(-1);
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
datetime TIME(int index=0)
  {
   return(CopyTime(Symbol(),PERIOD_CURRENT,index,1,Time)?Time[0]:WRONG_VALUE);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
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 value of prev_calculated for next call
   return(rates_total);
  }
 
Vitaly Muzichenko:

Исправьте пожалуйста код, кому не сложно.

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

А что делать должен? Написать с нуля, наверное, будет проще, чем править.

SyncChart
SyncChart
  • голосов: 12
  • 2016.09.16
  • o_o
  • www.mql5.com
Синхронизация показываемых баров на всех открытых в терминале графиках. Синхронизация графиков происходит по таймеру. Без DLL! Дополнительные возможности: опция синхронизации вертикальных...