Меньше кода, больше прока.. пишем советник - страница 9

 
Vladimir Simakov:

Это типа, что я не проверю?

Не один раз запустите, а несколько.


 
Vladimir Simakov:

А ничего, что вот он весь танец с бубнами?

Если данные не готовы, то метод вернет 0.0, что элементарно проверяется.

Вы ещё в документации это напишите, как обязательное от пользователя действие при обращении к методу.

С припиской, "вот ради этого и были положены N часов разработки"

 
MQL_Easy
MQL_Easy
  • www.mql5.com
MQL_Easy is an open source cross platform library for developing MQL4 and MQL5 applications. The purpose of this library is to make the mql development easy, safe and fast in order to focus more on implementing complex trading ideas. The cross platform property assure that the same piece of code works on both platforms. In addition, it has...
 

Спасибо, глянул.

у меня идея была немного другая, чем просто сделать "более лёгкую" иерархию классов.

Вот открываем терминал и что видим ?

- таблица с ордерами

- таблица с историей

- таблица с котировками

- чарты. Но и сам по себе чарт - тоже таблица, просто графическое представление

так и дать программисту (и себе в частности) средство (интерфейс) чтобы он мог максимально просто пользоваться этими/подобными таблицами.
Работать почти как в экселе, разве что это mql и compile-time:  открыть таблицы, задать/назвать столбцы, вбить формулы.

основа, класс DataFrame реализующий таблицу с pull дисциплиной (по требованию) калькуляций есть. Тайм/тик фреймы на неё кладутся практически влёт :-)  Начал эксперементировать как лучше такое-же сделать с ордерами/тикетами/историей 

Но сейчас и время сложно выделить и прочие причины

 
Maxim Kuznetsov:

сделать "более лёгкую" иерархию классов.

Несколько различных попыток сделать что-то свое показали, что мало придумать API, нужно еще заставить его стабильно работать.

Приводил самый простой пример проверки.

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

Меньше кода, больше прока.. пишем советник

fxsaber, 2019.03.12 21:46

ЗЫ Это задание вполне можно считать начальным тестом на умение писать торговлю под MT5. Так что каждый желающий может попробовать свои силы.

 
Почти невозможно под MT4 создать обертку, которая сможет тягаться с чистым MQL4

Forum on trading, automated trading systems and testing trading strategies

maintain same number of buy and sell positions in MT5

fxsaber, 2019.04.20 10:43

int GetAmount( const int Type )
{
  int Amount = 0;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    Amount += OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type) && (OrderSymbol() == _Symbol);

  return(Amount);
}

void OnInit()
{
  OnTrade();
}

void OnTrade()
{
  bool Res = true;
  
  while (Res)
  {
    const int AmountBuy =  GetAmount(OP_BUY);
    const int AmountSell = GetAmount(OP_SELL);
    
    if (Res = (AmountBuy != AmountSell))
      Res = ((AmountBuy > AmountSell) ? OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0)
                                      : OrderSend(_Symbol,  OP_BUY, 1, Ask, 100, 0, 0)) > 0;
  }
}
 
fxsaber:
Почти невозможно под MT4 создать обертку, которая сможет тягаться с чистым MQL4

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

всё возможно.

 
Maxim Kuznetsov:

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

всё возможно.

Выкладывайте, посмотрим.

 
fxsaber:

Выкладывайте, посмотрим.

уже проходил - тут за "выкладывайте" полагается бан.

тему можно считать закрытой.

 
Maxim Kuznetsov:

уже проходил - тут за "выкладывайте" полагается бан.

Ссылку в ЛС повторите.


ЗЫ Можно и так

// https://www.mql5.com/ru/forum/305859/page9#comment_11400794
unsigned char binary_array[]=
  {
   0x68,0x74,0x74,0x70,0x73,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x6D,0x71,0x6C,0x35,
   0x2E,0x63,0x6F,0x6D,0x2F,0x72,0x75,0x2F,0x66,0x6F,0x72,0x75,0x6D,0x2F,0x33,0x30,
   0x35,0x38,0x35,0x39,0x2F,0x70,0x61,0x67,0x65,0x39,0x23,0x63,0x6F,0x6D,0x6D,0x65,
   0x6E,0x74,0x5F,0x31,0x31,0x34,0x30,0x30,0x37,0x39,0x34
  };
  
void OnStart()
{
  Print(CharArrayToString(binary_array));
}