Ошибки, баги, вопросы - страница 1009

 
TheXpert:

Есть ли программный аналог вызова кнопки ?

ChartRedraw не канает.

С MQL5 нет, а по другому не знаю. В Сервисдеске уже висит заявка, но пока глухо.
 

Ок, задам вопрос по-другому, может таки есть нормальный ответ.

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

Если тиков нет, то даже после того, как данные индикатора обновятся, они не показываются на графике, пока график не будет принудительно обновлен.

Есть ли нормальный способ делать автоматический показ новых данных без тиков?

 
TheXpert:

Ок, задам вопрос по-другому, может таки есть нормальный ответ.

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

Если тиков нет, то даже после того, как данные индикатора обновятся, они не показываются на графике, пока график не будет принудительно обновлен.

Есть ли нормальный способ делать автоматический показ новых данных без тиков?

Есть проблема, когда весь массив данных не отображается пока не придёт новый тик. И можно или нажать кнопку Обновить или переключить таймфрейм. Я в таймере сделал вызов OnCalculate() для таких случаев, но это не помогает. При чём данные из индикаторных буферов получить можно, но они не отображаются до нового тика или принудительного обновления или переключения таймфрейма.

Считаю это багом.

У тебя такой же случай или не показываются только именно последние новые данные? 

 
tol64:

У тебя такой же случай или не показываются только именно последние новые данные? 

Такой же наверное. Я сейчас пилю логику работы в оффлайн режиме и выходных.

Видимо очень дорогое удовольствие по ресурсам давать программный доступ к этой функции. Но сделать обновление, если у индикатора изменилось больше (х) значений, стоило бы.

 
А ChartRedraw не помогает?
 
Renat:
А ChartRedraw не помогает?
Первым делом проверил -- увы.
 
TheXpert:

Ок, задам вопрос по-другому, может таки есть нормальный ответ.

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

Если тиков нет, то даже после того, как данные индикатора обновятся, они не показываются на графике, пока график не будет принудительно обновлен.

Есть ли нормальный способ делать автоматический показ новых данных без тиков?

Проверенный древний способ - переключение таймфрейма.  За неимением лучшего.

По нажатию на кнопку сделано здесь: https://www.mql5.com/ru/code/224

ChartReinit
ChartReinit
  • голосов: 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 

билд 821

при использовании стандатной библиотеки  (класс CTrade) при открытии позиции по рынку на покупку, ее можно выбрать для изменения стопа или профита спустя 2,5 сек (меньше не получается )

PositionSelect(_Symbol)

возвращяет false

с позицией на продажу такой ситуации нет 


//+------------------------------------------------------------------+
//|                                                test_open_buy.mq5 |
//|                                                         olyakish |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "olyakish"
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh> 
CTrade trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); // лучшее предложение на покупку

   bool res=trade.PositionOpen(_Symbol,// инструмент
                               ORDER_TYPE_BUY,// 
                               0.1,// количество лотов для торговли
                               Ask,// последняя цена bid
                               0.0,// Stop Loss
                               0.0,// Take Profit 
                               " ");
// без комментариев  
   Print("res=",res);
   Print(PositionSelect(_Symbol));
   Sleep(2500);
   Print(PositionSelect(_Symbol));

  }
//+------------------------------------------------------------------+
2013.07.01 14:49:57     test_open_buy (EURUSD,M1)       res=true
2013.07.01 14:49:57     test_open_buy (EURUSD,M1)       false
2013.07.01 14:49:59     test_open_buy (EURUSD,M1)       true
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTrade - Документация по MQL5
 
void GetHistoryProperties()
  {
// Узнаем, есть ли позиция
 
   HistorySelect(t1,t0);
   ulong    ticket=0;
   uint     total=HistoryDealsTotal();
   
   for(uint i=0;i<total;i++){
  if((ticket=HistoryDealGetTicket(i))>0){
  bool ss=HistoryOrderGetString(ticket,ORDER_SYMBOL,symbol1);//не работает
  Print(symbol1," ---",Symbol()," ",ss," ",ticket);
    //пустое значение symbol1
  //или так
  symbol1=myhistory.Symbol();
  Print(symbol1," ---",Symbol()," ", ticket);
  //пустое значение symbol1
 if (Symbol()==symbol1)   {  //Без этого условия всё работает




     }}}

//---
   SetInfoPanel(); // Установим/обновим информационную панель
  }  
Не могу получить символ ордера на истории баг или ошибка?
 
zfs:
Не могу получить символ ордера на истории баг или ошибка?

Так вроде же отвечали тебе на этот вопрос. Тикет выбираешь из истории сделок, а свойство пытаешься получить из истории ордеров. Это разные списки.

P.S. И статья есть с примерами: Рецепты MQL5 - История сделок и библиотека функций для получения свойств позиции