[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 545

 
artmedia70 escreveu(a) >>
Respeitados gurus! >> Por favor, aconselhe os manequins presos no deserto como organizar o rastreamento de pedidos e eventos em múltiplos pares de moedas e múltiplos períodos de tempo simultaneamente em uma EA. A contabilidade de pedidos em um grande programa e a função de rastreamento de eventos não me dão respostas claras às minhas perguntas. Não encontrei nenhuma resposta nas extensões úmidas deste maravilhoso recurso. Nunca pensei que uma simples tarefa (simples no meu coração) pudesse paralisar uma chaleira por tanto tempo e irreversivelmente, e pregá-la na parede, que ela não saísse... :)
Entendo que devo organizar a revisão das ordens em um loop, mas não consigo descobrir como acompanhar as posições abertas e definir ordens simultaneamente para diferentes pares de moedas e diferentes períodos de tempo. Droga, estou preso a esta situação há um mês. Eu fiz um livro didático Expert Advisor, que negocia apenas em um par e um período de tempo, mas, claro, ele não se encaixa no meu TS e não satisfaz os requisitos que eu preciso para implementar um sistema de negociação.
Já um grito de ajuda... Ajude-me a compreendê-lo. Se apenas uma dica onde eu possa ler sobre isso (só não me mande de volta para o tutorial) e de preferência com exemplos (o que um iniciante pode fazer sem exemplos - sentir é sempre melhor do que olhar...).

Eu ficaria grato a qualquer um que respondesse de alguma forma a um pedido de ajuda.

Pense em um código para você mesmo,

que codificaria todas as diferenças entre as ordens como uma variável int e a atribuiria a um mágico,

Se você pesquisar um mágico, você saberá exatamente que ordem você está mantendo.

 
Diga-me, a EA deve desenhar os objetos gráficos no testador em uma janela separada, não na janela de preços? Por alguma razão não funciona quando se substitui zero por um ao criar um objeto.
 
GVA63 >>:

Можeт вопрос покажeтся странным, но отвeт найти нe могу:

почeму при работe в "автматe", при одном и том-жe SL, ТP рeзультат сдeлок разный ? (разница до 3х пунктов). Буду благодарeн, eсли хотябы ссылку дадитe на соотв.

Slippage, talvez?

O que você quer dizer com operação "automática"? O que você quer dizer com "automático"?

 
Necron >>:
Добрый день. Подскажите пожалуйста как сделать панель на графике, на которую можно было бы поместить несколько графических объектов. Притом координаты объектов должны изменяться при перемещении панели в соответствии с координатами панели. Где-то видел в кодебазе пример такой, но не могу найти. Благодарен за помощь
É isso aí, problema resolvido. Exemplo aqui -> https://www.mql5.com/ru/code/9403
 

O método 'Checkpoints' leva em conta as citações do menor período de tempo mais próximo.

Se estamos otimizando em 1 hora e o histórico é baixado apenas para H1 e M5 -> o M5 será usado ou ignorado?

 
Obrigado a todos vocês, que responderam à minha pergunta anterior.
Agora uma pergunta como esta:
posso usar a seguinte construção ao ligar para MarketInfo:

______________________________________________________________________

for (int ln=1; ln<=Instr_Count; ln++) // Procure na matriz de instrumentos de eixo
{
for (int mode=1; mode<=9; mode++) // Ciclo através de modos MarketInfo de instrumentos de eixo,
{ // igual ao valor atual ln
Level_old=Mas_Ord_Old[0][ln][mode]; // Pegue o valor da matriz Mas_Ord_Old [0][instrument symbol].][MODE=mode]
Level_new=MarketInfo(Instrument[ln] ,mode+10); // Pegue o mesmo valor do DC
// Aqui Instrumento[ln] de acordo com a matriz de nomes de instrumentos.
// devolver o nome pelo valor de ln, depois
// adicionar 10 ao valor de modo e lavar MODE_XXX)

if (Level_old!=Nível_novo) // Se os dados da corretora foram alterados
{
Level_old=Level_new; // armazenar novo valor de Level_new em Level_old,
Mas_Ord_New[0][ln][mode]=Level_new; // armazenar em Mas_Ord_New array
Inform(10,Level_new); // Informar mudanças no corretor
// Esta função também deve ser melhorada para mensagens mais informativas...
}
} // Se os dados DC neste modo não mudaram, repita
// o laço no próximo modo. Até a modalidade=9

} // Verificamos todo o MODE para o par de moedas em questão, passamos para o próximo

..................

Instrumento[ln] é um conjunto de tipos de cordas com os nomes dos pares de moedas:

Instrumento[1] = "EURUSD";
Instrumento[2] = "USDCHF";
Instrumento[3] = "GBPUSD";
Instrumento[4] = "USDJPY";
Instrumento[5] = "AUDUSD";
Instrumento[6] = "USDCAD";
Instrumento[7] = "EURCHF";
Instrumento[8] = "EURGBP";
Instrumento[9] = "EURJPY";
Instrumento[10]= "EURCAD";
Instrumento[11]= "EURAUD";
Instrumento[12]= "GBPCHF";
Instrumento[13]= "GBPJPY";
Instrumento[14]= "CHFJPY";
Instrumento[15]= "AUDCAD";

__________________________________________________________________________

?????????????????????????????????????????????
Agradecemos antecipadamente... :)

 

Eu não entrei na lógica do seu ciclo. Mas uma rápida olhada no que eu sublinhei para você com uma linha vermelha chamou minha atenção. Se os dados DC não tiverem mudado, então repita. Mas e se eles tiverem? O que o Consultor Especialista deve fazer se não tiver mudado? Onde está o comando?

Quando o programador vai para a cama, ele coloca dois copos junto à cama. Um - com água - caso o programador fique com sede. O outro está vazio - caso o programador não queira beber.

Estava brincando, mas na programação muitas vezes se tem que lidar com os dois ramos da árvore dicotômica da divisão.

P.S.

A propósito, artmedia70, observe como os parênteses e recuos estão dispostos em seu código na minha captura de tela. O código é muito mais legível desta forma. É apenas para sua informação.

 

Uma construção como:

if(A>B)
{
  // какие-то действия
}

é correto, mas menos conveniente do que a construção do tipo:

if(A>B){
  // какие-то действия
}

No primeiro caso, a cinta de abertura em curva acrescenta uma linha extra ao código, enquanto no segundo caso, uma linha extra é excluída. Uma cinta de fechamento no segundo caso indica a que comando se refere porque está localizada diretamente sob o primeiro caracter deste comando. Assim, é tão fácil encontrar o parêntese de abertura no segundo caso quanto no primeiro. Mas qual é a vantagem da segunda via? A exclusão de linhas desnecessárias significa que mais código pode ser visto na tela e o olho cobre mais informações. Como resultado, é mais fácil navegar através do código, o que significa mais conforto na programação.

 
Tenho outra pergunta. Há um indicador (anexo) que mostra o preço de abertura e é possível definir um offset relativo ao tempo de abertura em horas e adicionar mais em minutos. Você pode me dizer, por favor, como fazer com que o nível seja puxado apenas até o momento do fechamento do bar diário? Estou tão confuso :(
Arquivos anexados:
 
drknn >>:

Конструкция типа:

является правильной, но менее удобна чем конструкция типа:

Desenho do tipo.

if(A>B)
{
  // какие-то действия
}

Está correto. Mas uma construção como

if(A>B){
  // какие-то действия
}

é obsoleto. A linha no exemplo (1) não é supérflua e é usada para marcar sem ambiguidade o início de um bloco lógico de código. Este é o século 21 - a economia de espaço é ridícula.

Se lhe convém, vá em frente, mas não faça os outros escreverem errado.

MAS! Qual é a vantagem da segunda forma de escrever? Evitar linhas desnecessárias significa que mais códigos se encaixam em mais linhas e mais informações são visíveis a olho nu. Como resultado, é mais fácil navegar no código e, portanto, mais confortável de programar.

Bobagem.