Ошибки, баги, вопросы - страница 1776
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ошибка при компиляции
int f( const T& ) { return sizeof( T ); }
class A {};
void OnStart()
{
const A * const a = new A; //Error: 'T' - unexpected token
f( a );
}
В Справке Metatrader 4 про индикатор iGator()
[in] Источник данных, идентификатор одной из линий индикатора. Mожет быть любой из следующих величин:
MODE_GATORJAW - синяя линия (линия челюсти аллигатора),
MODE_GATORTEETH - красная линия (линия зубов аллигатора),
MODE_GATORLIPS - зеленая линия (линия губ аллигатора).
а внизу пример
double diff=iGator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_UPPER,1);
Источник данных MODE_UPPER, я так понимаю ошибка в справке
Ошибка при компиляции (точнее отсутствие сообщения об ошибке)
A() { ::ArrayResize( i1, 1 ); }
int i1[ ];
int i2[1];
void f1() const { i1[0] = 0; } //нет сообщения ошибки
void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified
};
Нашел две ошибки при обработке события нажатия кнопок мыши.
1. Обработка нажатия колесика мыши в OnChartEvent(). Смысл в том, что функция генерирует событие (id == CHARTEVENT_MOUSE_MOVE) при нажатии левой кнопкой мыши (с удержанием и без удержания), правой кнопкой мыши (с удержанием и без удержания), а если нажать на колесико - то событие будет сгенерировано только при удержании. Т.е. если просто нажать на среднюю клавишу и сразу отпустить - событие не будет сгенерировано!
2. После обработки нажатия левой кнопки мыши (sparam == "1") генерируется событие sparam == "0". После нажатия на правую кнопку мыши (sparam == "2") почему-то событие sparam == "0" не генерируется. Разве не должны все кнопки мыши обрабатываться одинаково? Про нажатие на колесико я молчу, т.к., как я уже сказал в п.1 - при нажатии на колесико событие не генерируется.
Проверочный код:
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
//| Обработка события графика |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
switch(id)
{
case CHARTEVENT_MOUSE_MOVE:
FuncMove(lparam,dparam,sparam);
break;
}
}
//+------------------------------------------------------------------+
//| Функция обработки события перемещения мыши |
//+------------------------------------------------------------------+
void FuncMove(const long lparam,// Х координата
const double dparam,// Y координата
const string sparam // Строковое значение статуса кнопки
)
{
Print(__FUNCTION__,": sparam = "+sparam);
}
//+------------------------------------------------------------------+
//| Функция деинициализации индикатора |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- Отписываемся от события передвижения мыши
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,false);
}
//+------------------------------------------------------------------+
Ошибка при компиляции (точнее отсутствие сообщения об ошибке)
A() { ::ArrayResize( i1, 1 ); }
int i1[ ];
int i2[1];
void f1() const { i1[0] = 0; } //нет сообщения ошибки
void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified
};
в функции f2 меняется состояние объекта A, т.к. массив A::i2 не динамический - все его элементы принадлежат объекту A
Ошибка при компиляции
class B {
int A() { return 0; }
void f( int ) {}
void g() { f(A()); } //Error: 'A' - invalid cast operation
};
Дратути. Вопрос: как на браузерах моб платформ (андроид, эпл) отправить сообщение пользователю с которым еще не было переписки? Смотрел с нескольких разных устройств - нигде нет кнопки "отправить сообщение", как и "добавить в др." Страница пользователя выглядит примерно так, кнопок нет:
да я уже давно об этом говорил. пока молчат.
Нашел две ошибки при обработке события нажатия кнопок мыши.
Проверим.
Спасибо, проверьте еще, пожалуйста, номер первого видимого бара на графике: ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR );
Суть в том, что если отключить прокрутку графика, и мониторить последний видимый бар, то в момент образования новой свечи его номер, почему-то изменяется, хотя график не двигается! ТФ М1 для того, чтобы можно было быстрее проверить. Запуск из индикатора:
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Подписываемся на событие движения мыши
ChartSetInteger( 0, CHART_EVENT_MOUSE_MOVE, true );
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
//| Обработка события графика |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
switch( id )
{
case CHARTEVENT_MOUSE_MOVE:
Print( __FUNCTION__," "+TimeToString( TimeCurrent(), TIME_DATE|TIME_SECONDS )+": sparam = "+sparam+", ",(int)ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR ));
break;
}
}