Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 9

 
A100:

Должна быть единая концепция

Концепция изменилась

1881 - такого требования не было. Так что много старого кода и на той же СБ вышло из строя.

 
fxsaber:

Концепция изменилась


1881 - такого требования не было. Так что много старого кода и на той же СБ вышло из строя.Т.

Т.е. Вы предлагаете чтобы при появлении функционала (допустим Сервисы) не привязанного к конкретному графику (просто нет _Symbol) пользоваться CSymbolInfo стало бы нельзя?

 
A100:

Т.е. Вы предлагаете чтобы при появлении функционала (допустим Сервисы) не привязанного к конкретному графику (просто нет _Symbol) пользоваться CSymbolInfo стало бы нельзя?

Я ничего не предлагаю. Говорю, что SymbolInfo не работет, как раньше. Соответственно, СБ не работает, как раньше. Как следствие, много кода не работает, как раньше.

Что же касается Сервисов, где не будет привязки к символу, то предлагаемая правка никак негативно не скажется на работе CSymbolInfo. Прошу Вас включить режим верного восприятия написанного.

 
fxsaber:

СБ не работает, как раньше. Как следствие, много кода не работает, как раньше.


Тогда где взять пример правильного использования СБ, чтобы код заработал

Раньше было так:

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
CPositionInfo  m_position;          
CTrade         m_trade;              
CSymbolInfo    m_symbol;

-

-

   m_trade.SetExpertMagicNumber (m_magic); 
   m_trade.SetDeviationInPoints (Slip);

-

m_trade.Buy(LotSize, sSymbol, m_symbol.Ask(), SL, TP, Signature + sSymbol + " BUY - " + DoubleToString (TotalBuy + 1, 0) + "(" + DoubleToString (Risk, 0) + ")");

-    

   if (m_position.SelectByIndex(i))
         { 
             if (m_position.Symbol() == sSymbol && m_position.Magic() == m_magic)
               {
                   if (m_position.PositionType() == POSITION_TYPE_BUY)             
                     {                       
                       if (m_position.StopLoss() < m_position.PriceOpen())

 
zevs1980:

После обновления перестали работать в тестере (а может и в реале, пока неясно) все мои советники, стандартные работают, чего поменяли, непонятно. Вот лог:

Убрал только ввод настроек. Не открыто ни одной сделки, не открылся график с результатами теста. Куда копать?

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

В приведённом Вами логе не видно ни одного намёка на торговую операцию.

 
Vladimir Karputov:

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

В приведённом Вами логе не видно ни одного намёка на торговую операцию.

Да я уже понял, что дело в СБ, теперь непонятно, как исправить. Да, и мой советник печатает результаты торговых операций, а здесь просто он даже не пытался их совершить. Удалил предыдущий коммент, чтоб не вводить в заблуждение
 
zevs1980:
Да я уже понял, что дело в СБ, теперь непонятно, как исправить. Да, и мой советник печатает результаты торговых операций, а здесь просто он даже не пытался их совершить. Удалил предыдущий коммент, чтоб не вводить в заблуждение

Причин миллион - миллион ошибок в Вашем коде. Вы уже не обижайтесь :) .

Например (это я так, телепатия включаю) - В вашем логе видно было, что баланс 300 РУБЛЕЙ. Карл! ВСЕГО 300 РУБЛЕЙ! Уверены, что Ваш советник корректно обрабатывает ситуацию, когда не хватает денег для открытия позиций???

 
Vladimir Karputov:

Причин миллион - миллион ошибок в Вашем коде. Вы уже не обижайтесь :) .

Например (это я так, телепатия включаю) - В вашем логе видно было, что баланс 300 РУБЛЕЙ. Карл! ВСЕГО 300 РУБЛЕЙ! Уверены, что Ваш советник корректно обрабатывает ситуацию, когда не хватает денег для открытия позиций???

Баланс 3000 был. А как можете объяснить, что код, работавший без проблем и ошибок более полугода, вдруг резко перестал работать с выходом новой обновы

 
zevs1980:

Баланс 3000 был. А как можете объяснить, что код, работавший без проблем и ошибок более полугода, вдруг резко перестал работать с выходом новой обновы

Я много повидал кода - и поверьте если не торгует, то в 99% виноват код. В общем дальнейшее обсуждение БЕЗ КОДА прекращаю. Будет полный код - будет обсуждение.

 
Vladimir Karputov:

Я много повидал кода - и поверьте если не торгует, то в 99% виноват код. В общем дальнейшее обсуждение БЕЗ КОДА прекращаю. Будет полный код - будет обсуждение.

 Было:   sSymbol = Symbol();

Подглядел в вашем свежем коде Secwenta, исправил на

if(!m_symbol.Name(Symbol())) return(INIT_FAILED);  
   sSymbol = m_symbol.Name();

Вуаля, все работает.

Причина обращения: