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

 
mario065:

Привет,

Конечно что нет.

Если несколко индюка,то надо для каждого делат по столко раз,сколко пар ест.

Один хендел,чтоб ползовали все пар. 

Используйте хендл поочередно, т.е. копируйте буфера индикаторов и после этого присваивайте значение следующего индикатора хендлу.

Вот только не понятно, зачем экономить на хендлах, если они являются элементарными целыми числами и практически не влияют на ресурсы?

 
Reshetov:

Используйте хендл поочередно, т.е. копируйте буфера индикаторов и после этого присваивайте значение следующего индикатора хендлу.

Вот только не понятно, зачем экономить на хендлах, если они являются элементарными целыми числами и практически не влияют на ресурсы?

Привет Вам

Прошлом году писал внешная функция вот так:

void CalculatePairs(string dSymbol) {

   atrHandle1=iATR(dSymbol, TimeFrame1, ATRPeriod);
   atrHandle2=iATR(dSymbol, TimeFrame5, ATRPeriod);
   atrHandle3=iATR(dSymbol, TimeFrame15, ATRPeriod);
   atrHandle4=iATR(dSymbol, TimeFrame30, ATRPeriod);
   atrHandle5=iATR(dSymbol, TimeFrame60, ATRPeriod);
   muvHandle1=iMA(dSymbol,TimeFrame1,MAPeriod,0,MAMethod,InpPr);
   muvHandle2=iMA(dSymbol,TimeFrame5,MAPeriod,0,MAMethod,InpPr);
   muvHandle3=iMA(dSymbol,TimeFrame15,MAPeriod,0,MAMethod,InpPr);
   muvHandle4=iMA(dSymbol,TimeFrame30,MAPeriod,0,MAMethod,InpPr);
   muvHandle5=iMA(dSymbol,TimeFrame60,MAPeriod,0,MAMethod,InpPr);
   if(atrHandle1<0 || atrHandle2<0 || atrHandle3<0 || atrHandle4<0 || atrHandle5<0 ||
   muvHandle1<0 || muvHandle2<0 || muvHandle3<0 || muvHandle4<0 || muvHandle5<0 )
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
     }

   double ma1[],ma2[],ma3[],ma4[],ma5[];
   double atr1[],atr2[],atr3[],atr4[],atr5[];

   ArraySetAsSeries(ma1, true);ArraySetAsSeries(ma2, true);ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);ArraySetAsSeries(ma5, true);
   ArraySetAsSeries(atr1, true);ArraySetAsSeries(atr2, true);ArraySetAsSeries(atr3, true);
   ArraySetAsSeries(atr4, true);ArraySetAsSeries(atr5, true);

   if (NormalizeDouble(CopyBuffer(muvHandle1,0,0,1,ma1),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle2,0,0,1,ma2),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle3,0,0,1,ma3),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle4,0,0,1,ma4),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle5,0,0,1,ma5),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle1,0,0,1,atr1),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle2,0,0,1,atr2),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle3,0,0,1,atr3),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle4,0,0,1,atr4),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle5,0,0,1,atr5),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}

   Result = 0;
}
double FGroup(){
      CalculatePairs(Currency1);{
         Pair1 = Result;}

Конечно,пока не сделала вычисления давала ошибка 4806 но потом работает нормално.

Сегодня открил етот код и задумался-нету ли другой способ?

Ошибка и ест ошибка.

Сколко хендла надо сделат для 8 пар и 5 таймфреймов?

Вопрос не для ресурсы,что то по прошче сделат. 

Документация по MQL5: Основы языка / Функции / Описание внешних функций
Документация по MQL5: Основы языка / Функции / Описание внешних функций
  • www.mql5.com
Основы языка / Функции / Описание внешних функций - Документация по MQL5
 
mario065:

Привет Вам

Прошлом году писал внешная функция вот так:

Конечно,пока не сделала вычисления давала ошибка 4806 но потом работает нормално.

Сегодня открил етот код и задумался-нету ли другой способ?

  1. Способ чего?
  2. Зачем вообще нужна функция CalculatePairs(), если она ничего кроме ошибок не выдает?

Уберите эту самую функцию из своего кода и спите спокойно.

 
Reshetov:
  1. Способ чего?
  2. Зачем вообще нужна функция CalculatePairs(), если она ничего кроме ошибок не выдает?

Уберите эту самую функцию из своего кода и спите спокойно.

Там ест какието "великие" вычисления,которые не показал.

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

Способ-простой чтоб был.

Например:

Делаем хендл индикатора-в него нет символа,таймфрейма.

Когда делаем CopyBuffer-там указываем какая пара,фрейм .

Например: 

int OnInit()

Выглядило бы так: Handle = имя индикатора(променливые индикатора) 

void OnTick() 

Выглядило бы так: CopyBuffer(указаный символ,таймфрейм,откуда копиируем,докуда копируем,сколко копируем,место где копируем)

 

Ето всего диалог :)  с Вами. 

 
mario065:

Там ест какието "великие" вычисления,которые не показал.

Ясно. У Вас ArraySetSeries() применяется к массивам без данных, т.е до того, как информацию в них загрузили, а нужно  после копирования буферов.
 
Reshetov:
Ясно. У Вас ArraySetSeries() применяется к массивам без данных, т.е до того, как информацию в них загрузили, а нужно  после копирования буферов.

Точно.

Но думаю,легче будет всем,если ето делается в CopyBuffer-т.е. там указыват какая пара и фрейм.

Сам индюк делает одну и тоже вычисление-лиш бы указано для какая пара и фрейм.

Если сама архитектура МТ5 позволяет легче ето сделат.

Пожелание конечно :) . 

 
Reshetov:
Ясно. У Вас ArraySetSeries() применяется к массивам без данных, т.е до того, как информацию в них загрузили, а нужно  после копирования буферов.
Без разницы.
 
всем здоровья! прошу подсказать гуру, как правильно настроить терминал на прием сигналов с данного сайта. я вроде как настроил все,подписался,в терминале настройки сделал-но торговать не хочет автоматом. при попытке поставить свой отложеный ордер,он устанавливается и пишет мне про синхронизацию и удаления всех ордеров в терминале, и после этого у меня появляются ордера от поставщика. что надо сделать, подскажите
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:

Если советник использует MFI, то его код должен содержать строчку с получением хендла вот этого индикатора: "Справочник MQL5 / Технические индикаторы / iMFI ". Соответственно, получение хендла  индикатора скользящего среднего описано здесь: "Справочник MQL5 / Технические индикаторы / iMA ".

Попробуйте также ознакомиться со статьёй "Индикатор от индикатора в MQL5". 

Ознакомился со статьей. Однако она мне не ответила на вопрос "Как изъять хэндлы iMA, находящийся в окне индикатора MFI и регистрирующий цену закрытия бара?"

Указанные Вами ссылки на изъятие хэндла iMA не относится к iMA находящийся в окне индикатора. Описание стандартным методом советник производит изъятие хендла МА с графика.
 
Leser: Ознакомился со статьей. Однако она мне не ответила на вопрос "Как изъять хэндлы iMA, находящийся в окне индикатора MFI и регистрирующий цену закрытия бара?"

Первоначально задачу Вы обрисовали следующим образом: "Советник использует MFI; Ма находится не на графике (окно №1), а в окне с индикатором MFI (окно №2)". На что я Вам ответил: "Если советник использует MFI, то его код должен содержать строчку с получением хендла вот этого индикатора: "Справочник MQL5 / Технические индикаторы / iMFI ".

Поэтому предлагаю для начала разобраться, каким именно образом Ваш советник в принципе получает хендл индикатора из "окна №2". А там что-нибудь придумаем.

Leser: Ознакомился со статьей. Однако она мне не ответила на вопрос "... iMA, находящийся в окне индикатора MFI и регистрирующий цену закрытия бара".
Уточняющий вопрос: на каких данных у Вас строится индикатор МА: на значениях индикатора MFI или же на ценах закрытия баров? Про "регистрацию  цен закрытия бара" раньше ничего не говорилось. Поэтому и была дана ссылка на статью "Индикатор от индикатора".
Причина обращения: