Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 908

 


Здравствуйте!

Можно ли в OBJ_EXPANSION задавать длину линий расширения Фибоначчи? От чего она зависит?

С уважением, Александр

 
Всем привет! ребята подскажите можно ли модифицировать открытую позицию МЕНЯЯ ТОЛЬКО КОММЕНТАРИЙ ЭТОЙ ПОЗИЦИИ? При частичном закрытии позиции у меня это получается делать а вот поменять чисто комментарий не получается. К примеру произошла какая-то ситуация на рынке и я хочу записать определенную информацию в коммент открытой позиции
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Tango_X:
Всем привет! ребята подскажите можно ли модифицировать открытую позицию МЕНЯЯ ТОЛЬКО КОММЕНТАРИЙ ЭТОЙ ПОЗИЦИИ? При частичном закрытии позиции у меня это получается делать а вот поменять чисто комментарий не получается. К примеру произошла какая-то ситуация на рынке и я хочу записать определенную информацию в коммент открытой позиции

комментарий ордера нельзя изменить никак - от слова никак нельзя....а сервер брокера изменяет комментарий, у кого при переходе через 0:00 ч, почти везде при частичном закрытии ордера, часто при полном закрытии ордера в истории ордеров будет изменен комментарий ордера

Вы и при частичном закрытии не можете изменить комментарий - комментарий ордера один раз доступен - только при отправке ордера на сервер (открытие ордера)

вот так ;)

 
Igor Makanu:

комментарий ордера нельзя изменить никак - от слова никак нельзя....а сервер брокера изменяет комментарий, у кого при переходе через 0:00 ч, почти везде при частичном закрытии ордера, часто при полном закрытии ордера в истории ордеров будет изменен комментарий ордера

Вы и при частичном закрытии не можете изменить комментарий - комментарий ордера один раз доступен - только при отправке ордера на сервер (открытие ордера)

вот так ;)

Сначало создаеться позиция с комментарием "hello" а потом закрываеться частично уже с комментарием  "hello again"

Ваши комментарии?

//+------------------------------------------------------------------+
//|                                              PositionCloseBy.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property description "PositionCloseBy(Sell_Ticket, Buy_Ticket) когда цена Sell_Ticket ниже цены  Buy_Ticket)"
#property description "позиция Buy = 0.01 лот, позиция Sell = 0.02 лота."
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#property version   "1.00"
//---
CPositionInfo  m_position;                   // trade position object

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class MyClass : public CTrade
  {
public :
   bool              PositionClosePartial(const ulong ticket,const double volume,string const comm, const ulong deviation=ULONG_MAX);
  };

MyClass        m_trade;                      // trading object
bool           BuyIsOpen=false;              // false - позиция Buy ещё не открыта
bool           SellIsOpen=false;             // false - позиция Sell ещё не открыта
bool           CloseBy=false;                // false - CloseBy ещё не выполняли
ulong          BuyTicket=0;                  // тикет позиции Buy
ulong          SellTicket=0;                 // тикет позиции Sell
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   BuyTicket=0;
   SellTicket=0;

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!BuyIsOpen)
     {
         if(m_trade.Buy(0.20,NULL,0,0,0,"hello:)"))
           {
            if(m_trade.ResultRetcode()==TRADE_RETCODE_DONE && m_trade.ResultDeal()!=0)
              {
               BuyTicket=m_trade.ResultDeal();
               BuyIsOpen=true;
              }
           }
     }
//---
   if(BuyIsOpen && !CloseBy)
     {
           if(m_trade.PositionClosePartial(PositionGetTicket(0),0.05,"hello adain:)",1))
           {
            Print("PositionCloseBy -> true. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription(),"===== ",PositionGetString(POSITION_COMMENT));
            CloseBy=true;
           }
         else
           {
            Print("PositionCloseBy -> false. Result Retcode: ",m_trade.ResultRetcode()," "
                  ", description of result: ",m_trade.ResultRetcodeDescription());
           }
     }
  }
//+------------------------------------------------------------------+
//| Partial close specified opened position (for hedging mode only)  |
//+------------------------------------------------------------------+
bool MyClass::PositionClosePartial(const ulong ticket,const double volume, const string comm, const ulong deviation)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- for hedging mode only
   if(!IsHedging())
      return(false);
//--- check position existence
   if(!PositionSelectByTicket(ticket))
      return(false);
   string symbol=PositionGetString(POSITION_SYMBOL);
//--- clean
   ClearStructures();
//--- check filling
   if(!FillingCheck(symbol))
      return(false);
//--- check
   if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      //--- prepare request for close BUY position
      m_request.type =ORDER_TYPE_SELL;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
     }
   else
     {
      //--- prepare request for close SELL position
      m_request.type =ORDER_TYPE_BUY;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }
//--- check volume
   double position_volume=PositionGetDouble(POSITION_VOLUME);
   if(position_volume>volume)
      position_volume=volume;
//--- setting request
   m_request.action   =TRADE_ACTION_DEAL;
   m_request.position =ticket;
   m_request.symbol   =symbol;
   m_request.comment  = comm;
   m_request.volume   =position_volume;
   m_request.magic    =m_magic;
   m_request.deviation=(deviation==ULONG_MAX) ? m_deviation : deviation;
//--- close position
   return(OrderSend(m_request,m_result));
  }
Блог слесаря-ремонтника и механика по наладке оборудования | Советы для ремонтников
Блог слесаря-ремонтника и механика по наладке оборудования | Советы для ремонтников
  • wmua.ru
С первого раза даже не поверил, что в таком небольшом чемоданчике можно разместить столько электроинструмента! В общем, как говорится, лучше один раз увидеть: С Праздником 8 Марта! С Праздником Весны! Милые дамы, женщины, мамы и бабушки. Поздравляю Вас с праздником весны, праздником жизни. Спасибо Вам за то, что Вы у нас есть. Спасибо Вам за...
 
Igor Makanu:

комментарий ордера нельзя изменить никак - от слова никак нельзя....а сервер брокера изменяет комментарий, у кого при переходе через 0:00 ч, почти везде при частичном закрытии ордера, часто при полном закрытии ордера в истории ордеров будет изменен комментарий ордера

Вы и при частичном закрытии не можете изменить комментарий - комментарий ордера один раз доступен - только при отправке ордера на сервер (открытие ордера)

вот так ;)

Или просто открываем позицию ручками на графике с одним комментом а потом ручками закрываем позицию частично уже с другим комментом. А хотелось бы изменять только комменты

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

Сначало создаеться позиция с комментарием "hello" а потом закрываеться частично уже с комментарием  "hello again"

Ваши комментарии?

в этом топике 99% вопросов задают для платформы МТ4, Вы платформу не указали, соответственно я и отвечал исходя из возможностей МТ4 

к сожалению, я не пользуюсь СБ Trade.mqh , ничего не скажу, для себя я под МТ5 пишу только с помощью  MT4Orders.mqh  https://www.mql5.com/ru/code/16006 

 
Tango_X:

Сначало создаеться позиция с комментарием "hello" а потом закрываеться частично уже с комментарием  "hello again"

Ваши комментарии?

Этот пример был давно. Теперь уже в классе CTrade есть свой метод PositionClosePartial

 
Подскажите код для советника,что бы мог открывать не по индикаторам сделки,а по цветам свечи и по таймфрейму.
 

Почему функция https://www.mql5.com/ru/docs/array/arraymaximum может иметь в параметрах объявление 

void&   array[]

 а мне в параметрах своей функции такое объявить не разрешают?

Что мне делать если я хочу написать свою ArrayMaximum(), поскольку в МТ4 и МТ5 у них перепутаны местами параметры (специально что ли) ?

 
secret:

Почему функция https://www.mql5.com/ru/docs/array/arraymaximum может иметь в параметрах объявление 

 а мне в параметрах своей функции такое объявить не разрешают?

Что мне делать если я хочу написать свою ArrayMaximum() ?

Ответ здесь.
Причина обращения: