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

 
Konstantin Nikitin:

Ну к примеру я специально вшил в эксперта возможность удаления всех стрелочек и другой шелухи рисующейся при срабатывании ордеров/позиций. Т.к. они там совершенно ни к чему. Можно было-бы убрать с графика линию Bid я бы и ее скинул.
Так что зависит от ситуации...

И в чём проблема?

CHART_SHOW_BID_LINE

Отображение значения Bid горизонтальной линией на графике

bool

CHART_SHOW_ASK_LINE

Отображение значения Ask горизонтальной линией на графике

bool

CHART_SHOW_LAST_LINE

Отображение значения Last горизонтальной линией на графике

bool

 
Alexey Viktorov:

И в чём проблема?

CHART_SHOW_BID_LINE

Отображение значения Bid горизонтальной линией на графике

bool

CHART_SHOW_ASK_LINE

Отображение значения Ask горизонтальной линией на графике

bool

CHART_SHOW_LAST_LINE

Отображение значения Last горизонтальной линией на графике

bool

В MT5 это можно сразу в профиле настроить. И не показывать Bid. В MT4 этого нет.

 
Konstantin Nikitin:

В MT5 это можно сразу в профиле настроить. И не показывать Bid. В MT4 этого нет.

Как это нету?

https://docs.mql4.com/ru/constants/chartconstants/enum_chart_property#enum_chart_property_integer

Примеры работы с графиком - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
Примеры работы с графиком - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые позволяют задавать/получать значение этого свойства. Эти функции можно использовать в своих MQL4 программах как есть. На рисунке показана графическая панель для наглядной демонстрации того, как изменение...
 
Alexey Viktorov:

Как это нету?

https://docs.mql4.com/ru/constants/chartconstants/enum_chart_property#enum_chart_property_integer

Ну если более понятно через свойство графика. То-есть стандартными средствами.

MT4
 MT5


Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
Konstantin Nikitin:

Ну если более понятно через свойство графика. То-есть стандартными средствами

Но ведь изначально вопрос стоял просто убрать линию Bid без каких-то уточнений.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Konstantin Nikitin, 2018.06.25 15:01

Ну к примеру я специально вшил в эксперта возможность удаления всех стрелочек и другой шелухи рисующейся при срабатывании ордеров/позиций. Т.к. они там совершенно ни к чему. Можно было-бы убрать с графика линию Bid как это можно сделать в MT5 я бы и ее скинул.
Так что зависит от ситуации...

Удали скриптом, в чём проблема-то?


 

Новый тип торговой операции Close By

Для счетов с хеджинговым учетом позиций добавлен новый вид торговых операций — закрытие позиции встречной.

Такой вопрос-

Сейчас код выглядит так-

//+------------------------------------------------------------------+
//| Close Positions                                                  |
//+------------------------------------------------------------------+
void ClosePositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current orders
      if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
            m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
  }
//+------------------------------------------------------------------+

Насколько я понимаю это не то,как организовать закрытие позиции встречной?

 
Kisolen:

Привет. Объясните вызов функции в условии if. Просто вызов функции класса , как в таком случае должен выполниться или не выполниться if. Ведь тут нет условия, функция вернет всегда какое то значение. Это вообще правильный код? 

Логическое отрицание НЕ(!)

Документация по MQL5: Основы языка / Операции и выражения / Логические операции
Документация по MQL5: Основы языка / Операции и выражения / Логические операции
  • www.mql5.com
//| Script program start function                                    | "Операция &&: Результат первого выражения false, поэтому второе выражение не вычислялось" //| функция всегда возвращает false                                   | //| функция всегда возвращает true                                    |
 
Alexey Viktorov:

Логическое отрицание НЕ(!)

Спасибо. Я просто не понял, что двоичная переменая возвращается. В таком случае понятно. 

 

Есть такой советник который позволяет определить момент, когда сработал отложенный ордер

https://www.mql5.com/ru/code/17610

С помощью него получаю тикет ордера SELL_STOP

Код соотвецтвено изменил на

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(bln_find_order) // true -> you should look for a order
     {
      static long counter=0;
      Print("Attempt number ",counter);
      ResetLastError();
      if(HistoryOrderSelect(ul_find_order))
        {
         long type_order=HistoryOrderGetInteger(ul_find_order,ORDER_TYPE);
         if(type_order==ORDER_TYPE_SELL_STOP)
           {
            Print("The pending order ",ul_find_order," is found! Type of order is ",
                  EnumToString((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ul_find_order,ORDER_TYPE)));
            bln_find_order=false;         // true -> you should look for a order
            counter=0;
            return;
           }
         else
           {
            Print("The order ",ul_find_order," is not pending");
            bln_find_order=false;         // true -> you should look for a order
            return;
           }
        }
      else
        {
         Print("Order ",ul_find_order," is not find, error#",GetLastError());
        }
      counter++;
     }
  }

Все хорошо до определенного момента. Пока в истории не появится другой тип ордера.

Например SELL_LIMIT.

ПРИМЕР

Как только в истории появляется SELL_LIMIT я уже не могу получить тикет последнего SELL_STOP.

Советник выкидывает ошибку. 

The order 9 is not pending

Хотя в истории то есть SELL_STOP

И при чем тут 9ый если мне тикет 7го нужен

Такое ощущение что советник ищет требуемый ордер не по всей истории а только по последнему
TypePendingOrderTriggered
TypePendingOrderTriggered
  • голосов: 21
  • 2017.02.14
  • Vladimir Karputov
  • www.mql5.com
()   {    (bln_find_order)      {        counter=;       (,counter);       ();         {          (type_order== || type_order== ||             type_order== ||type_order==)            {             (,ul_find_order,,                   (()(ul_find_order,)));             bln_find_order=;                     counter=;             ;            }...
 

Здравствуйте. Получаю ошибку если StopLoss_=0

failed modify #2 sell 3.00 Si-9.18 sl: 0, tp: 62749 -> sl: 0, tp: 62774 [Invalid stops]


 if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  if(m_symbol.NormalizePrice(m_position.PriceOpen()-ExtTakeProfit)!=m_position.TakeProfit())
                    {
                     if(StopLoss_<=0)
                       {
                        m_trade.PositionModify(m_position.Ticket(),
                                               m_position.StopLoss(),
                                               m_symbol.NormalizePrice(m_position.PriceOpen()-ExtTakeProfit)
                                               );
                        Sleep(200);
                       }

                     if(StopLoss_>0)
                       {
                        m_trade.PositionModify(m_position.Ticket(),
                                               m_symbol.NormalizePrice(m_position.PriceOpen()+StopLoss_*m_adjusted_point),
                                               m_symbol.NormalizePrice(m_position.PriceOpen()-ExtTakeProfit)
                                               );
                        Sleep(200);
                       }
                    }
                 }
если вместо m_position.StopLoss() ставлю нуль, та же ошибка. В чём дело?