Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 830

 
Artyom Trishkin:

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

В общем последовательность такова:

  • нужно открывать позиции с магиком 1 - устанавливаем магик 1, последующие позиции будут иметь магик 1,
  • нужно открывать позиции с магиком 2 - устанавливаем магик 2, последующие позиции будут иметь магик 2,
  • нужно открывать позиции с магиком 3 - устанавливаем магик 3, последующие позиции будут иметь магик 3,

и т.д. ...

Я выразился так по той причине, что у некоторых может быть иное мнение и тоже рабочее.

 
Artyom Trishkin:

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

В общем последовательность такова:

  • нужно открывать позиции с магиком 1 - устанавливаем магик 1, последующие позиции будут иметь магик 1,
  • нужно открывать позиции с магиком 2 - устанавливаем магик 2, последующие позиции будут иметь магик 2,
  • нужно открывать позиции с магиком 3 - устанавливаем магик 3, последующие позиции будут иметь магик 3,

и т.д. ...

Вот было так:

if(BuyCount()>0)
        {
         Print("Уже есть позиция на покупку !!!");
         return; // не добавлять к открытой позиции на покупку
        }
         SL=NormalizeDouble(latest_price.ask - STP*_Point,_Digits);
         TP=NormalizeDouble(latest_price.ask + TKP*_Point,_Digits);
         m_trade.SetExpertMagicNumber(Magic);
         m_trade.Buy(lots1,_Symbol,0,SL,TP,"Lag-MA_IAMA(conversely)_2.5.6.7 + 2");
         m_position.Select(_Symbol);
           {
            ulong myMagic=m_position.Magic();
            Print(" Открыта поза Бай с магиком № ",myMagic,", И спредом ",SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));
           }

m_trade.SetExpertMagicNumber(Magic); перед открытием позиции или после m_trade.Buy(lots1,_Symbol,0,SL,TP,"Lag-MA_IAMA(conversely)_2.5.6.7 + 2");

 
Vladimir Karputov:

Так как в классе CTrade нет метода GetExpertMagicNumber, после торговой операции распечатайте этот код:

так проверите, точно ли разные магики у обоих экспертов.

Спасибо , так удобнее. Не нужен класс CPositionInfo, не нужно позицию выбирать. В тестере работает, но на счете придется подождать развития событий.

 

Подскажите, пожалуйста, чем отличаются SymbolInfoSessionQuote и SymbolInfoSessionTrade ?
Или, что то же самое, чем отличается котировочная сессия от торговой?
Ёшкин кот! И что такое   session_index,       // номер сессии     
У нас что, номерные сессии? По какому принципу они нумеруются, где это написано?

 

Подскажите, пожалуйста, как при программировании на MQL5 использовать метод    void  Ignore(long value)  { m_ignore=value;          } стандартного класса CExpertSignal в пользовательском классе Трейлинга? Как к нему получить доступ?

У меня пользовательский класс сигналов дает методы открытия и закрытия позиций. Но в трейлинге я хотел вести сопровождение позиции по другому методу. Если просто отдельно написать пользовательские классы MySignal и MyTrailing, то закрытие позиции происходит по тому условию, которое сработало первым. Если условия Trailing сработало раньше, то все хорошо. Но иногда поступает новый (реверсный) сигнал от MySignal и позиция переворачивается, а мне после открытия нужно, чтобы она сопровождалась именно трейлингом, не закрывалась и новая не открывалась. Я посмотрел базовые классы и есть ощущение, что за это отвечает m_ignore из базового класса сигналов. Если ему присвоить значение 1 в соответствующем фильтре, то видимо будет работать как надо. Я добавил в класс эксперта в OnInit filter0.Ignore(0). Но я новичок в ООП и никак не пойму, как в классе MyTrailing, который не наследуется от класса CExpertSignal, а является его "кузеном"? поменять это значение (условно так filter0.Ignore(1) ). Подскажите, пожалуйста, как это сделать.

Собственно говоря, более общий вопрос: как передавать информацию между двумя классами, не являющимися наследниками? Как передать информацию из класса трейлинга в класс сигналов? Наверное можно создать глобальную переменную и общаться через нее. Но это выглядит совсем извращенно относительно логики защищенных членов в ООП.


 
User_mt5:

Подскажите, пожалуйста, чем отличаются SymbolInfoSessionQuote и SymbolInfoSessionTrade ?
Или, что то же самое, чем отличается котировочная сессия от торговой?
Ёшкин кот! И что такое   session_index,       // номер сессии     
У нас что, номерные сессии? По какому принципу они нумеруются, где это написано?

Простым языком

Котировочная сессия - идут котировки (но может быть запрет на торговлю).

Торговая сессия (внутри или совпадает с котировочной) - можно торговать.

Индекс сессии - порядковый номер сессии в период 00:00:00-23:59:59 серверного времени (если есть перерывы, то сессий больше 1).

Смотрите спецификацию для каждого символа в обзоре рынка.

 
Kirill Belousov:

Простым языком

Котировочная сессия - идут котировки (но может быть запрет на торговлю).

Торговая сессия (внутри или совпадает с котировочной) - можно торговать.

Индекс сессии - порядковый номер сессии в период 00:00:00-23:59:59 серверного времени (если есть перерывы, то сессий больше 1).

Смотрите спецификацию для каждого символа в обзоре рынка.

Спасибо за разъяснения. Вы меня выручили.

 
Vladimir Karputov:

Центовые сигналы теперь могут быть только бесплатными. 

А почему нельзя отредактировать имя в профиле?

 
tsd Tsepkov:

А почему нельзя отредактировать имя в профиле?

Только что проверил: имя сигнала отлично редактируется.

 
Vladimir Karputov:

Только что проверил: имя сигнала отлично редактируется.

Я про имя фамилию, написано что надо исправить имя на реальное, а сделать это не получается

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