#2029

Лайк поставил. Не знал что так важно. Не могли бы Вы немного подправить советник. Он  дает сигнал только когда у обеих свечей одинаковый High и  Low. А нужно что  бы или High или Low . Просто пропускает много таких свечей. Спасибо.

Rails.mq410 скач.

Изменено 23 января, 2022 пользователем qwerty12345695552

#2030

Всем спасибо разобрался сам.

 

 

Изменено 31 января, 2022 пользователем Gliuk

#2031

Здравствуйте Господа Програмисты  ! Есть всем известный  советник Forex Setka Trader 1.6.

После доработки есть проблема в его работе 
 
Когда советник торгует и есть открытые ордера ,(стоит он на VPS сервере) 

иногда сервер перезагружают, и происходит сбой .

Он не подхватывает свои открытые ордера а начинает открывать новые.
 
Вот эту проблемку хотелось бы исправить . 

Могли бы Вы помочь .  Моя почта   ( amskorn@gmail.com )  Буду благодарен кто откликнется .

#2032
13 минут назад, amskorn сказал:

После доработки есть проблема в его работе 

Все доработки этого советника идут в разделе Лаборатория, и версия выбранная вами уже устарела на 10 поколений. Лучше одуматься пока не поздно

#2033

прошу помощь: нужно в советника - усреднителя добавить функцию запрета открытия новых серий при достижении определённой цены, можно на графике прям линией отметить

.почта для связи mybp@mail.ru или скайп  investclub777

#2034

Доброго времени суток.

Есть советник, открывает сделки с расчетом риска от SL.

Как добавить в функцию расчета риска увеличение процента на единицу после убыточной сделки?

//+------------------------------------------------------------------+
//| Расчет риска в % от величины SL                                  |
//+------------------------------------------------------------------+
   double CalculateLot(double _stop) {
   double loss = _stop / MarketInfo(_Symbol, MODE_TICKSIZE) * MarketInfo(_Symbol, MODE_TICKVALUE);
   double lots = AccountFreeMargin() * RiskPercent / 100 / loss;
   return (NormalizeDouble(MathMin(MarketInfo(_Symbol, MODE_MAXLOT), MathMax(MarketInfo(_Symbol, MODE_MINLOT), lots)), 2));
}

#2035
В 22.03.2019 в 17:52, loveЦ сказал:

 


Сделал на скорую руку, уж извините если не получилось. Добавил параметр "Step" -шаг для отложенных ордеров.
Проверьте и отпишитесь пожалуйста.

 

e-TFL_v2.mq4 65 \u043a\u0411 · 9 загрузок

Добрый день! Помогите пожалуйста добавить Трал в этот советник и как можно ограничить количество открываемых ордеров? Заранее спасибо!  

#2036

Всем привет есть индикатор nonlagdot, сделал по нему советник.  При получени сигнала после закрытия свечи (синяя /красная точка) открывается покупка/продажа.  Выход по тейкпрофиту, стоплоссу, либо по обратному сигналу.

 

Проблема в том что советник при открытии сделки тут же ее закрывает, может кто подскажет что исправить? Ошибка кроется в участке кода между плюсиками. Ну и насчет правильности входа я не не уверен. Советника и индикатор приложил.

 

//+------------------------------------------------------------------+
//|                                               NonLagDotRobot.mq4 |
//|                                                   Copyright 2022 |
//|                                                 https://mql5.com | 
//+------------------------------------------------------------------+
#property copyright "Copyright 2022"
#property link      "https://mql5.com"
#property version   "1.00"
#property strict

//--------------------------------------------------------------------
extern double  Lot            = 0.01;
extern int     TakeProfit     = 60;
extern int     StopLoss       = 60;
extern int     Magic          = 0;
extern int     Slippage       = 3;
//--------------------------------------------------------------------
extern string  NonLagDot      = "Параметры индикатора NonLagDot";
extern int     Price          = 0;
extern int     Length         = 20;
extern int     Displace       = 0;
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
//--------------------------------------------------------------------
double PriceBuy, PriceSell, SL, TP;
int ticket;



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   if (Digits == 3 || Digits == 5)
   {
       TakeProfit *= 10;
       StopLoss   *= 10;
       Slippage   *= 10;
   }
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
    PriceBuy = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 1, 1);
    PriceSell = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 2, 1);
    
    if (CountSell() == 0 && Bid <= PriceSell)
    {
      ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Red);
      if (ticket >0)
      {
         SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
         
         if (OrderSelect(ticket, SELECT_BY_TICKET))
             if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
                 Print ("Ошибка модификации ордера на продажу!");
      } else Print ("Ошибка открытия ордера на продажу!");
    }
    
    if (CountBuy() == 0 && Ask >= PriceBuy)
    {
      ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Blue);
      if (ticket >0)
      {
         TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
         
         if (OrderSelect(ticket, SELECT_BY_TICKET))
             if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
                 Print ("Ошибка модификации ордера на покупку!");
      } else Print ("Ошибка открытия ордера на покупку!");
    }
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     
    if (Ask >= PriceBuy && CountSell() > 0)
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
                    Print ("Ошибка закрытия ордера на продажу!");  
          }
       }
    }
    
    if (Bid <= PriceSell && CountBuy() > 0)
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
                 if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
                     Print ("Ошибка закрытия ордера на покупку!");  
          }
       }
    }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      

//+------------------------------------------------------------------+
int CountSell()
{
  int count = 0;
  
  for (int trade = OrdersTotal()-1; trade>=0; trade--)
  {
      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
        {
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
              count++;
        }
  }
  return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
  int count = 0;
  
  for (int trade = OrdersTotal()-1; trade>=0; trade--)
  {
      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
        {
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
              count++;
        }
  }
  return(count);
}

 

79nonlagdot.mq47 скач. NonLagDotRobot.mq45 скач.

Изменено 18 апреля, 2022 пользователем artatwjs

#2037
5 часов назад, artatwjs сказал:

Всем привет есть индикатор nonlagdot, сделал по нему советник.  При получени сигнала после закрытия свечи (синяя /красная точка) открывается покупка/продажа.  Выход по тейкпрофиту, стоплоссу, либо по обратному сигналу.

 

Проблема в том что советник при открытии сделки тут же ее закрывает, может кто подскажет что исправить? Ошибка кроется в участке кода между плюсиками. Ну и насчет правильности входа я не не уверен. Советника и индикатор приложил.

 

//+------------------------------------------------------------------+
//|                                               NonLagDotRobot.mq4 |
//|                                                   Copyright 2022 |
//|                                                 https://mql5.com | 
//+------------------------------------------------------------------+
#property copyright "Copyright 2022"
#property link      "https://mql5.com"
#property version   "1.00"
#property strict

//--------------------------------------------------------------------
extern double  Lot            = 0.01;
extern int     TakeProfit     = 60;
extern int     StopLoss       = 60;
extern int     Magic          = 0;
extern int     Slippage       = 3;
//--------------------------------------------------------------------
extern string  NonLagDot      = "Параметры индикатора NonLagDot";
extern int     Price          = 0;
extern int     Length         = 20;
extern int     Displace       = 0;
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
//--------------------------------------------------------------------
double PriceBuy, PriceSell, SL, TP;
int ticket;



//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   if (Digits == 3 || Digits == 5)
   {
       TakeProfit *= 10;
       StopLoss   *= 10;
       Slippage   *= 10;
   }
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
    PriceBuy = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 1, 1);
    PriceSell = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 2, 1);
    
    if (CountSell() == 0 && Bid <= PriceSell)
    {
      ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Red);
      if (ticket >0)
      {
         SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
         TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
         
         if (OrderSelect(ticket, SELECT_BY_TICKET))
             if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
                 Print ("Ошибка модификации ордера на продажу!");
      } else Print ("Ошибка открытия ордера на продажу!");
    }
    
    if (CountBuy() == 0 && Ask >= PriceBuy)
    {
      ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Blue);
      if (ticket >0)
      {
         TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
         SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
         
         if (OrderSelect(ticket, SELECT_BY_TICKET))
             if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
                 Print ("Ошибка модификации ордера на покупку!");
      } else Print ("Ошибка открытия ордера на покупку!");
    }
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     
    if (Ask >= PriceBuy && CountSell() > 0)
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
                    Print ("Ошибка закрытия ордера на продажу!");  
          }
       }
    }
    
    if (Bid <= PriceSell && CountBuy() > 0)
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
                 if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
                     Print ("Ошибка закрытия ордера на покупку!");  
          }
       }
    }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++      

//+------------------------------------------------------------------+
int CountSell()
{
  int count = 0;
  
  for (int trade = OrdersTotal()-1; trade>=0; trade--)
  {
      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
        {
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
              count++;
        }
  }
  return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
  int count = 0;
  
  for (int trade = OrdersTotal()-1; trade>=0; trade--)
  {
      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
        {
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
              count++;
        }
  }
  return(count);
}

 

79nonlagdot.mq4 9 \u043a\u0411 · 0 загрузок NonLagDotRobot.mq4 10 \u043a\u0411 · 0 загрузок

Вы получаете PriceBuy и PriceSell из индикатора, при этом у Вас только одна из этих двух величин не равна нулю.

Проверяйте на ноль, все встанет на свои места.

Примерно так:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     
    if (PriceBuy > Point() && CountSell() > 0) //blue dot time
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
                    Print ("Ошибка закрытия ордера на продажу!");  
          }
       }
    }
    
    if (PriceSell > Point() && CountBuy() > 0) //red dot time
    {
       for(int i = OrdersTotal() -1; i>=0; i--)
       {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
                 if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
                     Print ("Ошибка закрытия ордера на покупку!");  
          }
       }
    }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Условие на открытие тоже нужно поправить: Ask >= PriceBuy будет выполняться, когда на графике время красных точек, потому, что PriceBuy равен нулю

#2038

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

Прогнал в тесте с настройками по умолчанию. Ожидаемо льет на флете, коего по всему форексу тьма.

Можно добавить условие на вход только по смене цвета - версия R2. Динамики не меняет.

 

NonLagDotRobot_R1.mq410 скач. NonLagDotRobot_R2.mq414 скач.

#2039
12 часов назад, Rigal сказал:

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

Прогнал в тесте с настройками по умолчанию. Ожидаемо льет на флете, коего по всему форексу тьма.

Можно добавить условие на вход только по смене цвета - версия R2. Динамики не меняет.

 

NonLagDotRobot_R1.mq4 10 \u043a\u0411 · 2 загрузки NonLagDotRobot_R2.mq4 11 \u043a\u0411 · 2 загрузки

Добавил в советник индикатор RSI и теперь при смене сигнала (цвет точки nonlagdot) открытая сделка не закрывается, а закрывается только по стоп-лоссу. Можете исправить? Советник приложил... 

 

P.S Можно еще добавить коэффициент умножения лота после закрытия убыточной сделки

 

NonLagDot_RSI_Robot_R1.mq415 скач.

Изменено 19 апреля, 2022 пользователем artatwjs

#2040

Доброго времени суток.

Есть советник, в котором хотелось бы добавить в функции расчёта лота с риском от свободных средств:

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

Советник прилагается.

 

 

BOLINGER.mq48 скач.

#2041

Добрый день! Подскажите, как доделать советник, чтобы по тренду тоже строил сетку, но только со своим мультиплицированием, а не держал единственный ордер. Куда и что вставить? Я сам переделаю. Исходник прилагаю.

Ilan1.7byNikolaus.mq43 скач.

#2042

Доброго времени суток.

Помогите пожалуйста в советнике подправить функцию расчёта риска:

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

Советник прилагается.

 

BOLINGER_V01.mq412 скач.

#2043

Ребята, а что сделать так нельзя да?

#2044
5 минут назад, drobayura сказал:

Ребята, а что сделать так нельзя да?

Заплати программисту и бэнч) Так походу никто не хочет заморачиваться

#2045

Добрый день! Хотел написать советника по индикатору (индикатор во вложении), но почему-то не получается через iCustom получить данные от индикатора. При этом и в окне данных на терминале нет данных по индикатору.

Объявил все переменные кроме строковых и цветовых, в  iCustom тоже все переписал, кроме строковых и цветовых. Через Comment хотел вывести значения на экран, но не получается.

Свой написанный код тоже выкладываю. Очень надеюсь на вашу помощь.Secret Forex TIO v1.5 (1).ex49 скач.

Заранее большое спасибо за помощь.

Robot Money.mq410 скач.

#2046
28 минут назад, nurilnar92 сказал:

Добрый день! Хотел написать советника по индикатору (индикатор во вложении), но почему-то не получается через iCustom получить данные от индикатора. При этом и в окне данных на терминале нет данных по индикатору.

Объявил все переменные кроме строковых и цветовых, в  iCustom тоже все переписал, кроме строковых и цветовых. Через Comment хотел вывести значения на экран, но не получается.

Свой написанный код тоже выкладываю. Очень надеюсь на вашу помощь.Secret Forex TIO v1.5 (1).ex4

Заранее большое спасибо за помощь.

Robot Money.mq4 9 \u043a\u0411 · 0 загрузок

Вы забываете передавать параметры "комментария".

Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:

image.png.3a6eebaf8eedeba96a01c3fc355fb3bc.png

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

Исходно он известен, как XARDFX Forex Trading System (https://www.trendfollowingsystem.com/xardfx-forex-trading-system/)

Доступен в исходном коде, который зицпредседатель "поправил", добавив свой "копирайт".

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

Эта версия не идентична вашей на первый взгляд, но наверняка можно поискать еще, поскольку исходник вашей версии зицпредседатель тоже где-то скачал. Значит, и вы можете.

 

К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.

Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.

 

!!!-MT4 X-XARDFX-38.mq412 скач.

#2047
20 минут назад, Rigal сказал:

Вы забываете передавать параметры "комментария".

Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:

image.png.3a6eebaf8eedeba96a01c3fc355fb3bc.png

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

Исходно он известен, как XARDFX Forex Trading System (https://www.trendfollowingsystem.com/xardfx-forex-trading-system/)

Доступен в исходном коде, который зицпредседатель "поправил", добавив свой "копирайт".

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

Эта версия не идентична вашей на первый взгляд, но наверняка можно поискать еще, поскольку исходник вашей версии зицпредседатель тоже где-то скачал. Значит, и вы можете.

 

К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.

Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.

 

!!!-MT4 X-XARDFX-38.mq4 101 \u043a\u0411 · 0 загрузок

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

 

#2048
Только что, nurilnar92 сказал:

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

 

Вкратце: список параметров должен совпадать по порядку, ничего нельзя пропускать. Можно на каком-то моменте остановиться: если список "обрезан", индикатор использует значения по умолчанию для остальных параметров. Последние два параметра iCustom всегда номер буфера и индекс.

Вам имеет смысл проверять, скажем, наличие стрелки на последнем баре (индекс 1), не нужно перебирать до бесконечности.

Если стрелки на последнем баре нет - не имеет значения, какая стрелка была до этого, поезд уже ушел.

#2049
2 минуты назад, Rigal сказал:

Вкратце: список параметров должен совпадать по порядку, ничего нельзя пропускать. Можно на каком-то моменте остановиться: если список "обрезан", индикатор использует значения по умолчанию для остальных параметров. Последние два параметра iCustom всегда номер буфера и индекс.

Вам имеет смысл проверять, скажем, наличие стрелки на последнем баре (индекс 1), не нужно перебирать до бесконечности.

Если стрелки на последнем баре нет - не имеет значения, какая стрелка была до этого, поезд уже ушел.

Правильно ли я понял:

1. Пишем все параметры, в том числе и текстовые и цветовые?

2. Можно остановиться, т.е. половину только написать и потом перейти на номер буфера и индекс?

3. А если много параметров, то не будет проблемы, что они в iCustom не поместяться? В этом случае как быть? Я начал все переписывать туда по порядку и программа ругается "wrong parameters count". Думаю из-за того, что не помещается уже.

4. По поводу бесконечности у меня логика такая. Я не знаю какой буфер отвечает на сигнал Buy и Cell. Поэтому и до момента нахождения нужного буфера буду перебирать. Далее конечно цикл уберу.

Если имеется возможность, то прошу ответить на вопросы. Это здорово оптимизирует мне время.

Если будет интересно, то в конце файл выложу.

#2050
10 минут назад, nurilnar92 сказал:

1. Пишем все параметры, в том числе и текстовые и цветовые?

Да, пропускать ничего нельзя

10 минут назад, nurilnar92 сказал:

2. Можно остановиться, т.е. половину только написать и потом перейти на номер буфера и индекс?

Верно. Если вас устраивает набор по умолчанию для последних 10 параметров, их можно опустить

10 минут назад, nurilnar92 сказал:

3. А если много параметров, то не будет проблемы, что они в iCustom не поместяться? В этом случае как быть? Я начал все переписывать туда по порядку и программа ругается "wrong parameters count". Думаю из-за того, что не помещается уже.

Да, у iCustom есть лимит и из него легко вылезти. С этой проблемой не справиться никак. Но если у вас есть исходник индикатора, вы можете выкинуть незначимые параметры, вроде первых двух текстовых. Просто уберите служебное слово input.

Или просто поставить в начало списка то, что вы собираетесь передавать, а все остальное опустить.

10 минут назад, nurilnar92 сказал:

4. По поводу бесконечности у меня логика такая. Я не знаю какой буфер отвечает на сигнал Buy и Cell. Поэтому и до момента нахождения нужного буфера буду перебирать. Далее конечно цикл уберу.

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

Либо загляните в исходник (найдите тот, который соответствует вашей версии), либо зайдите в свойствах индикатора на вкладку цветов и стилей, там будет много подсказок:

Спойлер

image.png.7ba9e60103482b37c4f4e9e90c7706c2.png

Пощелкайте цветами, гляньте на реакцию на графике - ваши целевые буферы быстро найдутся.

А перебираете вы не буфер, а индекс в буфере, отступ от последней свечи. Буферы у вас смотрят в 6 для Up и 13 для Down

Изменено 22 мая, 2022 пользователем Rigal

#2051
1 час назад, Rigal сказал:

К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.

Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.

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

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

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

А в торговле вам нужно принять решение, закрываться или нет, на текущем баре - вы не можете заглянуть в будущее и подождать цены получше.

TRADERSKITCHEN INDICATOR UNLIMITED.ex411 скач.

#2052
1 час назад, Rigal сказал:

Да, пропускать ничего нельзя

Верно. Если вас устраивает набор по умолчанию для последних 10 параметров, их можно опустить

Да, у iCustom есть лимит и из него легко вылезти. С этой проблемой не справиться никак. Но если у вас есть исходник индикатора, вы можете выкинуть незначимые параметры, вроде первых двух текстовых. Просто уберите служебное слово input.

Или просто поставить в начало списка то, что вы собираетесь передавать, а все остальное опустить.

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

Либо загляните в исходник (найдите тот, который соответствует вашей версии), либо зайдите в свойствах индикатора на вкладку цветов и стилей, там будет много подсказок:

  Показать контент

image.png.7ba9e60103482b37c4f4e9e90c7706c2.png

Пощелкайте цветами, гляньте на реакцию на графике - ваши целевые буферы быстро найдутся.

А перебираете вы не буфер, а индекс в буфере, отступ от последней свечи. Буферы у вас смотрят в 6 для Up и 13 для Down

Вроде все написал, но все равно не хочет подтягивать.

1. Может ли это быть связано, что рынки закрыты? Т.е. когда рынок откроется информация будет поступать.

2. Правильно ли я понял, что если мне не нужно входные параметры в индикаторе менять, то не обязательно в iCustom их писать? Везде input убераю у параметров, а в iCustom будет up=iCustom(Symbol(),PERIOD_CURRENT,"Secret",,6,1);

3. Вы писали, что "Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:", но до STR00 у меня еще есть строка Indicator и в начале его нужно писать?

#2053
14 минут назад, nurilnar92 сказал:

1. Может ли это быть связано, что рынки закрыты? Т.е. когда рынок откроется информация будет поступать.

Если вы накидываете на график - конечно, у вас нет тиков.

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

15 минут назад, nurilnar92 сказал:

2. Правильно ли я понял, что если мне не нужно входные параметры в индикаторе менять, то не обязательно в iCustom их писать? Везде input убераю у параметров, а в iCustom будет up=iCustom(Symbol(),PERIOD_CURRENT,"Secret",,6,1);

Лишняя запятая перед номером буфера, а в остальном да, так можно

16 минут назад, nurilnar92 сказал:

3. Вы писали, что "Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:", но до STR00 у меня еще есть строка Indicator и в начале его нужно писать?

Да, каждой строчке в окне параметров должен соответствовать параметр в вызове, в том же порядке. Я ошибочно принял "Secret" за как раз этот параметр - вы, очевидно, так вызываете индикатор, который у вас, вероятно, переименован?

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025