Ответ
 
Опции темы
Старый 10.04.2013, 09:18   #1141 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 918
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от eevviill Посмотреть сообщение
А ещё проще задом на перёд перебрать. Я уже говорил номер в переборе соответсвует времени открытия(порядку).
Можно.Просто здесь вопрос стоит в том делать или не делать вычисления на выбранном ордере. Результат будет тот же. Но вычислений будет меньше. Хотя это мелочи конечно.
Сообщение от expforex Посмотреть сообщение
к сожалению нет,
смотря как список выстроен в мт, по какому полю сортировка, сталкивался с этим года два назад, попался на этом, тоже так думал, с тех пор если надо найти последний ордер делаю функцией перебора и проблем нет.

Может быть МТ что-то уже нахимичили переправили. Но года два назад - номер не соответствует последней сделке.

То же так думал. Но eevviill доказал мне что сортировка не меняет очередность ордеров.
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (10.04.2013), expforex (10.04.2013)
Старый 10.04.2013, 09:21   #1142 (permalink)
Программиров
 
Аватар для expforex
 
Регистрация: 11.01.2009
Сообщений: 2,134
Репутация: 2147
expforex expforex expforex expforex expforex expforex expforex expforex expforex expforex expforex
Сказал(а) спасибо: 136
Поблагодарили 2,089 раз(а) в 733 сообщениях
Поинты: 267
Сообщение от alexshell Посмотреть сообщение
Можно.Просто здесь вопрос стоит в том делать или не делать вычисления на выбранном ордере. Результат будет тот же. Но вычислений будет меньше. Хотя это мелочи конечно.

То же так думал. Но eevviill доказал мне что сортировка не меняет очередность ордеров.
я отстал
но с точки зрения правильной проверки все же считаю что лучше перепроверять по времени. !
в любом случае в истори этот номер с последним ордером не прокатит.!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Советники на заказ! admin@expforex.com
Говорим Спасибо
expforex вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
alexshell (10.04.2013), eevviill (10.04.2013)
Старый 10.04.2013, 09:29   #1143 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от expforex Посмотреть сообщение
...
в любом случае в истори этот номер с последним ордером не прокатит.!
Точно?
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.04.2013, 11:41   #1144 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Добрый день ув. программисты. Подскажите, есть ли у кого-нить в наличии функция детектора круглых уровней для встройки в сову? В нете искал, так и не нашел. А для некоторых сов она очень нужная.
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 10.04.2013, 12:34   #1145 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от alexshell Посмотреть сообщение
Отложка естественно не будет иметь лося или профит. Поэтому и задано в условиях что отложки пропускаем и не делаем лишних вычислений.Со временем там мы сравниваем с нулём только один раз на первом ордере.Потом время меняется на время ордера и уже следующий ордер сравнивается с этим временем.Вообще можно Times=0; тоже вынести за старт. Тогда у нас в программе всегда будет присутсвовать время последнего закрытого ордера. И в цикле будем сравнивать с этим временем.Соответственно вычислений будет меньше.
Со временем всё логично. Если вынести за функцию (в глобальные), то будет, с точки зрения оптимизации, очень даже резонно. Ведь все предыдущие ордера, которые закрылись раньше, чем Times будут отсекаться.
А вот с типом я всё-таки не согласен. Ведь ордера перебираются всё-равно все... если не изменили какие-то условия дефолтовые (например, вынесли ту же переменную Times в глобальные).
Так вот, ордера перебираются все... у каждого ордера есть свои какие-то данные (тип, профит, открытие, закрытие.. итд).
Если уж ордера перебираются все, то достаточно отбирать их согласно какого-то одного значения т.к. другие данные ордеров заданные те же самые.

Например, попалась отложка. Тут согласно двух предыдущих вариантов будет так:
1. Сова смотрит тип ордера.
2. Время закрытия смотреть не будет, т.к. ордер отсёкся (не подходит под условия)
Но откуда мы знает как компилятор будет их перебирать?

Если рыночный ордер в истории, то...
1. Проверяем тип.. (подходит)
2. Проверяем время закрытия (подходит)
Получается провериться 2 условия, вместо одного. Хотя перебор по времени даст тот же эффект.
Логично?
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (10.04.2013)
Старый 10.04.2013, 13:03   #1146 (permalink)
Элитный участник
 
Аватар для alexshell
 
Регистрация: 29.10.2010
Сообщений: 650
Репутация: 1669
alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell alexshell
Сказал(а) спасибо: 918
Поблагодарили 1,667 раз(а) в 584 сообщениях
Поинты: 339
Сообщение от hoz Посмотреть сообщение
Со временем всё логично. Если вынести за функцию (в глобальные), то будет, с точки зрения оптимизации, очень даже резонно. Ведь все предыдущие ордера, которые закрылись раньше, чем Times будут отсекаться.
А вот с типом я всё-таки не согласен. Ведь ордера перебираются всё-равно все... если не изменили какие-то условия дефолтовые (например, вынесли ту же переменную Times в глобальные).
Так вот, ордера перебираются все... у каждого ордера есть свои какие-то данные (тип, профит, открытие, закрытие.. итд).
Если уж ордера перебираются все, то достаточно отбирать их согласно какого-то одного значения т.к. другие данные ордеров заданные те же самые.

Например, попалась отложка. Тут согласно двух предыдущих вариантов будет так:
1. Сова смотрит тип ордера.
2. Время закрытия смотреть не будет, т.к. ордер отсёкся (не подходит под условия)
Но откуда мы знает как компилятор будет их перебирать?

Если рыночный ордер в истории, то...
1. Проверяем тип.. (подходит)
2. Проверяем время закрытия (подходит)
Получается провериться 2 условия, вместо одного. Хотя перебор по времени даст тот же эффект.
Логично?
Да всё логично. Только если отложку не отсекём то по ней то же сделается несколько операций:
Times==OrderCloseTime( );
profit= OrderProfit( )+OrderSwap()+OrderCommission( ) ;
что по времени будет лучше не знаю.А если в советнике используется много отложек которые периодично удаляются.Если знать всю логику совы тогда можно предметно об этом говорить.
Вот если б вообще избавиться от цикла перебора ордеров это была б революция в совостроении.
alexshell на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (10.04.2013), Алекc1234 (10.04.2013)
Старый 11.04.2013, 07:09   #1147 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Добрый день. Имеется строковая переменная string key = "1-2;3-4"; Вопрос как можно вместо цифр 1,2,3,4 подпехнуть переменные а, b, с, d? И возможно ли такое?

Последний раз редактировалось evgen_82; 11.04.2013 в 07:26.
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.04.2013, 07:26   #1148 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Ничего проще

Код HTML:
string key = a + "-" + b;

Если переменные - вещественные (double), их лучше нормализовать, т.е. убрать лишние знаки после запятой

Код HTML:
string key = DoubleToStr(a, 0) + "-" + DoubleToStr(b, 0)
Или так:

Код HTML:
string key = StringConcatenate(DoubleToStr(a, 0), "-", DoubleToStr(b, 0));
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (15.04.2013), evgen_82 (11.04.2013)
Старый 11.04.2013, 07:50   #1149 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Спасибо, переменные не вещественные. Я немного отредактировал свое первое сообщение, как в этом случае сделать
Код HTML:
string key = "1-2;3-4"
А кавычками обрамлять не надо?
Код HTML:
string key = a + "-" + b;
Мне эту строку надо отправить в длл, и она идет с кавычками. Или это не существенно? А ординарные кавычки допускаются?
Код HTML:
string key = "a + '-' + b";

Последний раз редактировалось evgen_82; 11.04.2013 в 07:56.
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.04.2013, 07:56   #1150 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Точно так же, по аналогии:

Код HTML:
string key = a + "-" + b + ";" + c + "-" + d;
А что вы делать с такой переменной собираетесь, лубопытно? Наверное в файл писать?

В кавычках это будет буква, а не переменная, т.е. значение вместо ней не подставится. Хоть в двойных, хоть в одинарных

Последний раз редактировалось ale002; 11.04.2013 в 08:01.
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (15.04.2013)
Старый 11.04.2013, 07:57   #1151 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
В Dll пихать. Посмотрите мое сообщение чуть выше, я правильно там написал?
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ale002 (11.04.2013)
Старый 11.04.2013, 08:17   #1152 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Использовал след вариант.
Код HTML:
string Tg = StringConcatenate(WT1 , "-" , WT2 , ";" , WT3)
Идут ошибки млин,

Скрытый текст

'StringConcatenate' - initialization expected E:\Fort\Test\Test.mq4 (54, 13)
'(' - comma or semicolon expected E:\Fort\Test\Test.mq4 (54, 30)
'WT1' - expression on global scope not allowed E:\Fort\Test\Test.mq4 (54, 31)
'WT2' - expression on global scope not allowed E:\Fort\Test\Test.mq4 (54, 42)
'WT3' - expression on global scope not allowed E:\Fort\Test\Test.mq4 (54, 53)
')' - unbalanced right parenthesis E:\Fort\Test\Test.mq4 (54, 56)
[свернуть]
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.04.2013, 08:33   #1153 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Ошибка не здесь - где-то в предыдущих строках
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
evgen_82 (11.04.2013)
Старый 11.04.2013, 08:47   #1154 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Перед этим только:
Код HTML:
extern int WT1 = 20;
extern int WT2 = 115;
extern int WT3 = 22;
Если убрать все четыре строчки, то ошибок нет...

Последний раз редактировалось evgen_82; 11.04.2013 в 08:49.
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.04.2013, 09:33   #1155 (permalink)
::: __,,,^._.^,,,__ :::
 
Аватар для ale002
 
Регистрация: 28.02.2010
Сообщений: 1,246
Репутация: 2528
ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002 ale002
Сказал(а) спасибо: 794
Поблагодарили 2,502 раз(а) в 770 сообщениях
Поинты: 670
Дак операторы (StringConcatenate, + и т.д.) можно использовать только в функциях. start, init, пользовательских.. А там где extern - только объявление переменных или присвоение им значений и никаких вычислений
ale002 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
evgen_82 (11.04.2013)
Старый 11.04.2013, 10:44   #1156 (permalink)
Активный участник
 
Аватар для evgen_82
 
Регистрация: 02.01.2013
Сообщений: 35
Репутация: 36
evgen_82
Сказал(а) спасибо: 63
Поблагодарили 35 раз(а) в 19 сообщениях
Поинты: 72
Подпехнул свой стринг в инит, все пошло. Спасиб.
evgen_82 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ale002 (11.04.2013)
Старый 11.04.2013, 16:41   #1157 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Мне нужно сделать, вроде как простую вещь. Но я что-то стопорнулся.
Есть диапазон быстрых сигнальных машек разных периодов и одна машка медленная.
Нужно чтоб при пересечении любой из быстрых сигнальных машек выше или ниже медленной появлялось условие для покупки или продажи, соответственно.
Дальше когда цена откатывается к той быстрой машке, которая пересекла медленную происходит соответственно вход в рынок.
Так как тут пачка машек, то работать удобнее будет через массив. Вот моя функция проверки пересечения машек, которая не возвращает верный результат почему-то:
PHP код:
//+-------------------------------------------------------------------------------------+
//| Получение значений МА на двух соседних барах                                        |
//+-------------------------------------------------------------------------------------+
double GetCurAndPrevMA(int maPerioddoubleprevMA)
{
   
prevMA iMA(NULLi_TFmaPeriod0MODE_EMAMODE_CLOSE1);
   return (
iMA(NULLi_TFmaPeriod0MODE_EMAMODE_CLOSE0));
}
//+-------------------------------------------------------------------------------------+
//| Получение положения машек между собой                                               |
//+-------------------------------------------------------------------------------------+
void GetStateMa(intcrossDir[])
{
   
double ema365_1;
   
double ema365_0 GetCurAndPrevMA(365ema365_1);

   Print(
"g_maPeriod[0] = "g_maPeriod[0]);
   Print(
"g_maPeriod[1] = "g_maPeriod[1]);
   Print(
"g_maPeriod[2] = "g_maPeriod[2]);
   Print(
"g_maPeriod[3] = "g_maPeriod[3]);
   
   for (
int i=0i<4i++)
   {
      
double ema1;
      
double ema0 GetCurAndPrevMA(g_maPeriod[i], ema1);

      
crossDir[i] = CROSS_NO;

//      Print("ema1 < 365_1 ", ema1 ," < ", ema365_1);
      
if (/*ema1 < ema365_1 && */ema0 ema365_0)
      {
//         Print("ema1 < 365_1 ___ ", ema1 ," < ", ema365_1);
         
Print("ema0 > 365_0 ___ "ema0 ," > "ema365_0);
         
crossDir[i] = CROSS_UP;
      }
      if (
/*ema1 > ema365_1 && */ema0 ema365_0)
      {
//         Print("ema1 > 365_1 ___", ema1 ," > ", ema365_1);
         
Print("ema0 < 365_0 ___ "ema0 ," < "ema365_0);
         
crossDir[i] = CROSS_DN;
      }
   }

В глобальных вот что есть касательно данного вопроса:
PHP код:
extern int i_TF 0;
int g_maPeriod[3] = {625150250},             // Периоды обрабатываемых МА
    
g_singMa[3] = {1,2,3,4};                     // признаки машек, добавляемые к основному мэйджику
extern string ___H1 " ________ Параметры ордера _________";
int crossDir[3];
#define CROSS_UP             0                                 // Признак нахождения быстрой средней
                                                               // ..над медленной
#define CROSS_DN             1                                // Признак нахождения медленной..
                                                               // ..средней над быстрой
#define CROSS_NO            -1                                 // Признак равенства двух средних 
Вот принт из старта результатов:
Код:
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: crossDir[3] = 0
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: crossDir[2] = -1
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: crossDir[1] = -1
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: crossDir[0] = -1
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: g_maPeriod[3] = 250
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: g_maPeriod[2] = 150
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: g_maPeriod[1] = 25
2013.04.11 18:34:53	2009.01.26 00:04  Base150_New EURUSD,H1: g_maPeriod[0] = 6
Хотя, судя по скрину всё понятно, что все машки ниже самой жирной, значит должен быть результат -1 т.к. там дефайн в глобальных.



Как лучше поступить? Почему не правильно возвращаются значения элементов массива crossDir[]

Последний раз редактировалось hoz; 11.04.2013 в 17:31.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 11.04.2013, 18:48   #1158 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сначала объяви массивы правильно. Потом будем думать, если не пропадёт ошибка.
Ты объявляешь массив из трёх элементов, а сам массив имеет 4 элемента...???
int g_maPeriod[3] = {6, 25, 150, 250},
g_singMa[3] = {1,2,3,4};
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
hoz (11.04.2013)
Старый 11.04.2013, 23:59   #1159 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Сначала объяви массивы правильно. Потом будем думать, если не пропадёт ошибка.
Ты объявляешь массив из трёх элементов, а сам массив имеет 4 элемента...???
int g_maPeriod[3] = {6, 25, 150, 250},
g_singMa[3] = {1,2,3,4};
С массивами у меня ещё маловато опыта работы, сразу не верно объявил.. Но ещё до Вашего ответа исправил. Так же исправил косяк. В общем по ходу, всё-таки mq4 кривоватый язык.
Ситуация решилась так:
Если массивы объявить глобально без размера, например, в случае с crossDir[] так:
PHP код:
int crossDir[]; 
потом через ресайз изменить размер массив, а в данном случае его задать т.к. при инициализации, как я понял, его размер будет не иметь длины, то всё заработало.
В функции я дописал вот так:
PHP код:
//+-------------------------------------------------------------------------------------+
//| Получение положения машек между собой                                               |
//+-------------------------------------------------------------------------------------+
void GetStateMa(intcrossDir[])
{
   
double ema365_1;
   
double ema365_0 GetCurAndPrevMA(365ema365_1);

   Print(
"g_maPeriod[0] = "g_maPeriod[0]);
   Print(
"g_maPeriod[1] = "g_maPeriod[1]);
   Print(
"g_maPeriod[2] = "g_maPeriod[2]);
   Print(
"g_maPeriod[3] = "g_maPeriod[3]);
   
   for (
int i=0i<4i++)
   {
      
ArrayResize(crossDir,i);
      
double ema1;
      
double ema0 GetCurAndPrevMA(g_maPeriod[i], ema1);

      
crossDir[i] = CROSS_NO;

      if (
ema1 ema365_1 && ema0 ema365_0)
      {
         Print(
"ema1 < 365_1 ___ "ema1 ," < "ema365_1);
         Print(
"ema0 > 365_0 ___ "ema0 ," > "ema365_0);
         
crossDir[i] = CROSS_UP;
      }
      if (
ema1 ema365_1 && ema0 ema365_0)
      {
         Print(
"ema1 > 365_1 ___"ema1 ," > "ema365_1);
         Print(
"ema0 < 365_0 ___ "ema0 ," < "ema365_0);
         
crossDir[i] = CROSS_DN;
      }
   }

Но опять же почему такая чушь происходит так и не понял. То ли баг языка, то ли..
Ведь явно объявлять размер массива никто не запрещал, да и частяком такое встречаю и всё работает исправно.
Может есть у мысли по этому поводу? Мне даже очень интересно стало..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 12.04.2013, 04:23   #1160 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
С массивами у меня ещё маловато опыта работы, сразу не верно объявил.. Но ещё до Вашего ответа исправил. Так же исправил косяк. В общем по ходу, всё-таки mq4 кривоватый язык.
Код:
      ArrayResize(crossDir,i);
      double ema1;
      double ema0 = GetCurAndPrevMA(g_maPeriod[i], ema1);

      crossDir[i] = CROSS_NO;
Но опять же почему такая чушь происходит так и не понял. То ли баг языка, то ли..
Ведь явно объявлять размер массива никто не запрещал, да и частяком такое встречаю и всё работает исправно.
Может есть у мысли по этому поводу? Мне даже очень интересно стало..
Имея маловатый опыт, не торопитесь обвинять язык в кривости и баговости.
Вы продолжаете обращаться к несуществующему элементу массива, несмотря на совет Алексея. В массиве длиной i последний элемент имеет индекс i-1.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (12.04.2013)
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 07:57. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO