[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 128

 
hoz:

Você pode colocar 0(zero), porque normalmente não é preciso expirar. Mas você provavelmente tem isso como precaução, para que não tenha que voltar a este ponto.
Portanto, é 0 na função padrão, enquanto na apresentação é necessário especificar, que os parâmetros subseqüentes (cor) devem funcionar. Eu não utilizo a expiração de forma alguma no pendente, eu apago somente por condição.
 

Cavalheiros programadores,


Por favor, ajude-me a entender.

Inseri este código https://www.mql5.com/ru/code/8811 para comércio virtual como uma função em meu indicador.

Funciona em tempo real e realiza negócios virtuais de qualquer complexidade.

Posso usá-lo como um gatilho na história, andando de barra? Ou posso escrever um novo código?


Meus agradecimentos.

 
abdul1:

Cavalheiros programadores,

Por favor, ajude-me a entender.

Inseri este código https://www.mql5.com/ru/code/8811 para comércio virtual como uma função em meu indicador.

Funciona em tempo real e realiza negócios virtuais de qualquer complexidade.

Posso usá-lo como um gatilho na história, andando de barra? Ou posso escrever um novo código?

Meus agradecimentos.

É melhor perguntar à base de código do autor onde você fez o download.
 

borilunad, você tem, por exemplo, se a função tem tanto B.U. como TPAAL, o ciclo e seleção de ordens, como eu entendo, está no início da função e é acionado no ticking?

Estou tentando descobrir como combinar tudo isso e meu cérebro já começou a sobrecarregar meu cérebro, preciso que a B.T. funcione somente quando o preço de parada estiver abaixo do limite mínimo, ou seja, preço aberto+ tomada mínima. Eu tenho esta variável de preçoBU. E então o traal seguiu em frente. Estou tentando imediatamente uma função separada para a prática, é mais fácil para mim entender. Chegarei ao seu assim que tudo começar a funcionar.

No início eu escrevi assim:

int start()
{
   int g;
   for (g = OrdersTotal() - 1; g >= 0; g--)
   {
       if (!OrderSelect(g,SELECT_BY_POS)) continue;
       if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
       if (OrderSymbol() != Symbol()) continue;
       
      if (OrderStopLoss() <= priceBU)
      {
          MovingStopLossToBU();
      }
      {
          ticket = OrderTicket();
          TrailingStop("", -1, -1);
      }
   }

Fiz bem, ou devo fazer de outra forma? Tudo parece funcionar corretamente, mas de alguma forma é escrito de forma simples, sem condições...

 
hoz:

borilunad, você tem, por exemplo, se a função tem tanto B.U. como TPAAL, o ciclo e seleção de ordens, como eu entendo, está no início da função e é acionado no ticking?

Estou tentando descobrir como combinar tudo isso e meu cérebro já começou a sobrecarregar meu cérebro, preciso que a B.T. funcione somente quando o preço de parada estiver abaixo do limite mínimo, ou seja, preço aberto + tomada mínima. Eu tenho esta variável de preçoBU. E então o traal seguiu em frente. Estou tentando imediatamente uma função separada para a prática, é mais fácil para mim entender. Chegarei ao seu assim que tudo começar a funcionar.

No início eu escrevi assim:

Fiz bem, ou devo fazer de outra forma? Tudo parece funcionar corretamente, mas de alguma forma é escrito de forma simples, sem condições...

Exatamente, a função deve ser chamada quando as condições forem cumpridas, e as condições devem ser adequadas ao mercado, respeitar as distâncias até o preço e ter sempre a variação necessária em relação ao spread e outros (tenho prevenido), o que protegerá contra violações e erros devidos a movimentos espontâneos de preços. E, claro, o tiquetaque! Então, por que chamar a função a cada tique, portanto, as condições devem ser prescritas no início. Especialmente no Real, o seu não vai "aparentemente", mas certamente não vai funcionar, vamos receber erros um após o outro. E duvido que funcione na Demo também. E o que eu vejo na Demo? - Olhe para minha Rede de arrasto, você também precisa traduzir para B/S e definir SL e TP, e fazer o mesmo para Sell, e colocar tudo em um loop de enumeração e seleção de posição, e você terá um bloco bem funcional de todas as modificações, chamando apenas uma função, e sem aborrecimentos. ;)
 
hoz:



Portanto, tenho um teste para isso:

Se parada - nova parada (em b.u.) não é zero... então modificamos... Caso contrário, não modificamos. É por isso que não está claro para mim como isto acontece. Afinal, entendo que preciso verificar a igualdade entre as paradas passadas e as novas paradas e já o fiz.

se (ND(OrderStopLoss()) - ND(priceBU * pt) != 0,0) - precisamos assim, se ND(...) - isto é normalização.

 
borilunad:
Exatamente, a função deve ser chamada quando as condições são cumpridas, e as condições devem ser adequadas ao mercado, respeitar a distância ao preço e ter sempre a lacuna necessária (minha prev), o que evita violações e erros devido a movimentos espontâneos de preços. E, claro, o tiquetaque! Então, por que chamar a função a cada tique, portanto, as condições devem ser prescritas no início. Especialmente no Real, o seu não vai "aparentemente", mas certamente não vai funcionar, vamos receber erros um após o outro. E duvido que funcione na Demo também. E o que eu vejo na Demo? - Olhe para minha Rede de arrasto, você também precisa traduzir para B/S e definir SL e TP, e fazer o mesmo para Sell, e colocar tudo em um loop de enumeração e seleção de posição, e você terá um bloco bem funcional de todas as modificações, chamando apenas uma função, e sem aborrecimentos. ;)


Uau. É como se eu tivesse nascido de novo. Antes era mais fácil, e agora estou pensando em como fazer isso diferente. Eu fiz um loop no início. Agora vou ter que reescrever tudo...

Uma coisa estranha. Você diz que não vai funcionar. Mas, por mais especialistas que eu tenha visto, tudo é chamado por funções e trabalhos separados. Concordo que consome mais recursos, mas... por que haverá pacotes de erros é um mistério para mim.

É um mistério para mim porque já vi tantos furos e está escrito da mesma forma que o meu. Mas nunca vi um loop e uma escolha no início, e então tudo está acorrentado a ele... Eu nunca vi...

 
hoz:


Uau. É como se eu tivesse nascido de novo. Costumava ser mais fácil, mas agora estou me perguntando como refazer qualquer coisa. Eu fiz um loop no início. Agora eu tenho que reescrever tudo.

Uma coisa estranha. Você diz que não vai funcionar. Mas, por mais especialistas que eu tenha visto, tudo é chamado com funções e trabalhos separados. Eu concordo que isso consome mais recursos, mas... por que haverá pacotes de erros é um mistério para mim.

É um mistério para mim porque já vi tantos furos e está escrito da mesma forma que o meu. Nunca vi um ciclo e uma escolha no início, e depois tudo se agarra a ele...

O Codebase tem muitas soluções diferentes e diferentes níveis. Comecei com modificações e aos poucos fui chegando a esta construção, que não é de modo algum nova, mas para mim é conveniente. Eu tenho muitas funções off-start sem modificações. Para abrir um pedido e/ou posição, há também uma função. Em vez disso, faço muitas verificações antes de abrir, também com funções fora do início. Para fechar uma posição, utilizo muitas condições com ainda mais funções para várias verificações.

É apenas esta função que utilizo para modificações, mas as modificações são diferentes e envolvem diferentes condições, verificações e medidas de proteção. Não consigo enfiar tudo em uma única função e não faz sentido. Tenho acesso a ele quando todas as condições são cumpridas e tudo é calculado, e só deixo isso para o último passo. Se algo estiver errado, ele não envia, devolve, verifica novamente os dados e tenta novamente, e apenas o preço exato e os dados exatos são enviados ao CD, que é imediatamente aceito e definido. O principal é não perturbar muito a empresa de corretagem.

Mais uma vez, recomendamos tentar apenas duas linhas de condições para definir um novo valor de SL no arrasto e você entenderá que precisamos ser muito minuciosos aqui. A propósito, este bloco, desenvolvido por mim, vagueia de um TS para outro com ligeiras modificações. Tudo o resto, especialmente o fechamento tem que ser feito de novo, dependendo do algoritmo TS selecionado. E, finalmente, não insisto em nada, apenas compartilho o que experimentei e testei, e não excluo que alguém possa lhe oferecer algo mais aceitável para você. Portanto, tente, entenda, verifique, mas nunca aposte no Real ao acaso, algum produto semi-acabado.

Por que estou lhe dizendo isto, porque todo iniciante aqui quer fazer um arranjo rápido e fazer "massa". Isto deve ser um presente para um trabalho bem feito. E aqueles que ainda não saíram da infância, não gostam do trabalho e só querem brincar, o mercado não o perdoará.

Boa noite! E amanhã, com a cabeça limpa, de volta ao trabalho!

 
Valerius:


Não parece haver nenhum especialista que possa responder a esta pergunta muito simples, apenas dois programadores se reunindo em uma reunião e pronto... Qual é, então, o objetivo deste fórum?

 
Valerius:


Não parece haver nenhum especialista que possa responder a esta pergunta muito simples, apenas dois programadores se reunindo em uma reunião e pronto... Qual é, então, o objetivo deste fórum?

Sua pergunta já foi respondida cem vezes - se você estiver comparando dois números fracionários, normalize ambos antes de comparar