Características da linguagem mql5, subtilezas e técnicas - página 181

 
Andrey Khatimlianskii:

Normalmente tenho 1-2 gráficos num terminal como este, é difícil ficar confuso. Mas a questão é clara.

Troco mais símbolos, mais EAs estão em curso. Monitorização de símbolos não transaccionáveis ainda. São criados símbolos personalizados, o Testador está a funcionar, etc.

Um cavalo de trabalho, em geral.
 
fxsaber:

Troca de mais símbolos, mais EAs em curso. Monitorização de símbolos não transaccionáveis ainda. Estão a ser criados símbolos personalizados, o Testador está a funcionar, etc.

Um cavalo de trabalho, em geral.

Tenho um cavalo de batalha apenas com palavra-passe de investidor para todas as contas. E não importa se há ou não EAs lá.

 
trader_number_one:

Só tenho um cavalo de trabalho sob a minha palavra-chave de investimento para todas as contas. E não me interessa se há ou não conselheiros nele.

Os conselheiros não são apenas para comércio. Além disso, tem de ser possível negociar num cavalo de trabalho.

 
fxsaber:

Tenho dez Terminais. Em tumulto numa conta, mudei para outra conta. O tempo passa, eu olho para o Terminal e vejo que preciso de outra conta - mudo para a antiga. E completamente sem esperar que a EA esteja pendurada, vejo que a EA já começou.

este simples código irá funcionar com a mudança de conta?

bool IsShowMessageBox = true;
//+------------------------------------------------------------------+
int OnInit()
{
   if(IsShowMessageBox && MessageBox("Произвести запуск эксперта?", "Run EA", MB_OKCANCEL) == IDCANCEL) return(INIT_FAILED);
   IsShowMessageBox = false;
   return(INIT_SUCCEEDED);
}


e será que o re-login vai executar este código quando a ligação for interrompida?

 
Igor Makanu:

um código simples como este irá funcionar com uma mudança de conta?

Não.

será que o re-login, quando a ligação for interrompida, activará este código?

O re-login automático não vai. Manual de instruções.

 

A solução está na superfície. O que é que não muda no gráfico quando se muda? É isso mesmo - os objectos gráficos. Quando o robô começa, cria-se um objecto gráfico, que se elimina no DeInit, na situação normal, respectivamente, na verificação OnInit para o objecto, se este existir, então algo correu mal e devolve-se INIT_FAILED.

Aproximadamente assim:

#define  NAME "test"

int OnInit()
  {
   static const string symbol=_Symbol;
   if (ObjectFind(0,NAME)>=0||symbol!=_Symbol) return INIT_FAILED;
   else ObjectCreate(0,NAME,OBJ_HLINE,0,0,0);
   return INIT_SUCCEEDED;
  }

void OnDeinit(const int reason){
   switch(reason){
      case REASON_PARAMETERS:
      case REASON_PROGRAM:
      case REASON_REMOVE:
      case REASON_INITFAILED:
      case REASON_CLOSE:
      case REASON_CHARTCLOSE:
      case REASON_TEMPLATE:
      case REASON_CHARTCHANGE: ObjectDelete(0,NAME);
      case REASON_RECOMPILE:
      case REASON_ACCOUNT: break;
   }
}

void OnTick(){
}
 
Vladimir Simakov:

A solução está na superfície. O que é que não muda no gráfico quando se muda? É isso mesmo - os objectos gráficos. Quando o robô começa, cria-se um objecto gráfico, que se elimina no DeInit, na situação normal, respectivamente, na verificação OnInit para o objecto, se este existir, então algo correu mal e devolve-se INIT_FAILED.

Aproximadamente assim:

poupar não é um problema, aqui em geral precisamos de distribuir correctamente a inicialização da EA, o caso da mudança de contas é a menor das minhas preocupações, mas como o próprio gráfico é lançado e quando o gráfico não está pronto é um mistério coberto na escuridão ))))

verificado lendo o comentário... não é suave - não é sequer visível no "ecrã preto" quando se alterna entre contas num símbolo inexistente ;)

int OnInit()
{
   string arr_comm[];
   if(StringSplit(ChartGetString(0, CHART_COMMENT), StringGetCharacter(";", 0), arr_comm) == 2) Print("_StopFlag = ", (bool)((int)arr_comm[0]), " ; _UninitReason = ", (int)arr_comm[1]);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment((string)_StopFlag + ";" + (string)_UninitReason);
}
 
Vladimir Simakov:

A solução está na superfície. O que é que não muda no gráfico quando se muda? É isso mesmo - os objectos gráficos. Quando o robô começa, cria-se um objecto gráfico, que se elimina no DeInit, na situação normal, respectivamente, na verificação OnInit para o objecto, se este existir, então algo correu mal e devolve-se INIT_FAILED.

Isto é algo parecido com isto:

Também pode utilizar variáveis globais do terminal. Também não são eliminados.

 
Konstantin Nikitin:

Mais vale utilizar as variáveis globais do terminal. Também não serão apagados.

Gostos e gostos... Eu não gosto deles...

 
Vladimir Simakov:

Para sabor e cor... Eu não gosto deles...

Por exemplo, apago todos os objectos no VDS. Apenas isso desnecessário para não carregar o horário. E não há lá necessidade deles. Utilizo globais. Portanto, tudo depende da situação.