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

 
Подскажите пожалуйста как ограничить автоматические обновления терминала
Подскажите пожалуйста как можно вернуться к предыдущим версиям терминала
Безудержное желание регулярно что либо улучшить приводит к останокам работы терминала и некоторых функций кода
Заранее благодарю
 
VVT #:
Подскажите пожалуйста как можно вернуться к предыдущим версиям терминала

Здравствуйте. Если в настройках Windows Вы сами вручную создавали точку восстановления, то можете вернуть торговый терминал к предыдущей версии. Всё зависит от того насколько давно создавали эту точку восстановления и объёма памяти выделенного на диске. Кроме того, если даже самостоятельно не создавали точку восстановления, но у Вас включен режим Восстановления системы, то Windows сам автоматически создаёт такие точки.

А вообще, где-то на Форуме была тема (или темы) с сообщениями, посвященными данному вопросу. Нужно искать, но у меня на это времени нет.

С уважением, Владимир.

 
MrBrooklin #:

Здравствуйте. Если в настройках Windows Вы сами вручную создавали точку восстановления, то можете вернуть торговый терминал к предыдущей версии. Всё зависит от того насколько давно создавали эту точку восстановления и объёма памяти выделенного на диске. Кроме того, если даже самостоятельно не создавали точку восстановления, но у Вас включен режим Восстановления системы, то Windows сам автоматически создаёт такие точки.

А вообще, где-то на Форуме была тема (или темы) с сообщениями, посвященными данному вопросу. Нужно искать, но у меня на это времени нет.

С уважением, Владимир.

при следующем перезапуске терминала он опять обновиться на свежий билд. Он так устроен - при запуске запрашивает у DC и закачивает актуальный билд. Логично, терминал должен соответствовать серверу. 

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

 
Здравствуйте! Возник вопрос. Есть индикатор дивергенций, я хочу его использовать в эксперте. Индикатор стрелочный, поэтому я решил, что в эксперте нужно объявить хэндл и далее через CopyBuffer получить буффера стрелочных индикаторов. Но по каким-то причинам у меня не выходит этого сделать. Могли бы вы мне подсказать мою ошибку? 
Код индикатора: 
//--- Plot 1 : Bullish 
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrGreen
#property indicator_label1  "Bullish divergence"
//--- Plot 2 : Bearish
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrRed
#property indicator_label2  "Bearish divergence"
Код эксперта: 
int OnInit()
  {
handle_ind=iCustom(_Symbol,_Period,"name.ex5"); 
}
void OnTick()
  { 
  ArraySetAsSeries(arrow_up,true);
  if(CopyBuffer(handle_ind,0,0,3,arrow_up)<3){
      Print("Error");
  }
  ArraySetAsSeries(arrown_down,true);
  if(CopyBuffer(handle_ind,1,0,3,arrown_down)<3){
      Print("Error");
  }  
  if(arrow_up[1]!=EMPTY_VALUE){
  Print(arrow_up[1]);
  }
//---
   
  }
 
MrBrooklin #:

Здравствуйте Владимир

Вы как всегда любезны

Проблема в том, что как только терминал подключится к интернету он сразу обновится и вырубится, что не делает Windows без спросу

 
Maxim Kuznetsov #:

Ещё не придумали остановку перезагрузки во время работы

Постоянно перебирать код, утешительно

Подскажите пожалуйста, если существует регистр новых и уже неподдерживаемых функтций

 
Aleksei Gureev #:
int OnInit()   { int ticket=OrderSend(Symbol(),OP_BUYLIMIT, 0.1,Bid-100*_Point,0,0,0,NULL,0,0,clrBlue);

Я бы так сделал

int OnInit() {
    int ticket = OrderSend(Symbol(), OP_BUYLIMIT, 0.1, Bid - 100 * _Point, 0, 0, 0, NULL, 0, 0, clrBlue);
}
 
Vitaly Muzichenko #:
ENUM_TIMEFRAMES Periods[] = {/*PERIOD_M1,*/PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1/*, PERIOD_H4*/}; int CountTF=ArraySize(Periods);

Я где то читал, вот про это

input bool Use_M5   = true;
input bool Use_M15  = true;
input bool Use_M30  = false;
input bool Use_H1   = false;

потом в коде указать вот так, сформировать динамический массив

ENUM_TIMEFRAMES Periods[];
int CountTF;

void OnInit()
{
   if(Use_M5)
      AddPeriod(PERIOD_M5);
   if(Use_M15)
      AddPeriod(PERIOD_M15);
   if(Use_M30)
      AddPeriod(PERIOD_M30);
   if(Use_H1)
      AddPeriod(PERIOD_H1);

   CountTF = ArraySize(Periods);
}

// Вспомогательная функция добавления таймфрейма в массив
void AddPeriod(ENUM_TIMEFRAMES tf)
{
   int size = ArraySize(Periods);
   ArrayResize(Periods, size + 1);
   Periods[size] = tf;
}
 
Igor Nagorniuk #:

Я где то читал, вот про это

потом в коде указать вот так, сформировать динамический массив

Это не совсем подходит.

Нужно выбрать до 8 таймов, можно 3, но не более 8

В вашем варианте нужно во входных параметрах для мт5 прописать все 21 таймфрейм = это не совсем хороший подход.

Сейчас вот так, и это удобно в использовании


input ENUM_TIMEFRAMES TF1 = PERIOD_M1;
input ENUM_TIMEFRAMES TF2 = PERIOD_CURRENT;
input ENUM_TIMEFRAMES TF3 = PERIOD_M15;
input ENUM_TIMEFRAMES TF4 = PERIOD_M30;
input ENUM_TIMEFRAMES TF5 = PERIOD_H1;
input ENUM_TIMEFRAMES TF6 = PERIOD_CURRENT;
input ENUM_TIMEFRAMES TF7 = PERIOD_D1;
input ENUM_TIMEFRAMES TF8 = PERIOD_W1;
  string TF=(string)TF1+","+(string)TF2+","+(string)TF3+","+(string)TF4+","+(string)TF5+","+(string)TF6;
  string res[];
  int c=StringSplit(TF,',',res);
  int n=0;
  for(int i=0; i < c; i++) {
    if(res[i]=="0") continue;
    ArrayResize(Periods,n+1);
    Periods[n]=ENUM_TIMEFRAMES(res[i]);
    n++;
  }
  CountTF=ArraySize(Periods);
 
Vitaly Muzichenko #:

Это не совсем подходит.

Нужно выбрать до 8 таймов, можно 3, но не более 8

В вашем варианте нужно во входных параметрах для мт5 прописать все 21 таймфрейм = это не совсем хороший подход.

Сейчас вот так, и это удобно в использовании


спасибо