[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 315

 
dekker:

Amigos!

Surgiu uma questão global

É possível fazer o tick stream no terminal nos fins de semana, para que eu possa escrever e depurar EAs tranquilamente?

Já tenho algumas dicas de como utilizá-lo em meu robô comercial.

não posso usar um carrapato acionando a EA, preciso de um fluxo de carrapatos em uma determinada faixa

existe tal coisa na natureza?

servidores mt4 que imitam citações de streaming nos fins de semana ?

há corretores trabalhando nos fins de semana, pesquisar no google it
 
dekker:

Amigos!

Surgiu uma questão global

É possível fazer o tick stream no terminal nos fins de semana, para que eu possa escrever e depurar EAs tranquilamente?

Já tenho algumas dicas de como utilizá-lo em meu robô comercial.

não posso usar um carrapato acionando a EA, preciso de um fluxo de carrapatos em uma determinada faixa

existe tal coisa na natureza?

servidores mt4 que imitam citações de streaming nos fins de semana ?

Pendurar um roteiro -
#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, string lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   bool asd;
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(5000);
      if(asd){Comment("A");asd=false;}else{Comment("V");asd=true;}
   }
   return(0);
}
emulação de carrapatos. Não sei se é isso que você precisa ou não. Há também um timer, seja com kernel32 ou com user32, procure-o no fórum.
 

Olá a todos, por favor, ajudem um recém-chegado.

A questão é a seguinte ... por exemplo, eu tenho um indicador e ele é desenhado na janela de indicadores de propriedade_separate_window subwindow, o indicador tem dois "buffers" que são duas linhas ... minha pergunta é como fazer uma seta ou linha aparecer na janela PRINCIPAL (não a janela do indicador, mas a janela do gráfico de preços) quando as linhas se cruzam ...

Por exemplo, pegue um RSI regular, como fazer a linha que cruza zero para exibir setas no gráfico de preços ...

 
clubsmi:

Olá a todos, por favor, ajudem um recém-chegado.

A questão é a seguinte ... por exemplo, eu tenho um indicador e ele é desenhado na janela do indicador de propriedade_separate_window, o indicador tem dois "tampões", ele acaba por sair duas linhas ... minha pergunta é como fazer uma seta ou linha na janela PRINCIPAL (não a janela do indicador, mas a janela do gráfico de preços) quando as linhas se cruzam ...?

Por exemplo, pegue um RSI regular, como fazer uma travessia de linha com zero para exibir setas no gráfico de preços ...


Outro indicador em# janela de indicador de propriedade via iCustom, e lá em DRAW_ARROW.
 

Não consigo entender a expressão:

if (counted_bars==0 && downloadhistory)

se o número de barras contadas =0 edownloadhistory?downloadhistory é uma variável lógica global inicialmentefalsa. Qual é a sua condição? Eu entenderia se a condição é esta

se (counted_bars==0 && downloadhistory == falso)

Explique a um iniciante, por favor!

 
dekker:

Amigos!

Surgiu uma questão global

É possível fazer o tick stream no terminal nos fins de semana, para que eu possa escrever e depurar EAs tranquilamente?

Já tenho algumas dicas de como utilizá-lo em meu robô comercial.

não posso usar um carrapato acionando a EA, preciso de um fluxo de carrapatos em uma determinada faixa

existe tal coisa na natureza?

servidor mt4 que emula um fluxo de citações nos finais de semana ?

Biblioteca.

Seção"4.7 Funções para atualizações de cartas de controle".

 

Mais uma coisa:)

Há um ZigZag na aplicação MT4 nos indicadores personalizados. Ela tem parâmetros:

//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

O que eles representam?

 

Vadim, não está funcionando. Como é o fim de semana, estou estudando a leitura-escrita por conta própria. Estou escrevendo dois roteiros para verificação: coloco um deles em um período de segundos e ele gera uma matriz elemento por elemento. O segundo eu envio para qualquer par e ele imprime esta matriz. Portanto, roteiros:

Segundos:

#import "SharedMemoryMT4.dll"
        bool MemoryWriteInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte, int nValue);
        int MemoryCreateProjection(int nArea, string sPrefixArea, int hFileUser, int nIndex, string sName, int nSize);
        bool MemoryResize(int nArea, string sPrefixArea, int nIndex, string sName, int nSize);
#import
int Σ, Δt, j;
int start(){
   GlobalVariableSet("nAddress", MemoryCreateProjection(1, "", NULL, -1, "ind", 4));
   for(int i=1; i>Bars; i++){
      Δt=Time[i-1]-Time[i];
      Σ=Σ+Δt;
      MemoryResize(1, "", -1, "ind", 4*Σ);//=ArrayResize(ind, Σ);
      for(; j<Σ; j++) MemoryWriteInt(1, "", -1, "ind", j*4, i);
   }
   /*
   Δt[0]=1 => addr(j*4)=0*4=0, var(i)=0x0001.//out: {0x0001}
   Δt[0]=2 => addr(j*4)=0*4=0, var(i)=0x0001,
              addr(j*4)=1*4=4, var(i)=0x0001.//out: {0x0001, 0x0001}
   Δt[0]=1, Δt[1]=2 => addr(j*4)=1*4=4, var(i)=0x0002,
                       addr(j*4)=2*4=8, var(i)=0x0002.//out: {0x0001, 0x0002, 0x0002}
   Δt[0]=2, Δt[1]=2 => addr(j*4)=2*4=8, var(i)=0x0002,
                       addr(j*4)=3*4=12, var(i)=0x0002.//out: {0x0001, 0x0001, 0x0002, 0x0002}
   */
   return(0);
  }

O segundo roteiro, que imprime a matriz, fica pendurado em qualquer par já formado:

#import "SharedMemoryMT4.dll"
        int MemoryReadInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte);
        bool MemoryUnProjection(int nArea, string sPrefixArea, int nIndex, string sName, int pcAddress);
        int MemorySize(int nArea, string sPrefixArea, int nIndex, string sName);
#import

int start(){
   for(int i=0; i<MemorySize(1, "", -1, "ind"); i=i+4) Print(MemoryReadInt(1, "", -1, "ind", 4*i));
   MemoryUnProjection(1, "", -1, "ind", GlobalVariableGet("nAddress"));
   return(0);
  }

Para ser justo, eu coloquei

{MemoryWriteInt(1, "", -1, "ind", j*4, i); Print(j, " - ", i);}

o segundo para. Olhando para o registro. Pelo menos alguns valores são escritos em endereços, ou melhor, compensações relativas ao nAddress: 0-3FF, 7FF-83FF, BFFF-C3FF. Para todas as outras faixas - erro crítico emMemoryWriteInt. Anexar arquivo de histórico com castiçais de segundos.

Arquivos anexados:
sec_eurusd1.zip  18 kb
 
gyfto:

Vadim, não está funcionando. Como é o fim de semana, estou estudando a leitura-escrita por conta própria. Estou escrevendo dois roteiros para verificação: coloco um deles em um período de segundos e ele gera uma matriz elemento por elemento. O segundo eu envio para qualquer par e ele imprime esta matriz. Portanto, roteiros:

Segundos:

O segundo roteiro, que imprime a matriz, fica pendurado em qualquer par já formado:

Para ser justo, eu coloquei

o segundo para. Olhando para o registro. Pelo menos alguns valores são escritos em endereços, ou melhor, compensações relativas ao nAddress: 0-3FF, 7FF-83FF, BFFF-C3FF. Para todas as outras faixas - erro crítico emMemoryWriteInt. Anexar arquivo de histórico com castiçais de segundos.

O roteiro de teste do kit está funcionando?

Você não precisa mudar o tamanho da memória alocada com tanta freqüência. Isto é um freio. A memória é alocada discretamente por 4Kb. Arredondado para cima. Este é um recurso de mapeamento.

Faça um simples projeto de teste para que você possa verificá-lo. O que você está publicando é impossível de ser verificado. Há demasiados erros de sintaxe.

 
GaNDarM:

Não consigo entender a expressão:

se o número de barras contadas =0 edownloadhistory?downloadhistory é uma variável lógica global inicialmentefalsa. Qual é a sua condição? Eu entenderia se a condição é esta

se (counted_bars==0 && downloadhistory == falso)

Por favor, explique a um iniciante!


Deixe-me tentar agora. Quando escrevemos

bool bVar=true;
if(bVar) какие-то_действия
//------------------
bool bVar=false;
if(!bVar) какие-то_действия
//------------------
if(true) какие-то_действия

então em todos os casos estas ações serão sempre realizadas, pois as duas primeiras são semelhantes à terceira (verificar, simplificar a expressão). Isto é, se são variáveis booleanas, não precisamos colocar ==verdadeiro, ==falso, porque já são verdadeiras ou falsas por si mesmas.

Razão: