В Java есть укороченные логические операции И и ИЛИ (&& и ||), при использовании которых правая часть операнда не оценивается, и результат выражения зависит только от левого. Учитывая то, что в MQL нет аналогичных однознаковых операций (& и |), я так понимаю, что в MQL при использовании этих операций должны вычисляться оба операнда (и левый, и правый). Но, учитывая некоторые случаи, в которых при составлении длинных логических кодов с использованием этих оперций, выявлялись ошибки при тестировании (выставление ордеров в запрещенных кодом местах), решил уточнить этот вопрос. Кто знает точно - развейте сомнения.
KONDOR: double level= High[min_V2]; в функции использовать double Level=NormalizeDouble(level,Digits);
Попробовал так сделать, результат - тот же, - нулевой.
int start() {
int mas2[10][2],min_1,min_2,min_V1,min_V2;
for(int i=1;i<Q_Bars;i++) { min_1 =ArrayMinimum(Volume, Q_Bars,1); //определяем индекс бара с минимальным объемом min_V1=iVolume(0,0,min_1); //величина этого объема
mas2[i,0]=Volume[i]; //заполняем 1-ю часть двумерного массива объемами mas2[i,1]=i; //вторую часть - соответствующими им индексами } ArraySort(mas2); //сортируем по величине объемов min_V2=mas2[2,0]; //определяем второй после минимального объем min_2=mas2[2,1]; //соответствующий ему индекс бара
H1= NormalizeDouble(High[min_2],4); //нормализуем level по знакам после запятой create_line("", H1, Ex_col_2, 0, 2); //пытаемся нарисовать линию
return(0); //Bывод: ничего не рисуется, что еще ему надо - ???? } //-------------------------------------------------------------------- void create_line(string name_line,double level,color c,int style,int w) { ObjectCreate(name_line, OBJ_HLINE, 0, 0,0); ObjectSet(name_line, OBJPROP_PRICE1, level); ObjectSet(name_line, OBJPROP_COLOR, c); ObjectSet(name_line, OBJPROP_STYLE, style); ObjectSet(name_line, OBJPROP_WIDTH, w);
Подскажите люди добрые, с чем связана настолько длительная проверка торговой системы что я выложил в code base. уже третий день "ожидает проверки", хотя смотрю проверка идет полным ходом, коды появляются, но не моя ТС.))))) заранее спасибо)
Всем привет! Подскажите, где МТ4 хранит физически значения GlobalVariables? Возник вопрос всвязи с переустановкой Windows.
Вопрос: почему 14-го января не было закрытия по стоп-лоссу?
режим тестирования: все тики
Вопрос: почему 14-го января не было закрытия по стоп-лоссу?
режим тестирования: все тики
смотрите журнал - возможно ошибка баров.
действительно ошибка баров. При этом на H1 все нормально закрывалось в этом месте
Перезагрузил данные с сервера и стало закрываться правильно
Очень интеремует такой вопрос:
В Java есть укороченные логические операции И и ИЛИ (&& и ||), при использовании которых правая часть операнда не оценивается, и результат выражения зависит только от левого. Учитывая то, что в MQL нет аналогичных однознаковых операций (& и |), я так понимаю, что в MQL при использовании этих операций должны вычисляться оба операнда (и левый, и правый). Но, учитывая некоторые случаи, в которых при составлении длинных логических кодов с использованием этих оперций, выявлялись ошибки при тестировании (выставление ордеров в запрещенных кодом местах), решил уточнить этот вопрос. Кто знает точно - развейте сомнения.
double level= High[min_V2]; в функции использовать double Level=NormalizeDouble(level,Digits);
Попробовал так сделать, результат - тот же, - нулевой.
int mas2[10][2],min_1,min_2,min_V1,min_V2;
for(int i=1;i<Q_Bars;i++)
{
min_1 =ArrayMinimum(Volume, Q_Bars,1); //определяем индекс бара с минимальным объемом
min_V1=iVolume(0,0,min_1); //величина этого объема
mas2[i,0]=Volume[i]; //заполняем 1-ю часть двумерного массива объемами
mas2[i,1]=i; //вторую часть - соответствующими им индексами
}
ArraySort(mas2); //сортируем по величине объемов
min_V2=mas2[2,0]; //определяем второй после минимального объем
min_2=mas2[2,1]; //соответствующий ему индекс бара
H1= NormalizeDouble(High[min_2],4); //нормализуем level по знакам после запятой
create_line("", H1, Ex_col_2, 0, 2); //пытаемся нарисовать линию
return(0); //Bывод: ничего не рисуется, что еще ему надо - ????
}
//--------------------------------------------------------------------
void create_line(string name_line,double level,color c,int style,int w)
{
ObjectCreate(name_line, OBJ_HLINE, 0, 0,0);
ObjectSet(name_line, OBJPROP_PRICE1, level);
ObjectSet(name_line, OBJPROP_COLOR, c);
ObjectSet(name_line, OBJPROP_STYLE, style);
ObjectSet(name_line, OBJPROP_WIDTH, w);
}
Попробовал так сделать, результат - тот же, - нулевой.
create_line("name", H1, Ex_col_2, 0, 2); //пытаемся нарисовать линию
2011.04.26 13:29:42 leve2 NZDJPY,M15: object name passed to ObjectSet function cannot be an uninitialized or empty string