Здравствуйте.
Помогите разобраться.
Стоит задача вызывать таймер по событию, который будет циклично менять цвет фона графика. То есть своего рода мигание.
Вот код
void OnTimer () {
color result;
result = ChartGetInteger(0,CHART_COLOR_BACKGROUND);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrRed);
Print ("Смена цвета на красный");
Sleep(1000);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,result);
Print ("Смена цвета на обычный");
}
То есть при вызове таймер запоминаем текущий цвет графика, меняем на красный и через секунду снова как было. Таймер вызывается каждые 2 секунды. Но вот проблема в том, что смена цвета фона происходит как попало, раз в 10 сек, или 5. Нет равномерной цикличности.
Принты работают четко, каждую секунду. А вот функция смены цвета не срабатывает при каждом вызове, все хаотично. Пробовал поставить смену цвета на каждом тике, тоже самое. Меняет цвет как попало, через тик или два. В чем может быть проблема ? Почему смена цвета не срабатывает при каждом вызове ?
А так?
void OnTimer () { color result; result = ChartGetInteger(0,CHART_COLOR_BACKGROUND); ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrRed); ChartRedraw(); Print ("Смена цвета на красный"); Sleep(1000); ChartSetInteger(0,CHART_COLOR_BACKGROUND,result); ChartRedraw(); Print ("Смена цвета на обычный"); }
Зачем же таймер, если в нем применяется Sleep? Все намного проще:
color g_clrDefaultColor = clrNONE; int OnInit() { g_clrDefaultColor = ChartGetInteger(0,CHART_COLOR_BACKGROUND); ... } void OnTimer () { color clrNewColor = (ChartGetInteger(0,CHART_COLOR_BACKGROUND) == g_clrDefaultColor)? clrRed : g_clrDefaultColor; ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrNewColor); ChartRedraw(); }
Добрый вечер всем.
Интересно...оказывается я не один счастливчик которому глюки достались.
1 Вот историю сделок и ордеров по магику не могу получить
2.Нормализация не всегда работает.
3. редактор при долгой работе перестает фиксировать изменения.
4. Самый свежий глюк, но допускаю что это у меня глюк. :=)
попробовал найти последнюю сделку или ордер в истории. Алгоритм простейший. Но изумлению не было предела! последние ордер и сделка не показывают свой магик. А когда они становятся предпоследними то показывают!
if((HistorySelect(0,TimeCurrent())))
{
int DealsTotal=HistoryDealsTotal();
ulong ticket;
DealsTotal=HistoryDealsTotal();
if(DealsTotal>0)
{
for(int i=DealsTotal-1; i>=0; i--)
{
ticket = HistoryDealGetTicket(i);
{
if((HistoryDealGetInteger(ticket ,DEAL_TYPE)==DEAL_TYPE_BUY))
{
Alert(" _Magic ",DealInfo.Magic());
Alert("последняя закрытая сделка Buy ",ticket);
break;
}
if((HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL))
{
Alert(" _Magic ",DealInfo.Magic());
Alert("последняя закрытая сделка SELL ",ticket);
break;
}
}}}
Добрый вечер всем.
Интересно...оказывается я не один счастливчик которому глюки достались.
используйте OnTradeTransaction (TRADE_TRANSACTION_HISTORY_ADD), информация не сразу появляется в истории.
используйте OnTradeTransaction (TRADE_TRANSACTION_HISTORY_ADD), информация не сразу появляется в истории.
Я просматриваю и загружаю через 2 дня после совершения сделки. Вижу в истории в МТ5 , но функция его не видит.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Помогите разобраться.
Стоит задача вызывать таймер по событию, который будет циклично менять цвет фона графика. То есть своего рода мигание.
Вот код
void OnTimer () {
color result;
result = ChartGetInteger(0,CHART_COLOR_BACKGROUND);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrRed);
Print ("Смена цвета на красный");
Sleep(1000);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,result);
Print ("Смена цвета на обычный");
}
То есть при вызове таймер запоминаем текущий цвет графика, меняем на красный и через секунду снова как было. Таймер вызывается каждые 2 секунды. Но вот проблема в том, что смена цвета фона происходит как попало, раз в 10 сек, или 5. Нет равномерной цикличности.
Принты работают четко, каждую секунду. А вот функция смены цвета не срабатывает при каждом вызове, все хаотично. Пробовал поставить смену цвета на каждом тике, тоже самое. Меняет цвет как попало, через тик или два. В чем может быть проблема ? Почему смена цвета не срабатывает при каждом вызове ?