Emulação de carrapatos de um EA/indicador - página 5

 
Zhunko: Igor, esta forma de desconectar-se da Internet não é boa. Muitas coisas não funcionam neste modo. Você não precisa desativar o acesso à Internet.

não, sua engrenagem - na primeira página, funciona bem em winHp, você está errado, mas em win7 por alguma razão não quis trabalhar para mim

Meat:Há uma suposição de que o código não funciona onde há uma vitória de 64bit. Só tenho 32 por isso não posso verificar.

não, eu ganhei7 máximo 32bit

 
IgorM:

Não, sua engrenagem - na primeira página, funciona bem em win XP, você está errado, mas em win7 por alguma razão ele não quis trabalhar para mim

Igor, não estou falando do código do Alexey, estou falando de desconectar da Internet.
 
Zhunko:

Como você negocia a partir de um indicador de ticking? A MQL4 não fornece isso.

Realmente! Por que preciso da adição do indicador de ticking que não pode ser comercializado, se posso fazer tudo em um Expert Advisor looped? Isto não exigirá nenhuma dificuldade com WinAPI, a interface MT4 não ficará mais lenta, e o EA operará três vezes mais rápido. Por que complicar coisas como essa?

Bem, vamos deixar esta discussão, ela não levará a nada de construtivo de qualquer maneira, muito provavelmente pelo contrário. Você já começou a distorcer (não sei, intencionalmente ou não) o significado do que escrevi, escrevi em russo que negoceio não a partir de um indicador, mas de um metatrader, enquanto você está falando novamente de algum tipo de negociação a partir de um indicador. Se você interpretou algo errado a partir do que eu disse, então eu explico: a frase "indicador é usado em negociação" não significa que os negócios são executados por um indicador.

 
Meat:

Eu já comecei a distorcer (não sei se intencionalmente ou não) o significado do que escrevi. Você já começou a distorcer (não sei se intencionalmente ou não) o significado do que escrevi, escrevi em russo que não negoceio a partir de um indicador, mas a partir de um metatrader, e você está novamente sobre alguma negociação a partir de um indicador. Se você interpretou mal algo que eu disse anteriormente, então eu explico: a frase "o indicador é usado em negociação" não significa que o indicador realiza a transação.

Então, um Expert Advisor que recebe sinais de um indicador negocia? E, claro, o MT4 faz tudo isso? É correto? Se assim for, minha pergunta permanece. Por que não deixar o Expert Advisor fazer tudo isso? É a coisa racional a fazer.
 
Zhunko: Igor, não estou falando do código do Alexey, estou falando de desconectar da Internet.

sim, eu entendo, mas seu código funciona quando a internet é desligada em Winhr

O código, em princípio, é necessário, nós o fazemos como um inluder e temos carrapatos em qualquer código no fim de semana, especialmente útil quando se trabalha com objetos gráficos - as pessoas frequentemente pedem para fazer "réguas inteligentes" e assim por diante, e em um dia de folga eles têm que fazer código "a olho nu".

 
IgorM:

sim, eu entendo, mas seu código funciona quando a internet é desligada em Winhr

E o código, em princípio, é necessário, faça-o como um inluder e nos fins de semana tem um carrapato em qualquer código, em particular útil quando se trabalha com objetos gráficos - as pessoas frequentemente pedem para fazer "réguas inteligentes" e assim por diante, e nos fins de semana têm que fazer código "a olho nu".

Bem, eu afixei código que funciona em todos os lugares. Uma linha. Sem temporizador. Funciona em todos os indicadores e em qualquer sistema operacional. É o suficiente para uma experiência.

Eu também dei o código para o Consultor Especialista acima. A linha que gera o tick para o Expert Advisor pode ser substituída no código do indicador. Neste caso, isso também afetará o especialista.

A biblioteca pode ser simplificada. Tudo já está implementado ali.

 
Zhunko:
Então, um Expert Advisor que recebe sinais de um indicador negocia? E é claro que a MT4 faz tudo isso? É correto? Se assim for, minha pergunta permanece. Por que não deixar o Expert Advisor fazer tudo isso? É a coisa racional a fazer.

Se estivéssemos falando de comércio automático, então a questão dos indicadores ou carrapatos não seria levantada de forma alguma, pois eles não são necessários lá. Portanto, você deve ter entendido mal o ponto deste tópico desde o início.

 

A propósito, aqui está outra coisa. A linha

TimerCode[byte/4] += (value[i]>>(8*j)&0xFF) <<(byte%4*8);

deve ser substituído por

TimerCode[byte/4] |= (value[i]>>(8*j)&0xFF) <<(byte%4*8);

Caso contrário, ocorrerá um erro ao chamar SetMyTimer novamente, ou você pode simplesmente inicializar a matriz com zero antes de iniciar o loop.

Quanto a Win7, eu não consegui reproduzir o problema lá, tudo funciona bem para mim. E fazer a depuração cegamente é irrealista. Será que há mais alguém aqui que tenha este código também funciona no sétimo? Porque estou tendo a sensação de que estou rodando algum tipo de Windows especial.

 

Acho que descobri qual foi o erro. Aqui está a versão corrigida da função SetMyTimer.

int SetMyTimer(int interval)
{    
  int MT4InternMsg= RegisterWindowMessageA("MetaTrader4_Internal_Message");
  int hWnd= WindowHandle(Symbol(),Period());
  int PostMsgAddr= GetProcAddress(GetModuleHandleA("user32.dll"),"PostMessageA");
  if (PostMsgAddr==0) return(0);
  // push ebp; move ebp,esp; push 01; push 02; push MT4InternMsg; push hWnd; mov eax,PostMsgAddr; call eax; pop ebp; ret 0010;    
  int value[]={ 0x55, 0x8B,0xEC, 0x6A,01, 0x6A,02, 0x68,0000, 0x68,0000, 0xB8,0000, 0xFF,0xD0, 0x5D, 0xC2,0x10 };
  int len[]=  { 1,    1,   1,    1,   1,  1,   1,  1,   4,    1,   4,    1,   4,    1,   1,    1,    1,   2 };
  value[8]=MT4InternMsg;  value[10]=hWnd;  value[12]=PostMsgAddr; 
  int byte=0;  ArrayInitialize(TimerCode,0);
  for (int i=0;  i<ArraySize(value);  i++)
    for (int j=0;  j<len[i];  j++, byte++)
      TimerCode[byte/4] |= value[i]>>(8*j)&0xFF<<(byte%4*8);

  return ( SetTimer(hWnd, TimerId, interval, TimerCode) );
}

Deve funcionar bem agora.

 

não..., não funciona

nenhum erro no registro, mesmo a internet no terminal, a conselho do Vadim, não desconectou - de qualquer forma não há carrapatos na saída

Razão: