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

[Удален]  
Код:
#property version   "1.00"
#define SLTP (10 * _Point)

#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static bool FirstRun=true;

   if(FirstRun)
     {
      const double Price=SymbolInfoDouble(_Symbol,SYMBOL_BID)+100*_Point;

      MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
                       //MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)

      FirstRun=false;
     }
  }
//+------------------------------------------------------------------+

// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order(const double Price)
  {
   CTrade Trade;

   if((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(_Symbol,SYMBOL_TRADE_EXEMODE)==SYMBOL_TRADE_EXECUTION_EXCHANGE)
      Trade.SetTypeFilling(ORDER_FILLING_RETURN);

   Trade.OrderOpen(_Symbol,ORDER_TYPE_SELL_LIMIT,1,0,Price,0,0,ORDER_TIME_GTC,0,__FUNCTION__);

   const ulong Ticket=Trade.ResultOrder();

   if(Ticket>0)
     {
      COrderInfo Order;

      if(Order.Select(Ticket))
         Trade.OrderModify(Order.Ticket(),Order.PriceOpen(),Order.PriceOpen()+SLTP,Order.PriceOpen()-SLTP,Order.TypeTime(),Order.TimeExpiration());
     }
  }
//+------------------------------------------------------------------+
 
Alexey Kozitsyn:

Ваш код запустил у себя (без МТ4):

2016.10.20 19:05:30.941 RTS-12.16,M1 (Open-Broker): generating based on real ticks
Возможно, дело в этом
2016.10.20 16:49:14.944 RTS-12.16,M1 (BCS-MetaTrader5): generating based on real ticks
[Удален]  
fxsaber:
Возможно, дело в этом
2016.10.20 16:49:14.944 RTS-12.16,M1 (BCS-MetaTrader5): generating based on real ticks
Ничего не трогал, так что, видимо, нужно искать на стороне брокера.
 
fxsaber:
Не заметили
На сколько понимнится - этой фиче уже год как будет.
Так как оно ни кому не мешает, кроме избранных, конечно, то скорее всего занимаются более приорететными задачами.
 
Sergey Dzyublik:
На сколько понимнится - этой фиче уже год как будет.
Это только в Публикциях профиля фича?
 
Задета тема изящности MQL
class A
{
public:
  virtual string classname() const
  {
    return(typename(this));
  }
};

class B : public A
{
public:  
  virtual string classname() const
  {
    return(typename(this));
  }
};

void OnStart()
{
  B b;
  
  Print(b.classname());
}

В каждом наследуемом классе приходится прописывать одно и то же

virtual string classname() const
{
  return(typename(this));
}

Будет возможность не тянуть такие хвосты в MQL?

 
typename генерирует строку во время компиляции, именно поэтому и необходимо "тянуть хвосты".


Вы хотите получить реальный тип объекта по указателю?

Что-то типа функции:

string GetPointerTypename(void *ptr);
 
Ilyas:
typename генерирует строку во время компиляции, именно поэтому и необходимо "тянуть хвосты".


Вы хотите получить реальный тип объекта по указателю?

Что-то типа функции:

string GetPointerTypename(void *ptr);

Да. Вот

Stanislav Korotky:
Я бы хотел сделать поизящнее. Но как? В MQL typename(this) в виртуальном базовом методе возвращает базовый класс. Вот в C++ typeid(*this).name() в базовом виртуальном методе возвращает актуальный класс объекта.

 
fxsaber:
Это только в Публикциях профиля фича?
Починили днем. А сейчас снова фича возникла.