Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1429

 
Здравствуйте дорогие братья и сёстры !

Мне очень нужно ваши помошь !
Я буду очень благодарен за ваши помошь!

Мне очень нужна формула индикатор ZigZag для EXEL!
Долго попробовал разные расчеты и способы, но не мог понять формулу расчета или механизм работы обычный индикатор зигзаг (Indicator Zigzag)!

Я не програмисть по-этому не мог понять как расчитается формула indicator ZigZag в MetaEditor !

Я прочитал все сайты и форумы о зигзаге, не мог найти!

Пожалуйста, объясните как это ЗигЗаг расчитаетсья ?
Файлы:
 
Elon Musk #:
Здравствуйте дорогие братья и сёстры !

Мне очень нужно ваши помошь !
Я буду очень благодарен за ваши помошь!

Мне очень нужна формула индикатор ZigZag для EXEL!
Долго попробовал разные расчеты и способы, но не мог понять формулу расчета или механизм работы обычный индикатор зигзаг (Indicator Zigzag)!

Я не програмисть по-этому не мог понять как расчитается формула indicator ZigZag в MetaEditor !

Я прочитал все сайты и форумы о зигзаге, не мог найти!

Пожалуйста, объясните как это ЗигЗаг расчитаетсья ?

Постройте ZZ по каналу Дончиана. Коснулись верхней границей - рисуем отрезок вверх, а нижний - вниз. Там совпадение со стандартным индикатором очень высокое и более точное за счет отсутствия перерисовки будет.

 

Добрый день!

Как выполнить принудительную перерисовку графиков (аналог функции - правой кнопкой на графике - "Обновить").

Указанный ниже код не работает, обновление не происходит.


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

Хочу скачать на MQL5 бесплатные советники. Захожу в эксперты, потом в бесплатные. Вопрос: я могу использовать на реальном счете все советники находящиеся в разделе "бесплатные" или есть ограничения.  Если на советнике написано 

"уже куплен" его можно ставить на реальный счет или нет?

 
mikhail2929 Кравченко #:

Хочу скачать на MQL5 бесплатные советники. Захожу в эксперты, потом в бесплатные. Вопрос: я могу использовать на реальном счете все советники находящиеся в разделе "бесплатные" или есть ограничения.  Если на советнике написано 

"уже куплен" его можно ставить на реальный счет или нет?

Добрый день! Если бесплатный советник скачан и есть информация, что он уже куплен, то можете его использовать. Вопрос в другом - насколько он надёжен? Для этого, перед использованием на реальном счёте, лучше всего провести тестирование советника!

С уважением, Владимир.

 
MrBrooklin #:

Добрый день! Если бесплатный советник скачан и есть информация, что он уже куплен, то можете его использовать. Вопрос в другом - насколько он надёжен? Для этого, перед использованием на реальном счёте, лучше всего провести тестирование советника!

С уважением, Владимир.

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

 
Добрый день, ищу помощи, при написании советника MT5, для модификации TP и SL использую класс CTrade. Проблема такая у позиции изначально выставляется TP и SL после TP изменяется но SL должен остаться на месте, при реализации получилось вот что :
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_Buy и TP_Sell считаются корректно. В тестере выдает ошибку 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Как я понимаю это ошибка выставления SL , скорее  всего ошибка из за того что SL находится в одном и том же месте. Но мне это и нужно. В справочнике по CTrade написано что "если изменение не нужно, предыдущее значение". Как побороть ошибку подскажите.  

 
mikhail2929 Кравченко #:

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

Вроде бы, уже раньше ответил на Ваш вопрос. Да, Вы правильно поняли.

С уважением, Владимир.

 
rexMetaL #:
Добрый день, ищу помощи, при написании советника MT5, для модификации TP и SL использую класс CTrade. Проблема такая у позиции изначально выставляется TP и SL после TP изменяется но SL должен остаться на месте, при реализации получилось вот что :

TP_Buy и TP_Sell считаются корректно. В тестере выдает ошибку 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Как я понимаю это ошибка выставления SL , скорее  всего ошибка из за того что SL находится в одном и том же месте. Но мне это и нужно. В справочнике по CTrade написано что "если изменение не нужно, предыдущее значение". Как побороть ошибку подскажите.  

Здравствуйте!

Для начала уберите знак равенства в цикле, чтобы было так:

for(int i = 0; i < PositionsTotal(); i++)

Дальше Ваш код не смотрел.

С уважением, Владимир.

 
MrBrooklin #:

Здравствуйте!

Для начала уберите знак равенства в цикле:

Дальше Ваш код не смотрел.

С уважением, Владимир.

Ничего не изменилось проблема конкретно в SL/TP 
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }