Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1854

 
Andrey Sokolov #:

A condição aqui é CalculiteProfit() >= 0, neste caso você pode calcular a que preço o lucro necessário será para estas posições e definir um take profit lá.

Eu não)

EVGENII SHELIPOV é o autor das condições.

 

Saudações. Você pode me dar uma dica?

No robô mt5 eu preciso colocar uma curva como uma média móvel no gráfico. Existe um modo mais "civilizado" do que esculpir a partir de objetos, e se sim, o que é isso?

 
Andrey Sokolov #:

Saudações. Você pode me dar uma dica?

No robô mt5 eu preciso colocar uma curva como uma média móvel no gráfico. Existe um modo mais "civilizado" do que esculpir a partir de objetos, e se sim, o que é isso?

Sim - exibi-la
 
Artyom Trishkin #:
Sim - produza-o você mesmo

a palavra-chave aqui é "como". Há lá seus próprios dados, não de um indicador de terceiros.

 
Andrey Sokolov #:

Saudações. Você pode me dar uma dica?

No robô mt5 eu preciso colocar uma curva como uma média móvel no gráfico. Existe uma maneira mais "civilizada" de exibi-la do que desenhá-la a partir de objetos?

Desenho de valores em CCanvas.

 
Andrey Sokolov #:

a palavra-chave aqui é "como". Há lá seus próprios dados, não de um indicador de terceiros.

Faça um indicador e adicione-o como #resource
 

Olá. Você pode me dar uma dica? O terminal comercial tem um conceito como o ALERT. Ou seja, colocamos na escala depreços e estabelecemos condições para alcançar este preço. Mas afinal ele é descartável. O robô comercial não é um evento pontual e o alerta não é um evento pontual.

 
valentin104 O terminal comercial tem um conceito como o ALERT. Ou seja, colocamos na escala depreços e estabelecemos condições para alcançar este preço. Mas afinal ele é descartável. A ordem é semelhante aos alertas, mas eles são reutilizáveis, ou seja, continuam funcionando até serem desativados.

// использовать алерт
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;
}

O código é para MQL5. O código é baseado nas regras do Código do MetaEditor e no algoritmo de operação do MetaEditor.

Arquivos anexados:
Alert.mq5  5 kb
 

Uma palavra de conselho. Estou perplexo com uma pergunta.

Comoa iOpen conta para Ask or Bid?

double DayOpenone = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 0), Digits);

double DayOpentwo = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 1), Digits); 

A questão é que comparar o preço de abertura para hoje com o preço de abertura para ontem parece causar a colocação de spread e depois há outros problemas no código. Ou apenas bai ou vendas são negociadas porque os preços iOpen não são corretos em alguns dias.

Razão: