Перейти к содержимому

Theme© by Fisana
 

Фотография
- - - - -

Прогрммировние на языке MQL5


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

Опрос: mql4 или mql5

Отношение к языкам mql4 и mql5

Вы не можете видеть результаты проса пока не проголосуете.
Голосовать Гости не могут голосовать

#1 talliy

talliy

    Рвется в бой

  • Свой человек
  • PipPipPipPipPipPip
  • 132 сообщений

Отправлено 17 November 2012 - 04:27

Всех приветствую!
Хочу спросить про массивы.
Пытаюсь записать значение цены каждого тика в массив. Подскажите как это сделать?


 MqlTick last;
static double cena[];
ArrayResize(cena,200);
double ask;
      SymbolInfoTick(Symbol(),last);
      ask = last.ask;
   	for(int j=0;j>=200;j++){
              cena[j]=ask;
           	//break;
           	}


В таком исполнении не работает.

 
 

#2 Alen_T

Alen_T

    Есть ещё порох в пороховницах

  • Специалист
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 874 сообщений

Отправлено 17 November 2012 - 12:41

Всех приветствую!
Хочу спросить про массивы.
Пытаюсь записать значение цены каждого тика в массив. Подскажите как это сделать?


 MqlTick last;
static double cena[];
ArrayResize(cena,200);
double ask;
      SymbolInfoTick(Symbol(),last);
      ask = last.ask;
   	for(int j=0;j>=200;j++){
              cena[j]=ask;
   			//break;
   			}


В таком исполнении не работает.


SymbolInfoTick() - это только текущего тика.
У тебя в цикле нет перебора тиков, а присваивается значение ask текущего тика всем членам массива.
Ищи функцию свойств для задаваемого тика и дополняй: cena[j] =
С mq5 не занимался, поэтому конкретно функцию дать не могу. (Ее может и не быть:scratch_head:)
Ты это, заходи, если что...(С)

#3 talliy

talliy

    Рвется в бой

  • Свой человек
  • PipPipPipPipPipPip
  • 132 сообщений

Отправлено 22 November 2012 - 17:13

SymbolInfoTick() - это только текущего тика.
У тебя в цикле нет перебора тиков, а присваивается значение ask текущего тика всем членам массива.
Ищи функцию свойств для задаваемого тика и дополняй: cena[j] =
С mq5 не занимался, поэтому конкретно функцию дать не могу. (Ее может и не бытьИзображение)


Кому интересно! Решение нашел на другом форуме. Пользователь Laryx подсказал такой вариант:
Вне функций

double cena[];
int iNumOfTick;
MqlTick last

В инициализации

ArrayResize(cena,200);
iNumOfTick = 0;

В обработчике тика:

SymbolInfoTick (Symbol (),last);
if (iNumOfTick<200) 
{
cena[iNumOfTick]=last.ask;
++iNumOfTick
}

В месте использования всех цен:

for ( int  j=0;j>iNumOfTick;j++)
{
DoSomething(cena[j]);
}
Вам следует хранить значение номера тика, и использовать его в качестве индекса.

#4 LEXA_KB

LEXA_KB

    Первый выстрел

  • Частый гость
  • PipPip
  • 4 сообщений

Отправлено 15 October 2013 - 16:33

Уважаемые программисты помогите подлечить советника!

Прикрепленные файлы





Copyright © 2024 Your Company Name