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

 

В нескольких последних билдах (включая 458) на одной из двух машин стабильно наблюдаются две проблемы тестера:

1) ошибка запуска агента:

EM 0 Core 1 11:44:11 agent process started
QN 0 Core 1 11:44:11 connecting to 127.0.0.1:3000
KI 0 Core 1 11:44:15 connected
HO 2 Core 1 11:44:17 tester agent synchronization error
GM 2 Core 1 11:44:17 disconnected
LK 0 Core 1 11:44:17 connection closed

CQ 0 Tester 11:44:14 MetaTester 5 build 450 (16 May 2011)
MP 0 Server 11:44:14 MetaTester 5 started on 127.0.0.1:3000
LI 0 Startup 11:44:14 initialization finished
MR 2 127.0.0.1 11:44:18 close socket
EI 0 127.0.0.1 11:44:18 login (build 450)
EJ 0 Tester 11:44:19 tester agent shutdown

2) При входе на вкладку агенты примерно 30 секунд терминал не реагирует (песочные часы).

Есть предположение, что проблемы связаны с одноядерным процессором или отсутствием удаленных (remote) агентов.

 
stringo:
Вообще-то уже 458 билд выпущен

так да... но проблема осталась:

2011.05.27 19:19:57 Core 2 slow agent failed
2011.05.27 19:19:57 Core 2 connection closed
2011.05.27 19:19:57 Core 2 too slow agent. busy time is 3703 ms. avg time is 915 ms
2011.05.27 19:19:55 Core 1 slow agent failed
2011.05.27 19:19:55 Core 1 connection closed
2011.05.27 19:19:55 Core 2 common synchronization completed
2011.05.27 19:19:54 Core 1 too slow agent. busy time is 3672 ms. avg time is 915 ms
2011.05.27 19:19:53 iRU1 slow agent failed
2011.05.27 19:19:53 iRU1 connection closed
2011.05.27 19:19:53 Core 2 authorized (agent build 458)
2011.05.27 19:19:53 Core 2 connected
2011.05.27 19:19:53 iRU1 too slow agent. busy time is 3672 ms. avg time is 915 ms

 
MONTEGRO:

так да... но проблема осталась:

Будем думать дальше
 

Прошу уточнить следующие нюансы:

1. Алгоритм проверки/обработки SL/TP при отправке дополнительной сделки. Уточнения на примере.

Примечание: все торговые запросы имеют параметр ORDER_FILLING_AON; уже есть длинная позиция.

Сценарий №1. Хочу еще докупить (разумеется, по тому же инструменту). Отправляю сделку с дополнительным объемом, а также скорректированными SL/TP. В случае успешного исполнения запроса результат будет: дополнительный лот + обновленные SL/TP?

Сценарий №2. Хочу продать. Отправляю сделку с меньшим лотом без указания SL/TP (SL/TP = 0). У оставшейся позиции будет уменьшен лот + удалены SL/TP?

Сценарий №3. Тоже самое как сценарии №2, только пытаюсь установить предельные SL/TP (заведомо невозможные для длинной позиции). Результат?

2. Алгоритм проверки объема сделки. Уточнения на примере.

Будут ли какие изменения в связке "минимальный лот/минимальный шаг лота"?

Примечания: все торговые запросы имеют параметр ORDER_FILLING_CANCEL или ORDER_FILLING_RETURN; уже есть одна длинная позиция объемом 1.0; мин.лот = 0.1; мин.шаг = 0.01;

Сценарий №1. Пытаюсь выйти с рынка (закрыть имеющуюся позицию противоположной сделкой того же объема). Рынок новостной, поэтому пытаюсь хоть по чуть-чуть выводить (ORDER_FILLING_CANCEL или ORDER_FILLING_RETURN), т.к. на всю сумму реквоты. Сделка совершается частично на 0,99 лота. Соответственно, чтобы полностью закрыть позицию, мне нужно отправить сделку с лотом 0.01, а нельзя - мин.лот - 0.1. Т.е. мне нужно добавить сначала 0,09 лота, чтобы получить 0.1, а потом пытаться закрыть его (уже с ORDER_FILLING_AON)?

Сценарий №2. Когда произошло частичное завершение сделки, а оставшийся объем позиции меньше минимального шага (частичное выполнение на 0.999 лота, а осталось "висеть" 0.001 лота). Будет ли такая ситуация?

  

П.С. В идеале, хотелось бы ознакомиться с унифицированной логикой установки ордеров, которая бы "закрывала" все теоретически возможные случаи. В документации не нашел, может пропустил...

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
uncleVic:

Ошибки в библиотеке нет. Существуют две тонкости работы с данными индикатора при помощи класса (которые может быть не достаточно полно описаны в справке).

1. Чтобы данные индикатора стали доступны через класс, нужно чтобы класс эти данные скопировал из индикатора. Для этого, при малейшем подозрении что данные изменились, вызывайте метод Refresh(int). В Вашем случае:

2. Чтобы данные индикатора стали доступны через класс на достаточную "глубину", нужно установить размеры буферов (по-умолчанию размеры буферов 256). Для этого, после создания объекта, вызовите метод BufferResize(int). В Вашем случае:

Извините если путано. Отвечу на дополнительные вопросы.

Можете предоставить хотя бы самый простой код индикатора ни основе ишимоку с использованием стандартной библиотеки, а то из-за отсутствия документации и примеров никак не могу понять как оно работает. Например который рисует зеленые стреки под каждым баром когда tenkan sen>kijun sen и находятся над облаком и красные когда   tenkan sen<kijun sen  и находятся под облаком.
Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

гибкость настроек интерфейса - есть предложение, сделать мт5 более гибким под юзера, в плане настроек отображения названия символов, а точнее - возможность переименовки любого т.е. не - не gbpusd - а ... - "фунт" например, так же ввести разделительные плашки типа - валюта и стрелка вниз, металлы, акции, что бы небыло всё в одной куче, в планках-разделяющих можно даже мини-иконки добавить, например валюта, знак бакса или бумажки зелёной мелкой, металлы - ну золота маленькие слиточки и тд. примерно такая гибкость настроек цветов, шифтов и паннелей есть в платформе "Pro Trader", надеюсь не прозвучит как реклама, тк Ваша на тек момент конечно проще и лучше ... :)
так же было бы неплохо если бы можно было фон, под символом в списке символов менять, как и цвет шифта, например мажоры выделить черный фон и белый шрифт, средней важности, синий и белый ну и совсем неважные, как есть чёрные на белом ...

 
Graff:
Можете предоставить хотя бы самый простой код индикатора ни основе ишимоку с использованием стандартной библиотеки, а то из-за отсутствия документации и примеров никак не могу понять как оно работает. Например который рисует зеленые стреки под каждым баром когда tenkan sen>kijun sen и находятся над облаком и красные когда   tenkan sen<kijun sen  и находятся под облаком.
Приложите свою "рыбу" и, коротенько пожелания. По возможности (не обещаю быстро) посмотрю.
 

papaklass:

Алгоритм 2:

1. Закрывайте позиции сделками кратными минимальному разрешенному объему. Ваш пример 0.99 лота не возможен, т.к. минимальный лот 0.1 лота. Другие участники рынка выставляют свои ордера тоже кратными 0.1 лота. Так что Ваш пример не возможен.

2. см пункт 1. 

Т.е., Вы хотите сказать, что если после исполнения ордера объём позиции становится меньше минимального, то такой ордер будет отвергнут ?

На серверах MQ шаг=минимальному лоту=0.01. Есть другие примеры, где шаг<минимального лота ? Чтобы проверить поведение терминала.

А то от разработчиков ответа недождёшся.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Graff:
Можете предоставить хотя бы самый простой код индикатора ни основе ишимоку с использованием стандартной библиотеки, а то из-за отсутствия документации и примеров никак не могу понять как оно работает. Например который рисует зеленые стреки под каждым баром когда tenkan sen>kijun sen и находятся над облаком и красные когда   tenkan sen<kijun sen  и находятся под облаком.

данный пример работы с библой - просто строим линию Tenkan
Дальше вам будет проще добавить по аналогии еще 4 буфера и анализировать их (для стрелочек).

Примечание: взятие значений буферов индикатора кроме показанного способа можно проводить еще как минимум двумя. Показанный не единственный возможный

#property indicator_chart_window
#property indicator_buffers  1
#property indicator_plots    1
#property indicator_color1   clrRed
#property indicator_type1    DRAW_LINE

#include <Indicators\Trend.mqh>  // подключили библу

input int tenkan=9;
input int kijun=26;
input int senkou=52;

CiIchimoku ichi; // объект индюка
int h; // его хендл

double Tenkan[]; // буфер для тенкана
//------------------------------------------------------------------
int OnInit()
{
  SetIndexBuffer(0, Tenkan, INDICATOR_DATA);
  ArraySetAsSeries(Tenkan, true);

  ichi.Create(Symbol(), Period(), tenkan, kijun, senkou); // создали буфера
  h=ichi.Handle(); // получили хендл
  return(0);
}
//------------------------------------------------------------------
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[])
{
  ichi.Refresh(0); // обновили индюк

  if(BarsCalculated(h)<rates_total) return(0); // если расчет не нужен
        
  int to_copy; // определяем число баров для копирования
  if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total; 
  else { to_copy=rates_total-prev_calculated; to_copy++; }

  // Номера буферов: 0 - TENKANSEN_LINE, 1 - KIJUNSEN_LINE, 2 - SENKOUSPANA_LINE, 3 - SENKOUSPANB_LINE, 4 - CHINKOUSPAN_LINE.
  if (CopyBuffer(h,0, 0,to_copy, Tenkan)<=0) { Print("ошибка"); return(0); }

  return(rates_total);
}
 
uncleVic:

в классах и справке есть недоработка - не описана работа с флагами функции Refresh
Причина обращения: