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

 
Artyom Trishkin:

Да, спасибо за науку. Буду думать обязательно, чего уж там...

ЗЫ. Что мешает потом возвратить проверку не в условие, а в переменную и уже её проверять? Наверное дичайшая сложность сего проекта в будущем...

И ещё: если проект расширяется, то и время выполнения кода может увеличиваться. Получится так, что после занесения данных в переменную будет ещё много расчётов. Так вот, не может ли случиться, что к тому времени, когда нужна будет повторная проверка, ордер уже будет закрыт (по стопу например, ... или тейку ...), а программа после этого считает неверное значение, находящееся в переменной?

Вот именно - думать нужно заранее о больших проектах, и о всех вероятных ситуациях, которые могут произойти. Так что я останусь при своём убеждении - всегда иметь самые свежие данные непосредственно перед их использованием. Насколько это возможно.

по выделенному добавлю и после использования, если дальше следуют новые условия по торговле
 
Artyom Trishkin:
Это вы мне? Хорошо, и вам не хворать. Но вернётесь в конце к тому, что я и предложил, тем самым пополнив ряды неадекватов
я тоже хотел ему написать чего нибудь, но человек пишет с грамматическими ошибками, и подумал - не стоит, поздно уже, не поймёт....
 
new-rena:
по выделенному добавлю и после использования, если дальше следуют новые условия по торговле

Ну, если и дальше потом нужны данные, то они опять должны быть свежими. Т.е., опять их найти в рынке - не считать с переменной, а найти. Тогда, даже отключение терминала не повлияет на значения переменных. Запустились - получили свежую информацию, узнали тем самым общее состояние всего окружения на момент запуска, и спокойно продолжили работать с того места, на котором застряли в прошлый раз. Естественно ,подкорректировав под уже новые реалии после перезапуска терминала. Но данные имеем самые свежие на текущий момент времени. А переменные ... ну точно не для хранения важной информации. Для передачи в функцию - да, а для использования в торговых приказах, или для принятия важных решений - сначала считали с сервера все нужные данные в переменные, проанализировали, приняли решение на основе анализа по свежим данным и передали значения переменных в функцию, отвечающую за конкретные действия, которые должен выполнить советник при принятом решении. Как-то так ...

Ну ... я не о тестере говорю, ежли что ...

 
new-rena:
я тоже хотел ему написать чего нибудь, но человек пишет с грамматическими ошибками, и подумал - не стоит, поздно уже, не поймёт....
:) Поздно - в смысле "потерян навсегда"? Или просто - бай пора ему?
 
Artyom Trishkin:
:) Поздно - в смысле "потерян навсегда"? Или просто - бай пора ему?

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

бай - тут вообще три смысла )

 
new-rena:

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

бай - тут вообще три смысла )

Ну ... покупать-то вряд ли что-то будет. Так что остаётся только либо спать, либо прощаться...
 
Artyom Trishkin:
Ну ... покупать-то вряд ли что-то будет. Так что остаётся только либо спать, либо прощаться...
посмотрим - новичкам везёт )
 
new-rena:
посмотрим - новичкам везёт )
Я другую присказку слышал ...
 
Подскажите мне, пожалуйста. Я подключился к сигналу и соответственно у меня копируются его открытые ордера, могу ли я как то изменить объем лота которым он торгует. Если да то как?
 

Гляньте плз, по четвёрке - там похоже не достучаться...

С массивами работаю - надо писать время прихода тика в массив - для примера - пишу бид. На каждом тике. Делаю всё согласно билетов, за что благодарен  Artyom Trishkin. Не всё получается. Второй день бьюсь... Принтует 

 Print (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );

нули.

https://www.mql5.com/ru/forum/145455/page913#1017464

//---------------------
extern int MaxDrawTicks=100;
extern int Num_Aver_of_Ticks=5;  
double     xBuffer_Time []; // Массив значений  
                         // В котором индекс - номер тика, значение - это бид 
int SIZE=0;               // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if(ArrayResize(xBuffer_Time,SIZE)<0) {Print(" Ошибка в изменении размера массива времени поступления тиков "); return(false);}
//--- установим индексацию для буфера как в таймсерии для динамического массива
  // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   SIZE=ArraySize(xBuffer_Time);
   if (SIZE>=0) Print("Размер массива: ",SIZE);
   else Print("Ошибка. Массив не создан ",SIZE);        
   ArrayInitialize(xBuffer_Time, 0);
   return(0);
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize(xBuffer_Time,SIZE);
   xBuffer_Time[SIZE-1] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
   SIZE ++;
   Print (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );
   Print (" Значение SIZE = ", DoubleToStr(SIZE,2) );  
 //---------------------------------------      
//------------
   return(0);
  }

Благодарю.

Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - MQL4 форум
  • www.mql5.com
Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - MQL4 форум
Причина обращения: