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

 
psyman:

Neverness, por que você está escrevendo isso aqui?

Comece uma linha separada na calha e distribua elefantes lá, tirem os chapéus para você.

Bem, eu disse isso ao Moderador imediatamente.

Vamos, Sr. Moderador, discutir a teoria do comércio em um fio à parte.

O moderador está contra isso até agora.

Talvez o Moderador não tenha sua própria "teoria comercial".

 
inter78:

Olá! eu também pergunto sobre a troca entre os gráficos. Há 28 ou 30 gráficos abertos. Eu os troco pensativamente com atalhos e se eles se encaixam na condição , abro posições. Eu tenho 10 ou 20. Ou 5. Isso não importa. O importante é que o resto se interpõe no caminho e não há informações sobre posições abertas. Tentei enviar IDs para variáveis globais. Mas retorna números completamente diferentes. Foi-me explicado que a identificação é grande e distorcida. Eu experimentei através de um arquivo. Ele retorna em TXT e não é convertido em longo prazo. Eu coloco a identificação manualmente no código - parece funcionar. Quando desligo o campo, ele abre a tabela necessária. O que devo fazer corretamente?

O duplo e longo têm o mesmo comprimento - 8 bytes.

Para economizar de um longo a um duplo (e vice-versa), você pode usar "união".


Por exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long   Y=DoubleToLong(X);
   
   Print("id=",id," X=",X," Y=",Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }
 
neverness:

Bem, eu falei imediatamente ao Moderador sobre isso.

Vamos, Sr. Moderador, discutir a teoria do comércio em um fio à parte.

O Moderador está contra isso até agora.

Talvez o moderador não tenha sua própria "teoria comercial".

Você tem que ir ao ramo dos palhaços teóricos onde eles gostam de desenhar algo que você não entende e não sabe por quê.

Há muitos tópicos semelhantes no fórum - pelo menos discuta-os!

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik:

O dobro e longo têm o mesmo comprimento - 8 bytes.

Para economizar de um longo a um duplo (e vice versa) você pode usar "união".


Por exemplo:

Desculpe-me, Taras , você poderia ter um código sobre como enviar a identificação para uma variável global e recuperá-la sem distorção?
 
inter78:
Desculpe Taras , você não pode ter um pouco de código sobre como enviar o ID para uma variável global e extraí-la sem distorção?

para que tudo esteja pronto, só é preciso acrescentar escrita/leitura

string GVname="gvName";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //создаем временную глобальную переменную
   if (!GlobalVariableCheck(GVname))
      GlobalVariableTemp(GVname);
   
   long  id=ChartID();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long  Y=DoubleToLong(GV_Read());
   
   Print("id=",id," Y=",Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (!GlobalVariableCheck(GVname))
   GlobalVariableTemp(GVname);
   
return(GlobalVariableGet(GVname));
}
//+------------------------------------------------------------------+
void GV_Save(double value)
{
GlobalVariableSet(GVname, value);
}
 
Taras Slobodyanik:

por isso está tudo preparado, só é preciso acrescentar escrita/leitura

Muito obrigado! Será que alguém já tentou fazer um indicador desse tipo antes? Não tenho sido capaz de encontrar um há tanto tempo quanto eu. Acho que isso seria de interesse para muitas pessoas.
 
Vitaly Muzichenko:

Fazer Inicialização OnInit()

Não, ele não sinaliza na barra de corrente. Talvez a variável _tempo possa ser reinicializada após o indicador ter contado tudo pela primeira vez após a adesão ao gráfico.

Como posso saber que o indicador contou tudo uma vez?
 
Ghabo:

Lanço o indicador no gráfico e... ALERTA, mas o sinal está a 5 barras de distância. Durante os trabalhos posteriores, ele apita como deve ser.

Como fazer para que pare de apitar no início?

if(М_А>0.0)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Na função AL(), todos os alertas possíveis.

O que é M_A ? O que ele contém e de onde tira os dados?

Você precisa verificar a validade do sinal na barra de corrente junto com a verificação de tempo. E você apenas verifica o valor M_A. De onde você tirou isso?

 
Artyom Trishkin:

O que é M_A ? O que ele contém e de onde obtém seus dados?

Você precisa verificar a validade do sinal na barra de corrente junto com a hora. E você simplesmente verifica o valor M_A. De onde você tirou isso?

Chamando um indicador.

М_А =NormalizeDouble(iCustom(NULL,0,"Morning_All_Best",0,i),Digits);

Como posso verificar a validade?

 
Ghabo:

Chamando o indicador.

Como faço para verificar a validade?

1. Por que você faz a normalização? É uma operação muito cara para trabalhar em ciclo indicador e não é necessária aqui.

2. O que significa "mais que zero"? Que sinais este indicador personalizado dá? O que é exibido nos valores de buffer deste indicador na janela de dados (Ctrl+D) ?