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

 
pronych:

Всегда отложниками было сложно управлять. на мт4 тоже. может попробовать уйти от этого? например сделать виртуальные отложники (просто хранить их в переменных и открываться по рынку, когда цена пересекла). Сейчас ведь время важно... 

времени нет уже... код только отладил.

хоть немного потестировать успеть, настроить

 
Valmars:
Такие единичные ошибки не повлияют на судьбу Вашего советника на чемпионате. Вот если при отсутствии денег он тупо будет повторно пытаться открыть позицию, генерируя гигабайты в журнал, как это бывало в прошлых чемпионатах, тогда дисквалифицируют.
Не, когда отложенник удалили, другой конечно не выставится если денег нет
 
У меня возникла проблема в определении уровней стопов для отложенных ордеров. При спокойном рынке при желании поставить ордер на дозволенную границу великолепно работает функция SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL), ордера ставятся и все довольны, в том числе и я. А при сильных движениях рынка в начале торговых сессий эта функция перестает работать, ордера не ставятся и в терминале начинают сыпаться ошибки про invalid stops.

Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?

P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.
 
Vladix:
У меня возникла проблема в определении уровней стопов для отложенных ордеров. При спокойном рынке при желании поставить ордер на дозволенную границу великолепно работает функция SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL), ордера ставятся и все довольны, в том числе и я. А при сильных движениях рынка в начале торговых сессий эта функция перестает работать, ордера не ставятся и в терминале начинают сыпаться ошибки про invalid stops.

Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?

P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.

Для отложенных ордеров ошибка invalid stops возникает и при цене открытия ближе стоплевел от текущей.

т.е. проверять на стоплевел надо не только стопы, но и цену открытия.


 

Полагаю, что имеется ошибка в работе функции HistoryDealsTotal(), если она запускается после HistorySelectByPosition().

Через раз выдаёт количество сделок, равное 0, и это при наличии открытой позиции (мультивалютный вариант).

Вот такой код:


void GetDealQuantity(string smbl)
{
long pos_id;
int total, quantity=0;
ulong ticket=0, newticket;
PositionSelect(smbl);
pos_id=PositionGetInteger(POSITION_IDENTIFIER);
bool select=HistorySelectByPosition(pos_id);
total=HistoryDealsTotal();
Print(__FUNCTION__," select=",select," total=",total);
for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
newticket=HistoryOrderGetTicket(i);
if(ticket!=newticket) { quantity++; ticket=newticket; }
}
if(smbl==symbol1) quantity1=quantity;
if(smbl==symbol2) quantity2=quantity;
Print(__FUNCTION__," quantity=",quantity);
}

 Выдаёт в журнал:

2010.01.04 00:20:05 GetDealQuantity select=true total=0
2010.01.04 00:20:05 GetDealQuantity quantity=0
2010.01.04 00:20:05 EURJPY volume=0.1 quantity=0
2010.01.04 00:20:05 GetDealQuantity select=true total=1
2010.01.04 00:20:05 GetDealQuantity quantity=1
2010.01.04 00:20:05 AUDUSD volume=0.1 quantity=1

 

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

Старайтесь правильно вставлять код в сообщения. Попробуйте переделать свой пример так:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void GetDealQuantity(string smbl)
  {
   long pos_id;
   int total,quantity=0;
   ulong ticket=0,newticket;
   if(PositionSelect(smbl))
     {
      pos_id=PositionGetInteger(POSITION_IDENTIFIER);
      bool select=HistorySelectByPosition(pos_id);
      if(select)
        {
         total=HistoryDealsTotal();
         Print(__FUNCTION__," select=",select," total=",total,"posID=",pos_id);
         for(int i=total-1;i>=0;i--)
           {
            newticket=HistoryOrderGetTicket(i);
            if(ticket!=newticket) { quantity++; ticket=newticket; }
           }
         if(smbl==symbol1) quantity1=quantity;
         if(smbl==symbol2) quantity2=quantity;
         Print(__FUNCTION__," quantity=",quantity);
        }
      else
        {
        Print("Не удалось выполнить HistorySelectByPosition() для pos_id=",pos_id);
        }

     }
   else
     {
      Print("Позиции не выбрана по символу ",smbl);
     }
  }
//+------------------------------------------------------------------+
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Есть где-нибудь пример скрипта записи последней котировки в буфер обмена или похожее что-нибудь?
 
jmp:
Есть где-нибудь пример скрипта записи последней котировки в буфер обмена или похожее что-нибудь?

Буфер обмена виндовса?

Надо в msdn смотреть в какой dll нужные функции...

 
Хочу разобраться. Поправьте меня, если ошибаюсь. Когда я изучал документацию по индикаторам (фракталы, кажется), мне чётко врезалось в память и помнится по сей день, что при двух соседних (идущих подряд или разделяемых незначительным количеством баров) экстремумах равного уровня ключевым считается самый послений (более новый, что правее). Однако индикатор Zig-zag, а также свойство примагничивания графических объектов (видимо, основанное на этом зигзаге) фиксируются на первом экстремуме из двух близких одного уровня свечах, хотя с примагничиванием до сих пор не могу дать однозначного заключения, так как, по-моему, поведение меняется от случая к случаю. А вот Zig-zag - этот строит только по самой первой свечке. Разве это правильно, товарищи? Разве так должно быть? Или существует несколько "стандартов" без однозначной чёткости правил и каждый волен выбирать сам, судить ли об экстремуме по крайней левой или правой свечке?
 
Зигзагов миллионов. Используйте тот, что Вы считаете правильным.
Причина обращения: