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

 
Pyro:

tara


Интересно получается, ведь цена установки ордера у меня нормализована до 4-х знаков, тоесть долей пункта там быть не может. Почему так? И да, стало работать как надо! THX

Вообще-то нормализацию нужно выполнять в момент вычисления:

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

и некоторые моменты в вашем коде:

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Ну я на основе Вашего кода написал. Упрощенно пока (разбираюсь). Единственное понятно стало, что все надо нормализовать. Это своего рода открытие (на тестере все работало). Разбираюсь потихоньку.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

В данном случае избыточный код как раз не нужен. Правда по инструменту добавил проверку.

Получилось два варианта, оба работают:

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Спасибо, многое прояснилось!



 
Pyro:

artmedia70


Ну я на основе Вашего кода написал. Упрощенно пока (разбираюсь). Единственное понятно стало, что все надо нормализовать. Это своего рода открытие (на тестере все работало). Разбираюсь потихоньку.

В данном случае избыточный код как раз не нужен. Правда по инструменту добавил проверку.

Получилось два варианта, оба работают:


Спасибо, многое прояснилось!

А разве проверить каким типом является выбранный ордер - избыточно? Если это будет ордер типа Бай или Селл? Без проверки ваша функция скажет вам, что есть ордер, отложенный (вы ж его присутствие проверяете). Вы хотите проверить есть ли отложенный, а вам вернут true при наличии абсолютно любого типа. Даже если руками откроете. Отложенных ордеров четыре типа. Желательно, во избежание недоразумений, передавать в ф-цию при её вызове тип отложенного ордера и в ней проверять на соответствие выбранного типа ордера на переданный в функцию.
(В моём примере на 277 стр. Этой проверки нет. Там просто проверка на любой отложенный - если тип меньше 1 и больше 5, то переход к выбору следующего)

Далее. Ваш советник может работать на одном ТФ, а на другом может одновременно работать другой советник. Оба на одном инструменте. Позиция, открытая другим советником, будет воспринята этим как "да, есть ордер". Значит нужно вводить проверку по MagicNumber, чтобы советник различал свои ордера и позиции.

Посему, проверки на символ торгового инструмента, магик и тип проверяемого ордера не излишни, а необходимы. Это минимум, но не избыточность.

 

приветствую товарищи!

Подскажите, пожалуйста, такую вещь: кто-нибудь сталкивался с проблемой поиска последнего закрытого ордера. И выявления его прибыльности или убыточности?

Какие способы использовали?

заранее благодарю

з.ы. догадываюсь что операция несложная, но что то никак не знаю как подступиться

 
artmedia70:

Посему, проверки на символ торгового инструмента, магик и тип проверяемого ордера не излишни, а необходимы. Это минимум, но не избыточность.

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

 
ramirez17:
з.ы. догадываюсь что операция несложная, но что то никак не знаю как подступиться
Вы удивитесь, насколько популярен этот вопрос.
Запрос в гугл:
последний закрытый ордер site:mql4.com
 
ramirez17:

приветствую товарищи!

Подскажите, пожалуйста, такую вещь: кто-нибудь сталкивался с проблемой поиска последнего закрытого ордера. И выявления его прибыльности или убыточности?

Какие способы использовали?

заранее благодарю

з.ы. догадываюсь что операция несложная, но что то никак не знаю как подступиться

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Вы удивитесь, насколько популярен этот вопрос.
Запрос в гугл:
последний закрытый ордер site:mql4.com

Ok. Про гугл забыл. Ломанулся сразу сюда :)
 
в какую папку положить set файл от советника?
 
drm1:
в какую папку положить set файл от советника?
expert/presets
Причина обращения: