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

 
ToLik_SRGV:

A função OrderSend tem os preços abertos/definidos erroneamente. Este erro torna impossível fazer pedidos corretamente, o que significa que a EA quer fazer mais pedidos por algum motivo, e não pode fazê-lo devido a este erro. Favor verificar se os preços dos pedidos pendentes estão normalizados e se todos os pedidos estão em vigor.

Se você não se importa de olhar para ele com seu olhar profissional, não há mais nada lá

Arquivos anexados:
test_21_3.mq4  16 kb
 
FoxUA:

Se você não se importa de olhar para ele com seu olhar profissional, não há mais nada lá.

O desempacotamento mostra que o erro ocorre no bloco para pedidos pendentes, você está tentando colocá-los a um preço negativo.

 
ToLik_SRGV:

O desempacotamento mostrou que o erro ocorre no bloco de ajuste de ordem pendente, você está tentando colocá-los a um preço negativo.


como você corrige, exceto batendo a cabeça contra a parede ;) para onde eu fui?

 
ToLik_SRGV:

Não de acordo com a idéia. Aqui está um trecho de um livro didático:

P.S.
Sobre Petyka, cem anos de idade, e ainda engraçado :)))


"... assim como os preços indicados de ordem stop-order das ordens de mercado que estão na zona de congelamento...".

Acontece, no entanto, que isso tem um efeito. e você tem que levar isso em conta - só preciso remover o anunciado nível de ordem de parada em uma posição aberta... E se você já entrou na zona de congelamento, basta esperar pelo fechamento... ou um pullback...

Obrigado, amigo!!!

ZS. E sobre Petya - aqui a situação é a mesma... - Eu digo que ponho 1,6 - funciona, eu ponho 1,8 - não funciona... E mesmo 1,9 não ajuda!!! Que bagunça!!! É horrível. Ooh!
Quais são os números? Litros ou algo assim.

 
FoxUA:

Um, como você conserta, além de bater a cabeça contra a parede ;) onde eu me perdi?

Reconheço as impressões das funções da Kim. Vá para seu tópico - ele tem um roteiro após cada função para verificá-lo. Não fica mais claro do que isso...
 
artmedia70:
Reconheço as impressões das funções da Kim. Vá até sua filial - ele tem um roteiro após cada função para verificá-lo. Não fica mais claro do que isso...


sim é de sua biblioteca que eles me deram aqui, então são os mesmos roteiros que estão na caixa postal. e eu adicionei para que não haja reação

{SetOrder(sy, OP_BUYLIMIT, Lot*3, NormalizeDouble(PrAskLim, Digits), PrAskLim-StopLoss*po, PrAskLim+TakeProfit*po,mn);
    SetOrder(sy, OP_BUYSTOP,  Lot,   NormalizeDouble(PrAskSt, Digits),  PrAskSt-StopLoss*po,  PrAskSt+TakeProfit*po,mn);
    SetOrder(sy, OP_SELLLIMIT,Lot*3, NormalizeDouble(PrBidLim, Digits), PrBidLim+StopLoss*po, PrBidLim-TakeProfit*po,mn);
    SetOrder(sy, OP_SELLSTOP, Lot,   NormalizeDouble(PrBidSt, Digits),  PrBidSt+StopLoss*po,  PrBidSt-TakeProfit*po,mn);
     } 
 
FoxUA:

Um, como você cura isso, além de bater a cabeça contra a parede ;) onde eu me perdi?

Vamos em frente.
Os números negativos entram em variáveis das funções StopLossLastPos() e TakeProfitLastPos() . Lá eles aparecem devido ao fracasso de seu trabalho, ou seja, -1 é um sinal de fracasso em obter o último valor de StopLoss e TakeProfit. Você não verifica o sucesso da obtenção dos últimos valores, então -1 entra em seu trabalho como preço, então a partir dele você conta os valores para definir os pedidos pendentes... e assim por diante.

O resultado é um efeito bola de neve e um mar de insetos. Agora, no testador, verei como funciona e farei um relatório...


 
ToLik_SRGV:

Seguindo em frente.
Os números negativos entram em variáveis das funções StopLossLastPos() e TakeProfitLastPos() . Eles aparecem lá devido ao fracasso, ou seja, -1 é um sinal de fracasso em obter o último valor de StopLoss e TakeProfit. Você não verifica o sucesso de obter os últimos valores, então -1 entra em seu trabalho como um preço, então a partir dele você conta os valores para definir os pedidos pendentes... e assim por diante.

O resultado é um efeito bola de neve e um mar de erros. Agora vou assistir ao teste e fazer um relatório...




Pergunto-me como será assim.

 
FoxUA:

Sim, eu me pergunto como será.

Vou assinar.
O erro está na lógica. É construído em torno de duas ordens de mercado. Mas aqui temos um ponto sutil: função OrdensTotal() devolve não o número total de ordens de mercado aberto, mas todas elas que estão no mercado, juntamente com as ordens pendentes que são definidas.
Como resultado, durante uma negociação, acontece um momento em que não há ordens de mercado, no momento em que ordens pendentes continuam penduradas, ou seja, OrdensTotal() retorna mais de 0, de acordo, suas ordens de mercado de abertura de bloco se(total_ordem==0), elas não podem abrir, Mas novas ordens pendentes podem (no momento em que as OrdensTotal() retornam 2), mas como não há ordens de mercado, as funções StopLossLastPos() e TakeProfitLastPos() retornam -1, enquanto a condição para abrir ordens pendentes é if(total_order===2), então elas pegam -1 e usam-no como preço.

 
ToLik_SRGV:

Vou assinar.
Há um erro na lógica. Ela é construída em torno de duas ordens de mercado. Mas aqui está o truque, a função OrdensTotal() retorna não o número total de ordens de mercado aberto, mas todas elas que estão no mercado, juntamente com as ordens pendentes que são definidas.
Como resultado, durante uma negociação, acontece um momento em que não há ordens de mercado, no momento em que ordens pendentes continuam penduradas, ou seja, OrdensTotal() retorna mais de 0, de acordo, suas ordens de mercado de abertura de bloco se(total_ordem==0), elas não podem abrir, Mas novas ordens pendentes podem (no momento em que as OrdensTotal() retornam 2), mas como não há ordens de mercado, as funções StopLossLastPos() e TakeProfitLastPos() retornam -1, enquanto a condição para abrir ordens pendentes é if(total_order===2), então elas pegam -1 e usam-no como preço.


Já está, vou mudá-lo agora. Muito obrigado.