Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода) - страница 17

 
Andrey Khatimlianskii:

Ждем с нетерпением. Если чем-то помочь нужно, пишите.

Приглашаю всех желающих проверить первый релиз решения.

Библиотеки: TradesID
Библиотеки: TradesID
  • 2021.03.29
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TradesID
 
fxsaber:

Приглашаю всех желающих проверить первый релиз решения.

Жаль, никто не проверил на своих конфигурациях. Будем считать, что проблема задвоения позиций, действительно, решена.

 
fxsaber:

Жаль, никто не проверил на своих конфигурациях. Будем считать, что проблема задвоения позиций, действительно, решена.

Не увидел смысла просто запустить такой же тест. Сейчас уже не тикает, не могу проверить.

 
Andrey Khatimlianskii:

Не увидел смысла просто запустить такой же тест.

Если у кого-то тест на сработает, то и все дальнейшее будет нарываться на проблему.

 

Интересное место:

else if (::HistoryOrderGetInteger(this.Orders[i], ORDER_TICKET) != this.Orders[i])

А когда и почему может случиться это неравенство?

Вообще код малопонятен пока, придется потратить время на его разбор :/

Не сказать, что решение простое и быстрое, и его можно вызывать на каждом тике.

Попробовать бы для эксперимента вместо  ByPass.Is() вызывать любой другой код, исполняющийся такое же время.

А то может решение связано просто со временем его выполнения.

Может, за это время все списки и количества естественным образом нормализуются?

 
Dmitry Fedoseev:

Интересное место:

А когда и почему может случиться это неравенство?

Вообще код малопонятен пока, придется потратить время на его разбор :/

Не сказать, что решение простое и быстрое, и его можно вызывать на каждом тике.

Попробовать бы для эксперимента вместо  ByPass.Is() вызывать любой другой код, исполняющийся такое же время.

А то может решение связано просто со временем его выполнения.

Может, за это время все списки и количества естественным образом нормализуются?

Ещё вариант - проверять на ФОРТС ровно в 10 утра.

 
Dmitry Fedoseev:

Интересное место:

Вы правильно сделали, что продублировали вопросы по самой реализации в ее ветке. Там отвечу.

 

Нужно на MT5 написать скрипт, который на пустом счете открывает 100 позиций.


На MT4 решил таким образом.

void OnStart()
{
  while (OrdersTotal() < 100)
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, 0);
    
  Print(OrdersTotal());
}


У кого какие варианты решения на MT5?

 
fxsaber:

Нужно на MT5 написать скрипт, который на пустом счете открывает 100 позиций.


На MT4 решил таким образом.


У кого какие варианты решения на MT5?

а так можно?

//+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
uint maxLimits=100; // Кол-во Позиции Открыть в одну сторону
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.Buy(0.01))
         printf("Position by %s to be opened",_Symbol);
     }
  }
//+------------------------------------------------------------------+
Снимок
 
SanAlex:

а так можно?

Нет.
Результат не гарантирован.
Причина обращения: