Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2368

 
vova1122 #:
Здравствуйте. Подскажите пожалуйста как сделать так чтобы советник  определял самый убыточный открытый ордер. Я хочу этот ордер закрывать с другими ордерами в сетке в другом направлении с профитом, чтобы суммарно получался "+"

Обойдитесь без всяких циклов, используя общий профит счета и если условие закрытия устраивает то закрывайте всё и неважно кто там был самый убыточный)

double  AccountProfit();

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

//+----------------------------------------------------------------------------+
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1)
  {
   double p=0;
   int    i, k=OrdersTotal();

   if(sy=="0")
      sy=_Symbol;
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(mn<0 || OrderMagicNumber()==mn)
                 {
                  p+=(OrderProfit()+OrderCommission()+OrderSwap());
                 }
              }
           }
        }
     }
   return(p);
  }
//End
AccountProfit - Account Information - MQL4 Reference
AccountProfit - Account Information - MQL4 Reference
  • docs.mql4.com
AccountProfit - Account Information - MQL4 Reference
 
Здравствуйте!
Подскажите пож-та, например образовался фрактал и нужно чтобы этот сигнал (фрактала) был действителен в течение следующих 3-5 баров, как это можно сделать?
 
Igor168 #:
Здравствуйте!
Подскажите пож-та, например образовался фрактал и нужно чтобы этот сигнал (фрактала) был действителен в течение следующих 3-5 баров, как это можно сделать?

Создать свои котировки...

или сформулируйте вопрос иначе.

 
grezky #:

Возник вопрос - В МТ4 имеется функция FileWriteArray(), про которую сказано:


Реально ли  написать эквивалентную пользовательскую функцию, которая бы делала тоже самое, но работала бы с файлами в формате CSV ?

 Да, если  ассемблер ваш родной. А зачем?

 
Igor168 #:
Здравствуйте!
Подскажите пож-та, например образовался фрактал и нужно чтобы этот сигнал (фрактала) был действителен в течение следующих 3-5 баров, как это можно сделать

Образовался фрактал и эксперт должен сделать вход не в данный момент времени, а через 3-5 баров от места образования сигнала, как это реализовать?

 
Igor168 #:

Образовался фрактал и эксперт должен сделать вход не в данный момент времени, а через 3-5 баров от места образования сигнала, как это реализовать?

В коде получения сигнала добавить сдвиг
iFractals(NULL,0,MODE_UPPER,3);
 
Tretyakov Rostyslav #:
В коде получения сигнала добавить сдвиг

Спасибо!

 
Galim_V #:
Да, если  ассемблер ваш родной. А зачем?

Речь о том чтобы по возможности реализовать FileWriteArray() другим способом.
Например прочитать файл CSV как текстовый (ASCII), построчно, а затем используя разделитель ";" из каждой строки занести значения в ячейки двухмерного массива, попутно конвертируя их из string-вых в double.
Мне интересно как это сделать на уровне алгоритма. Будет ли работать то что описал выше? (давно этим не занимался)
CSV, в отличие от бинарного, в моем случае удобен тем что его можно подредактировать вручную.

 
grezky #:

Речь о том чтобы по возможности реализовать FileWriteArray() другим способом.
Например прочитать файл CSV как текстовый (ASCII), построчно, а затем используя разделитель ";" из каждой строки занести значения в ячейки двухмерного массива, попутно конвертируя их из string-вых в double.
Мне интересно как это сделать на уровне алгоритма. Будет ли работать то что описал выше? (давно этим не занимался)
CSV, в отличие от бинарного, в моем случае удобен тем что его можно подредактировать вручную.

Смотрите тут: https://www.mql5.com/ru/forum/459376

 
JRandomTrader #:

Смотрите тут: https://www.mql5.com/ru/forum/459376

В этом линке более сложный случай.
У меня задача должна быть попроще, т.к. в CSV файле будут только цифры и разделители ";" (возможно в конце каждой строки потребуется кажется '\t' ?). 

Причина обращения: