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

 

Pessoal, eu tenho uma função OnTimer() que deve ser executada no início de cada dia e em determinado resultado da execução a EA deve ir dormir. Se eu definir a hora da próxima execução da função OnTimer() para o início do dia seguinte e depois disso a EA adormecerá até o mesmo momento (-1 segundo, por exemplo), o contador de tempo ainda estará funcionando e a função será executada depois de sair do sono após 1 segundo?


P. S. Outra pergunta um pouco preocupante, como a documentação poderia ser escrita em um estilo tão foleiro? Eu quero dizer espaços em código e encenação de parênteses, eu nunca vi ninguém exceto "estudantes em laboratórios de programação" e caras que escrevem em mql produzem algo como isto

for(int x=0;x<10;x++)

{

}


O site se corrige de alguma forma, sobre parênteses, quero dizer que os parênteses são colocados com tabulação, ou seja, não podemos traçar verticalmente intuitivamente para onde vai um parênteses.

 
ukrop1203:

Pessoal, eu tenho uma função OnTimer() que deve ser executada no início de cada dia e em determinado resultado da execução a EA deve ir dormir. Se eu definir a hora da próxima execução da função OnTimer() para o início do dia seguinte e depois disso a EA adormecerá até o mesmo momento (-1 segundo, por exemplo), o contador de tempo ainda estará funcionando e a função será executada depois de sair do sono após 1 segundo?


P. S. Outra pergunta um pouco preocupante, como a documentação poderia ser escrita em um estilo tão foleiro? Eu quero dizer espaços em código e encenação de parênteses, eu nunca vi ninguém exceto "estudantes em laboratórios de programação" e caras que escrevem em mql produzem algo como isto

for(int x=0;x<10;x++)

{

}


Quanto aos parênteses, quero dizer que os parênteses são colocados com tabulação, ou seja, é impossível seguir intuitivamente para onde um parênteses vai verticalmente.

Você não pode traçar verticalmente para onde o parêntese vai, então você não será capaz de ver para onde vai. Você pode colocá-lo para dormir por 5 minutos e colocar a impressão no OnTimer a cada 10 segundos. Isto responderá à sua pergunta. Por que ir dormir se você pode simplesmente mudar a chave que determina o modo do algoritmo principal em qualquer outra função?

 

Olá a todos!


PERGUNTA sobre o MT5. As marcas de texto (números) são colocadas como uma fina barra cinza. Os pontos são um buffer de controle para visualizar os bloopers MT5 na minha cabeça....


Em comparação com a documentação para OBJ_TEXT, parece ser a mesma....

//| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText(const long  chart_ID=0,
             string      name="Text", 
             string      text="text", // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime    time=0, 
             double      price=0,
             int         fontsizes=0,
             color       clr=0)
  {
  if(ObjectFind(chart_ID,name)!=0)
     {
   ObjectCreate(chart_ID,name,OBJ_TEXT,0,0,0);
   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time);
   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price);
//--- установим угол наклона текста 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,0.0); 
//--- установим способ привязки 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true);
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2:

Olá a todos!


PERGUNTA sobre o MT5. As marcas de texto (números) são colocadas como uma fina barra cinza. Os pontos são um buffer de controle para visualizar os bloopers MT5 na minha cabeça....


Em comparação com a documentação para OBJ_TEXT, parece ser a mesma....


Veja o que você passa no parâmetro de tamanho de fonte

 
Artyom Trishkin:

Veja o que você passa no parâmetro de tamanho de fonte

OBRIGADO!!!Coloquei emtamanhos de fontes de variáveis globais. Coloque-o na função LabText vazia. Funcionou...


 

Quero adicionar e excluir indicadores no gráfico com o roteiro, já que a aplicação do modelo elimina todas as linhas desenhadas.


#property indicator_label1  "MA8"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1


int indicator_handle;

void OnStart()
  {

   indicator_handle = iMA(0,0,8,0,MODE_EMA,PRICE_CLOSE);

   Print(indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

Eu recebo resposta

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) não pode carregar o indicador 'Moving Average' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


O código é compilado sem erros.


 
psyman:

Quero adicionar e excluir indicadores no gráfico com o roteiro, já que a aplicação do modelo elimina todas as linhas desenhadas.


Eu recebo resposta

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) não pode carregar o indicador 'Moving Average' [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Embora o código se compila sem erros.


ERR_MARKET_NOT_SELECTED

4302

Símbolo não selecionado em MarketWatch


Por que você coloca 0 em vez do nome do símbolo? Se você quiser o atual, você tem que escrever NULL, ou seu nome, por exemplo "EURUSD".

iMA

Devolve a alça indicadora de média móvel. Apenas um buffer.

intiMA(
corda símbolo, // nome do símbolo
PeríodoENUM_TIMEFRAMES, // período
int ma_period, // período de cálculo da média
int ma_shift, // indicador de mudança horizontal
ENUM_MA_METHODma_method, // tipo de alisamento
ENUM_APPLIED_PRICE applied_price // price type or handle
);

Parâmetros

símbolo

[em] Nome do símbolo do instrumento cujos dados serão usados para calcular o indicador. NULL significa símbolo atual.

período

[em] O valor do período pode ser um dos valores da enumeração ENUM_TIMEFRAMES, 0 significa o período de tempo atual.

ma_período

[em] Período médio para cálculo da média móvel.

ma_shift

[em] Mudança de indicador em relação à tabela de preços.

ma_método

[em] Método de cálculo da média. Pode ser qualquer um dos valores de ENUM_MA_METHOD.

preço_aplicado

[em] Preço utilizado. Pode ser qualquer uma das constantes de preço de ENUM_APPLIED_PRICE ou um cabo de outro indicador.

Valor retornado

Manuseio deretorno do indicador técnico especificado, em caso de falha retorna INVALID_HANDLE. A função IndicatorRelease() é usada para liberar a memória do computador de um indicador que não está mais em uso.

 
Olá, você poderia me dizer como fazer um conjunto de manejos MA devolver preços normais, quero dizer, da maneira que eles deveriam, 5 casas decimais, não 8
int OnInit()
  {
 ima1_handle        = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);
 ima2_handle        =  iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
 Stoch_handle       = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
 ATR_handle         = iATR        (Symbol(),0,21);                              //хендл

   if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);
  }
void OnDeinit(const int reason)
  {

  }

void OnTick()
  { 
    double ima1_massiv [];                                          //динамический массив для быстрой машки
    ArraySetAsSeries(ima1_massiv, true);   
    int ima_count1 = CopyBuffer(ima1_handle,0,0,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
    string ima1_massiv_str0 = DoubleToString (ima1_massiv[0]);
    string ima1_massiv_str1 = DoubleToString (ima1_massiv[1]);
    printf ("сегодня = "+ ima1_massiv_str0 + " вчера = "+ ima1_massiv_str1);  
    
  }    
mt5 idioma
 
Sergey Lobzankin:
Olá, você poderia me dizer como fazer um conjunto de alças MA devolver preços normais, quero dizer, da maneira que deveriam, 5 dígitos após o ponto decimal e não 8
if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);

legal)

double normalMA=NormalizeDouble(MA,_Digits);    
 

Olá, você poderia me dizer como fazer um conjunto de alças MA devolver preços normais, quero dizer, da maneira que deveriam, 5 dígitos após o ponto decimal e não 8

linguagem mt5

DoubleToStr em mt5, nãoDoubleToString(); mas isso não ajuda
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4
Razão: