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

 
Tretyakov Rostyslav #:
Думаю такого для МТ4 нет

спасибо. У Сергея Митюкова есть такой (если кому то его имя знакомо здесь) но он его сам писал и продаёт, а я думал, что он довольно распространён и его можно здесь найти бесплатно.

 
законопослушный гражданин #:

спасибо. У Сергея Митюкова есть такой (если кому то его имя знакомо здесь) но он его сам писал и продаёт, а я думал, что он довольно распространён и его можно здесь найти бесплатно.

Ссылку дай, хочу посмотреть
 
Tretyakov Rostyslav #:
Ссылку дай, хочу посмотреть

Смотрите

 
Alekseu Fedotov #:

Смотрите

Я просил ссылку на работу Сергея Митюкова,
 
Tretyakov Rostyslav #:
Я просил ссылку на работу Сергея Митюкова,

Нет, за такой индикатор не знаю, знаю что он больше по "контрольным зонам".

 
Tretyakov Rostyslav #:
Спасибо.

скажите пожалуйста, как из этой функции получить данные предпоследнего ордера?


//+----------------------------------------------------------------------------+
//|  Функция возвращает по символу и магику                                    |
//|  1 - размер лота последней закрытой позиции                                |
//|  2 - размер профита с учетом комиссии и свопа последней закрытой позиции   |
//|  3 - время последней закрытой позиции                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }

хочу сделать чтобы мартин работал когда предпоследняя сделка - прибыль, а последняя -убыток:

например: сделка №1 - лот 0,1 , прибыль 

                 сделка №2 - лот 0,1 , убыток 

                 сделка №3 -лот 0,11.....

 
Эта функция лот возвращает, а не прибыль или убыток вам нужно ещё функцию, которая возвращает убыточность или прибыль последнего, а потом логическими операция сравнивать и принимать решение.
 
//+----------------------------------------------------------------------------+
//|  Описание : Считаем количество убыточных сделок подряд                     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int CountLoss(string sy="", int mn=-1)
  {
   int count=0;
   int trade;
   for(trade=OrdersHistoryTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_HISTORY))
        {
         if((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn))
           {
            if(OrderProfit()<0)
               count++;
            else
               break;
           }
        }
     }
   return(count);
  }
//--- End ---
 
законопослушный гражданин #:

скажите пожалуйста, как из этой функции получить данные предпоследнего ордера?


хочу сделать чтобы мартин работал когда предпоследняя сделка - прибыль, а последняя -убыток:

например: сделка №1 - лот 0,1 , прибыль 

                 сделка №2 - лот 0,1 , убыток 

                 сделка №3 -лот 0,11.....

if(GetInfoLastPos(2)<0)          // Если последний ордер убыточный
   Lots=GetInfoLastPos(1)+0.01;  // Лот последнего ордера увеличиваем
else                             // Если последний ордер прибыльный
   Lots=0.01;                    // Лот ставим начальный
 
Volodymyr Zubov #:

спасибо