Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 646

 
valeryk:


Não, eu acabei de verificar. É verdade, o temporizador está desligado quando a Internet é desligada.
Ali!) Pensei que eu era o único com falhas). Como você resolveria este problema?
 
Ainda bem que não estou usando nenhuma inovação que os mais conhecedores ainda não tenham descoberto! :)
 
Megan:
Ali!) Pensei que eu era o único com falhas). Como você resolveria este problema?



Se os desenvolvedores não pretenderam que este comportamento do temporizador fosse "infalível", então o bug é inequívoco. Afinal, o temporizador começa no inite, e a partir daí deve funcionar de forma autônoma. Você precisa fazer um pedido para servir.
 
o moderador parece tê-lo lido. barabashkakvn- ele pode confirmar que existe um problema e deve escrever para Servicedesk?
 
Megan:
EventSetTimer(1); stands. E quando há uma conexão, tudo funciona, curiosamente. Não há descarga no OnInit() . Eu não sei porque é assim(...

MetaTrader 4 build 660. De fato, se não houver conexão no momento do início do terminal, o OnInit() não acontece.

Remédio: reconectar o especialista ou trocar o cronograma duas vezes.


 
barabashkakvn:

MetaTrader 4 build 660. Realmente, se não houver conexão no momento do início do terminal, o OnInit() não acontece.

Isto pode ser curado por uma meia-medida: reatar o Expert Advisor ou mudar o prazo duas vezes.


Há um problema com isso) Minha EA foi projetada para trabalhar offline(
 
Megan:
problema com isso) Eu tenho um EA projetado para operação autônoma(


Você precisa escrever um pedido para Servicedesk.
 

Olá. Amigos, por favor, ajudem um novato. Não consigo descobrir como carregar as citações no terminal, pré-editado em arquivo .xls. Tenho lutado com isso o dia todo.

Posso baixar as citações para o terminal?

 

Olá novamente. Eu mesmo o perguntei e respondi: ao editar o nome, escolhi qualquer nome, exceto o original. Corrigido para - RTSI1440.csv e carregado.

Obrigado.

 
Top2n:

Bom dia!

O objetivo é redigir um algoritmo para a média das negociações.

Decidi implementá-la preenchendo os valores de preços das posições abertas em uma matriz. Como resultado, ele preenche a matriz sem mudar. Perdi algo em algum lugar.

Zeragem da matriz antes do início:

  if (ArrayResize(array, 0) != 0) {
    return false;
  }

A propósito, se OrderSelect() retorna um erro em pelo menos uma iteração do laço, você não pode mais confiar nos resultados. Em outras palavras, não devemos tentar lidar com as ordens restantes se algumas delas falharam. Seria mais razoável devolver o erro imediatamente. Por exemplo, um código de nível superior poderia reagir a um erro da seguinte maneira: tente repetir mais algumas vezes com este tique ou cancelar ações neste tique, adiá-las e tentar novamente com o próximo tique.

É mais lógico unir Usred() e Zapis(), e a condição do filtro deve ser combinada da seguinte forma: "if (OrderSymbol() == Symbol() && OrderType() == type)". De qualquer forma, não há necessidade de uma OrderSelect() repetida em Zapis().

Para calcular o preço médio de uma posição para pedidos individuais, não temos que armazenar tudo em uma matriz. Podemos calculá-lo na mosca.

S1 = pedido1_lotes * pedido1_openprice + pedido2_lotes * pedido2_openprice + ... orderN_lots * orderN_openprice.

S2 = pedido1_lotes + pedido2_lotes + ... + orderN_lots.

O preço da posição que estamos procurando = S1 / S2.

Se criarmos duas variáveis, para S1 e para S2, defina-as como zero, e no laço toda vez que adicionarmos um valor correspondente a cada uma das variáveis, então após o laço a única coisa que resta é dividir S1 por S2, tendo primeiro verificado que S2 não é 0 (neste caso - erro, ou seja, o resultado NÃO é calculado, ele não existe). Talvez o valor resultante também deva ser normalizado por NormalizeDouble() - depende do algoritmo se a normalização é necessária, e das convenções do programa, que função chama ou é chamada a normalizar.

Neste caso, você não precisará nem mesmo de uma matriz.

Se você precisar de cálculos além do preço total da posição, você pode "devolver" os valores S1 e S2 à função chamada, passando as próprias variáveis por referência, e retornar o sinal de erro da função. Ou seja, o protótipo da função chamada poderia ser assim: "bool fun(duplo &S1, duplo &S2);". A função de chamada inicia as variáveis, passa-as para fun(), e, se fun() retorna verdadeiro, usa os valores das variáveis passadas (que podem ter nomes diferentes) como S1 e S2.