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

 
Tretyakov Rostyslav #:

При наступлении условия для закрытия

//-------------------------------------------------------------------+  Команда на закрытие сетки ордеров
   if((CountTrade(0) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==0)||(CountTrade(1) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==1))
     {
      flag_close=1;
     }

Здесь  условием являются  CalculiteProfit() >= 0  , в таком случае, можно высчитать при какой цене будет необходимая прибыль  для этих  позиций и выставить там take profit или stop loss, в зависимости от цен и позиций.  И ввиду того что Buy и Sell закрываются по разным ценам это уместно только если позиции одного типа.

 
Andrey Sokolov #:

Здесь  условием являются  CalculiteProfit() >= 0  , в таком случае, можно высчитать при какой цене будет необходимая прибыль  для этих  позиций и выставить там take profit.

Это не ко мне)

EVGENII SHELIPOV автор условий.

 

Приветствую. Подскажите, пожалста.

В роботе для мт5 нужно вывести на график кривую, типа скользящей средней. Есть ли более "цивилизованный" способ, чем лепить из объектов, и если есть то какой?

 
Andrey Sokolov #:

Приветствую. Подскажите, пожалста.

В роботе для мт5 нужно вывести на график кривую, типа скользящей средней. Есть ли более "цивилизованный" способ, чем лепить из объектов, и если есть то какой?

Да - вывести её саму 
 
Artyom Trishkin #:
Да - вывести её саму 

тут ключевое слово "типа". Там свои данные, а не из стороннего индикатора.

 
Andrey Sokolov #:

Приветствую. Подскажите, пожалста.

В роботе для мт5 нужно вывести на график кривую, типа скользящей средней. Есть ли более "цивилизованный" способ, чем лепить из объектов, и если есть то какой?

Рисовать значения на CCanvas.

 
Andrey Sokolov #:

тут ключевое слово "типа". Там свои данные, а не из стороннего индикатора.

Сделай индикатор и добавь как #resource
 
 

Здравствуйте. Подскажите, пожалуйста. В торговом терминале есть такое понятие как АЛЕРТ. То ест мы выставляем его на шкале цены и задаем имеющиеся в нем условия выполнения при достижения этой цены. Но он как оказалось одноразовый. Кто может знает что не буть наподобие того же алерта но многоразового исполнения. тоесть он выполняет условия пака его не отключишь.

 
valentin104 #:

Здравствуйте. Подскажите, пожалуйста. В торговом терминале есть такое понятие как АЛЕРТ. То ест мы выставляем его на шкале цены и задаем имеющиеся в нем условия выполнения при достижения этой цены. Но он как оказалось одноразовый. Кто может знает что не буть наподобие того же алерта но многоразового исполнения. тоесть он выполняет условия пака его не отключишь.

// использовать алерт
input bool alert = true;
// уровень срабатывания
input double trigLv = 0.0;
// отклонение от trigLv в пунктах
input int deviation = 30; 


// функция взята из https://www.mql5.com/ru/docs/basis/types/double
bool EqualDoubles(double d1,double d2,double epsilon)
  {
   if(epsilon<0) 
      epsilon=-epsilon;
//---
   if(d1-d2>epsilon) 
      return false;
   if(d1-d2<-epsilon) 
      return false;
//---
   return true;
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
  return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[]
) {
  static bool triggered = false;
  static datetime time_ = 0;
  if (!alert)
    return rates_total;
  if (EqualDoubles(trigLv, close[0], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { // сравнение цены Close с trigLv
    if (time_ != time[rates_total - 1])
      time_ = time[rates_total - 1];
    else
      return rates_total;
    if (!triggered)
      Alert("Level ", NormalizeDouble(trigLv, (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " triggered!");
    triggered = true;
  }
  else
    triggered = false;
  
  return rates_total;
}

Код для MQL5. Можно добавить на график сколько угодно таких индикаторов и получать алерты.

Файлы:
Alert.mq5  5 kb