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

 
k47:

Да, тут и правда косяк, DoubleToString было поставлено по ошибке. Так что проблема остается только в документации

Кстати документация не соответствует действительности и по классу CAccountInfo в части методов доступа к свойствам по идентификатору.

Определение InfoString() указано в виде double  InfoString(...) и в то же время 

Возвращаемое значение

   true – в случае удачи, false – если не удалось получить значение свойства.

Вряд ли это так тип приводится. Скорее всего значение возвращается двумя путями - через return и через параметр по ссылке. Это подтверждается и  тем, что при использовании метод возвращает string:

 

То же самое и с double  InfoInteger(), который на самом деле возвращает long а не bool, и с double  InfoDouble(), про который тоже написано 
 true – в случае удачи, false – если не удалось получить значение свойства.

 Хотя опять же, как видно  на картинке, параметр определяется только один, так что про ссылку речи нет.... 

Спасибо за сообщение. Библиотека еще меняется, и, видимо, не всегда успеваем вносить изменения в документацию по языку.  Разберемся и приведем в соотвествие.
 
Interesting:

Странное поведение тестера стратегий...


В билде 298 обнаружено странное поведение тестера стратегий после отмены процесса тестирования (раньше этого не замечал).

Итог

кнопка "Отмена" становится кнопкой "Старт", тестирование прекращается. Казалось бы все хорошо, а нет - параметры остаются серыми и отредактировать их не представляется возможным.


 

Спасибо. Воспроизвели и исправили
 

Добрый день! подскажите почему сыпется инвалид стоп?

Принципиально это код переноса в безубыток... думаю многим будет полезен... 

{ int  LevelWLoss  = 10;
  int PosTotal=PositionsTotal();
   for(int i=PosTotal-1; i>=0; i--)
     {
                 MqlTick lasttick;
            SymbolInfoTick(Symbol(),lasttick);
      if (PositionGetInteger(POSITION_TYPE)==0) {
        if (PositionGetDouble(POSITION_SL)-PositionGetDouble(POSITION_PRICE_OPEN)<LevelWLoss*Point()) {
          if (lasttick.bid-PositionGetDouble(POSITION_PRICE_OPEN)>LevelProfit*Point()) {
         
          MqlTradeRequest BezubModif;
                  BezubModif.action= TRADE_ACTION_SLTP;
                  BezubModif.symbol= Symbol();
                  BezubModif.sl = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN)+LevelWLoss*Point(),_Digits);
                  BezubModif.tp = PositionGetDouble(POSITION_TP);
                  BezubModif.deviation=3;
          MqlTradeResult BezubModifResult;
                  OrderSend(BezubModif,BezubModifResult);                                                                                       
          }
        }
      }
      if (PositionGetInteger(POSITION_TYPE)==1) {
        if (PositionGetDouble(POSITION_SL)==0 || PositionGetDouble(POSITION_PRICE_OPEN)-PositionGetDouble(POSITION_SL)<LevelWLoss*Point()) {
          if (PositionGetDouble(POSITION_PRICE_OPEN)-lasttick.ask>LevelProfit*Point()) {

            MqlTradeRequest BezubModif;
                  BezubModif.action= TRADE_ACTION_SLTP;
                  BezubModif.symbol= Symbol();
                  BezubModif.sl = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN)-LevelWLoss*Point(),_Digits);
                  BezubModif.tp = PositionGetDouble(POSITION_TP);
                  BezubModif.deviation=3;
            MqlTradeResult BezubModifResult;
                  OrderSend(BezubModif,BezubModifResult);                     
          }
        }
      }
    }
  }
 
DEDMOROZ:

Добрый день! подскажите почему сыпется инвалид стоп?


А нормально отредактировать свой пост слабо? Для вставки кода есть специальная функция вроде...
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 

Разработчикам - А где вы такую траву берете?

Этож надо было серверу так "обкуриться",  чтобы позиции SELL объявлять как POSITION_TYPE_BUY (0), Buy по видимому должен быть POSITION_TYPE_SELL (1)...


Я про вопрос выше и работу вот этого кода:

if (PositionGetInteger(POSITION_TYPE)==0)

PS

DEDMOROZ, а идентификаторами пользоваться не пробовали? говорят помогает...

Кроме того, полезно разделять код больших блоков на части (ООП на дворе)...

 
Interesting:

Разработчикам - А где вы такую траву берете?

Этож надо было серверу так "обкуриться",  чтобы позиции SELL объявлять как POSITION_TYPE_BUY (0), Buy по видимому должен быть POSITION_TYPE_SELL (1)...


 

Потому что есть другие перечисления, в которых есть ORDER_TYPE_BUY, DEAL_TYPE_SELL, BOOK_TYPE_BUY

 
stringo:

 

Потому что есть другие перечисления, в которых есть ORDER_TYPE_BUY, DEAL_TYPE_SELL, BOOK_TYPE_BUY

А при чем тут PositionGetInteger(POSITION_TYPE)? И тем более при чем тут POSITION_TYPE_BUY и POSITION_TYPE_SELL?


Простой пример:

У меня сейчас есть открытая позиция Sell по EUR (открывал с рынка). Я вижу что она Sell, а советник видит ее как Buy  (0)..

От крываю справку по PositionGetInteger(POSITION_TYPE) и вижу то, что сервер явно что-то путает...


PS

Человек видит открытую позу, человек видит справку и делает все правильно (по его мнению), но у сервера как всегда "особое" мнение...

 
Interesting:

Простой пример:

У меня сейчас есть открытая позиция Sell по EUR (открывал с рынка). Я вижу что она Sell, а советник видит ее как Buy  (0)..

От крываю справку по PositionGetInteger(POSITION_TYPE) и вижу то, что сервер явно что-то путает...


PS

Человек видит открытую позу, человек видит справку и делает все правильно (по его мнению), но у сервера как всегда "особое" мнение...

  

Прежде чем видеть открытую позу, надо бы сначала вызвать функцию PositionSelect
 
stringo:
Прежде чем видеть открытую позу, надо бы сначала вызвать функцию PositionSelect

Тоды извиняюсь, это я сегодня курнуть успел...

 
DEDMOROZ:

Добрый день! подскажите почему сыпется инвалид стоп?

Принципиально это код переноса в безубыток... думаю многим будет полезен... 


   for(int i=PosTotal-1; i>=0; i--)//перебор позиций имеет смысл, если перенос в безубыток мультивалютный
     {//где-то тут должен быть выбор позиции, которую будем допрашивать :)
                 MqlTick lasttick;
            SymbolInfoTick(Symbol(),lasttick);//ask,bid всегда берутся с текущего символа.
или перебор не нужен, или ask,bid по символу позы запрашивать
Причина обращения: