[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 246

 
BBSL:

eddy же сказал, что обидеть не хотел не кого

вообщето я сказал что мне пофик:D что буду правильно вести ся даже если эт когото обижает, т.к. это их проблемы. но это им же на благо, это чтоб они, захотев решить проблему, начали искать причины и, в конечном итоге, искоренили, иначе проблема будут всегда
 
Ais:

Одна из причин все делать в одном файле -> https://docs.mql4.com/ru/basis/variables/formal :

"Существует возможность передавать параметры по ссылке. В этом случае модификация таких параметров отразится на соответствующих переменных в вызываемой функции, переданных по ссылке. Нельзя передавать по ссылке элементы массивов. Параметры по ссылке можно передавать только в пределах одного модуля, для библиотечных функций такая возможность не предусмотрена."


Да, возможно в этом и есть трабл...

У меня много функций, в которых, одним из параметров является массив переданный по ссылке...

Т.е. нужно отказываться от многофайловой структуры программы во избежании проблем, решить по другому нельзя?

 
Bicus:

Джентльмены, такой вопрос.

Гоняю советник в тестере. В советнике есть обращения к истории, т.е. ищется какой-либо один из последних, допустим, 20 закрытых ордеров.

В реале - всё просто, можно указать период для истории, за который должны отображаться ордера. Таким образом, последние ордера всегда "сверху". А вот в тестере чем больше сделок - тем больше закрытых ордеров, тем больший их список приходится шерстить, и тем медленнее начинает работать советник.

В общем, кто как решал подобную проблему?

Современный компьютеры совершают сотни миллионов операций в секунду.

Сколько же должно быть сделок, чтобы компьютер начал тормозить?

В вашем "тяжелом" случае можно ввести условие, согласно которому перебор ордеров будет вестись только за последний месяц/полугодие.

 
eddy:
вообщето я сказал что мне пофик:D что буду правильно вести ся даже если эт когото обижает, т.к. это их проблемы. но это им же на благо, это чтоб они, захотев решить проблему, начали искать причины и, в конечном итоге, искоренили, иначе проблема будут всегда


eddy, понятие правильно - это очень субъективно))

Если группа людей считает, что то общепринятым и правильным это и есть норма правил, для этой группы людей. Такая группа есть на этом форуме.

Это очень хорошо, что у Вас свой взгляд на мир, но тратить время на обсуждение этого и тем более переубеждение или перевоспитание людей это - очень большая роскошь))

Споря о правильности идей, мы в пустую тратим ресурсы и наши вопросы не разрешаются.

Предлагаю, при всем уважении к Вам и понимании Ваших идей, все же вернуться к программированию))

 
tmt0086:
Здраствуйте =) я вот только что написал советника.. там никаких условий, просто открытие на GBPUSD и EURUSD. Так вот при тестировании не отркывает ордеры GBPUSD, когда стоит на EURUSD. И наоборот. Может можно как нить настроить это? чтоб открывал ордеры.. На демо все норм, а протестировать не могу.

ответьте кто нибудь..
 
Sergey_Rogozin:

В вашем "тяжелом" случае можно ввести условие, согласно которому, перебор ордеров будет вестись только за последний месяц/полугодие.

Какие условия?

В тестере историю отсортировать невозможно. Последний ордер падает на самое дно. Чтобы до него добраться, надо пролистать ВСЮ историю.

Я не прав? 

 
tmt0086:

ответьте кто нибудь..

В МТ4 нет мультивалютного тестера стратегий.
 
BBSL:


eddy, понятие правильно - это очень субъективно))

есть объективные правила и, следовательно, правильность. так же есть важность правил и иерархия правил. если правило менее важно чем другое или иерархически ниже то им следует пренебречь если этого требует правило важнее/вые. я правила и рпавильность всю жизнь изучал
 
Roman.:

В МТ4 нет мультивалютного тестера стратегий.

а не подскажешь, где можно затестить? в МТ5 поканает?
 
Bicus:

Какие условия?

В тестере историю отсортировать невозможно. Последний ордер падает на самое дно. Чтобы до него добраться, надо пролистать ВСЮ историю.

Я не прав?


нет. Вот Вам пример выбора из истории ордеров свежайшего закрытого для последующей работы с ним...

//---Поиск последнего отработавшего ордера для открытия очередной позиции ---
   
   for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
   {   
      if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
      {
         Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
         continue;
      }
   
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }
      
        
   //-------------------------Принимаем в расчет только ордер, закрытый недавно-----------------------
if(time<OrderCloseTime())     //(сравниваем его с хранящимся в пероеменной time) 
  {
    time=OrderCloseTime();     //если время закрытия ордера больше - ложим его в переменную
         
         
     
         int lastType = OrderType();
         double lastLots = OrderLots();
         double lastProfit = OrderProfit() + OrderSwap();
.....
.....
.....