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

 
psyman:

Para o próximo código, uma história em fotos:


Desconectou a rede, adicionando um indicador

Passo para o próximo gráfico


y2 mudou de valor, eu volto atrás


y2 devolveu seu valor, mas o marcador é contado pelo valor "ido"! Eu giro a roda do mouse.

O marcador está de volta em seu lugar!

Ao mudar para o gráfico adjacente, todas as janelas inativas não são expandidas para tela cheia. Ou seja, eles são menores do que no estado ativo. Portanto, os objetos recebem coordenadas menores a partir do canto superior esquerdo do gráfico. Então, ao ativar a janela, você precisa esperar que o gráfico seja atualizado ou atualizá-lo à força. Isto é feito através da rolagem da roda de rolagem.

 
psyman:

Para o próximo código, uma história em fotos:


Desconectou a rede, adicionando um indicador

Passado para o próximo gráfico


y2 mudou de valor, eu volto atrás


y2 devolveu seu valor, mas o marcador é contado pelo valor "ido"! Eu giro a roda do mouse.

O marcador está de volta em seu lugar!

você pode descartarChartTimePriceToXY
e
imprimir texto simples(OBJ_TEXT) + 1-3 barras para o futuro, sempre será onde você precisar)

 
Taras Slobodyanik:

você pode descartarChartTimePriceToXY
e
imprimir texto simples(OBJ_TEXT) + 1-3 barras no futuro, estará sempre onde você quiser)

Somente se você desativar o deslocamento de barra para a direita, o texto estará fora da janela.

A idéia é correta, mas aparentemente a experiência é muito deficiente.

 
Alexey Viktorov:

Somente se você desativar o deslocamento de barra para a direita, o texto estará fora da janela.

É uma boa idéia, mas você provavelmente é muito inexperiente.

Bem, se você quiser que o marcador esteja do lado direito para cima, você pode simplesmente pegar a barra mais à direita na tabela e desenhá-la.

 

Boa tarde .
Você poderia aconselhar como criar variáveis de tipo global na EA, que esses dados não sejam apagados ao chamar novas funções?

Chame os dados variáveis através de :

bool  GlobalVariableGet( string  "name", double "var"  ); // К примеру

Onde então "var" pode ser inserido nas operações.

E eles são criados com a função :

datetime  GlobalVariableSet( 
   string  name,      // имя 
   double  value      // устанавлимое значение 
   );

Estou apenas tentando entender tudo. Não há exemplos e não tenho certeza de como os dados funcionarão se um édata e o outro ébool? Nenhum erro?

 
psyman:

Para o próximo código, uma história em fotos:

Desconectou a rede, adicionando um indicador

Passo para o próximo gráfico

y2 mudou de valor, eu volto atrás

y2 devolveu seu valor, mas o marcador é contado pelo valor "ido"! Eu giro a roda do mouse.

O marcador está de volta em seu lugar!

//+------------------------------------------------------------------+
//|                                              !_clr_indicator.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0

string objname="Bid";
input color Bid_color = clrCrimson;

//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason) 
   { 
   ObjectDelete(0,objname);
   } 
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{
   SetTXT();
   return(rates_total);
}

//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
{ 
   if(id==CHARTEVENT_CHART_CHANGE) 
      SetTXT();
}

//+------------------------------------------------------------------+
void SetTXT() 
{
int      first_bar=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
int      width_bar=(int)ChartGetInteger(0,CHART_WIDTH_IN_BARS,0);
double   label_price=iClose(_Symbol,_Period,0);
datetime label_time=0;

   if(width_bar>first_bar)
      label_time=iTime(_Symbol,_Period,1)+(width_bar-first_bar)*PeriodSeconds();
   else
      label_time=iTime(_Symbol,_Period,first_bar-width_bar+1);

   if(ObjectFind(0,objname)<0)
      {
      ObjectCreate(0, objname, OBJ_TEXT,0,0,0);
      ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 12);
      ObjectSetInteger(0, objname, OBJPROP_COLOR, Bid_color);
      ObjectSetString(0, objname, OBJPROP_FONT, "Verdana");
      ObjectSetInteger(0,objname,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
      ObjectSetInteger(0,objname,OBJPROP_BACK,false);
      ObjectSetInteger(0,objname,OBJPROP_SELECTABLE,false);
      }
   
   ObjectSetString(0,objname,OBJPROP_TEXT,DoubleToString(label_price, _Digits-1)); 
   ObjectMove(0,objname,0,label_time,label_price);
   
   ChartRedraw();
}
 
Taras Slobodyanik:


Muito obrigado, amanhã vou pensar em uma maneira de substituir o iTime e o iClose, já que estou sentado na XP.

 
Bom dia a todos vocês!
Pergunta para programadores .
Por favor, avise!
Alguns corretores não me permitem abrir um pedido com um preço de take profit e stop loss price.

Apenas uma função OrderSend().

Ao invés disso, a OrderSend() abrirá uma ordem, mas o preço de parada e lucro estará ausente nesta ordem.

Esta ordem deve ser modificada em linhas de código subseqüentes usando OrderModify() e adicionar parada e lucro ao pedido.


Assim, a questão é: quem e como maneja ou assegura um caso na função de compra ou venda
quando, por exemplo, OrderSend() funcionou, mas OrderModify() não funcionou por alguma razão e o
há uma ordem aberta sem parada ou lucro?

Como eu faria um seguro contra tal evento e/ou como eu lidaria com ele?
Por favor, informe.
Se você não sabe como usar Astrakhan, por favor, não use o código de Astrakhan.

tempo, mas não consigo encontrar nenhuma informação sobre isso.

Acredito que a função Breakeven tem um certo seguro, mas somente se o preço tiver passado no vermelho.

Se o preço se voltou para a perda, mas não há parada para a perda?

Estou muito grato por sua resposta!
 

Olá a todos!

Você pode me dizer por que eu não posso entrar em suas propriedades quando a EA está funcionando? Eu costumava fazê-lo, mas agora não consigo abrir as propriedades. Uma vez ajudou a reiniciar o terminal, mas o problema apareceu novamente após um minuto. O Expert Advisor é novo, o terminal também está funcionando recentemente. Qual é o problema com as propriedades da EA ?

Obrigado!

 
demonRDV:

Olá a todos!

Você pode me dizer por que eu não posso entrar em suas propriedades quando a EA está em funcionamento? Eu costumava fazê-lo, mas agora não consigo abrir as propriedades. Uma vez reiniciado o terminal ajudou, mas o problema apareceu novamente após um minuto. O Expert Advisor é novo, o terminal também está funcionando recentemente. Qual é o problema com as propriedades da EA ?

Obrigado!

Pressione a tecla de atalho F7 :-)

clicar no ícone da EA nem sempre é possível - o ícone pode estar coberto por outros objetos, a EA pode sobrecarregar a fila de mensagens e 100500 outros motivos

Razão: