//+------------------------------------------------------------------+//| Возвращает пункты убытка закрытых ордеров с начала цикла |//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| Возвращает кол-во серии убыточных ордеров |//+------------------------------------------------------------------+
Dois ciclos com as mesmas ordens. Você não pode obter tudo que essas funções retornam em um ciclo, certo?
Alexey, eu já escrevi, eu sei que você é um bom programador!
Mas eu não sou um programador e o que é "claro o suficiente" para você é uma floresta escura para mim...
Quanto aos dois loops, para mim"obter tudo em um loop" não é possível, porque eles retornam tipos de dados diferentes.
Os tipos devolvidos não têm nada a ver com isso. Se houver 2 loops nos mesmos dados com verificações e filtros diferentes, você pode sempre colocar tudo em um loop, mas o código não vai ler tão claro, mas deve funcionar mais rápido) Na fase de depuração eu não faço tudo em um loop. É mais fácil encontrar bugs em diferentes.
Alexey, eu já escrevi, eu sei que você é um bom programador!
Mas eu não sou um programador e o que é "claro o suficiente" para você é uma floresta escura para mim...
Quanto aos dois loops, para mim"Em um loop para obter tudo" não é possível, porque eles retornam diferentes tipos de dados.
Eu tenho duas opções.
Fazer variáveis em nível global. Então, eles estarão disponíveis em todas as funções.
Passe a variável local por referência. Então, se você alterar esta variável, a variável local será alterada.
/********************Script program start function*******************/voidOnStart()
{
int a = 0;
f_0(a);
Print(a);
}/******************************************************************/void f_0(int& b)
{
b = 100;
}
E pode haver até 64 dessas variáveis, Deus me livre de mentir. Se eu estiver errado, alguém pode me corrigir.
Leia a documentação com mais atenção. Está escrito lá em grandes detalhes.
Primeiro resultado. Há um conflito entre pares de moedas e a EA tem um conflito na colocação de pedidos pendentes. Por exemplo, eu coloquei um pedido pendente para EURUSD, a EA seguiu o algoritmo (compra em 1.18901, posição aberta, EA estabeleceu parada em 1.18751, lucro em 1.19051 e pedido de venda em 1.18751) tudo está bem conforme os planos.
Mas agora é hora de abrir um negócio em GBPUSD onde os preços são diferentes e a EA está fazendo tudo certo, exceto para estabelecer uma ordem pendente. Uma ordem de venda em 1,39393 foi acionada e a EA tentou abri-la, fixou uma parada em 1,39633 e tomou 1,39153, mas a ordem de compra em 1,39633 é totalmente duplicada em EURUSD e uma ordem de venda em 1,18751)
Acabo de encontrar outro problema: uma parada em 1.18751 e uma ordem de venda pendente em 1.18901 e take 1.18595 foram abertos em EURUSD. O Expert Advisor não acrescentou a parada acionada, o que está na história.
Boa tarde. Ajuda com a EA. De acordo com a estratégia, se uma parada for acionada, então a EA deve acrescentar (o número de pontos) ao próximo set takeaway da história por ID, mas não o faz por alguma razão.
Makar apontou corretamente para OrderMagicNumber(), mas entendeu mal o erro. Leia a documentação para a sintaxe desta função... deve ser o índice na lista de pedidos ou o ticket de um determinado pedido, mas não um magik. E OrderTicket() não vai ajudar aqui. Não tente colocá-lo lá.
O que você quer dizer? Uma certa faixa de preços a partir da qual você compra/vende?
O autor do código, como eu o entendo, sugeriu o seguinte:
Se a coruja abre um comércio de compra com stop and take, então seu código abre um comércio de venda ao mesmo tempo no mesmo lugar (levando em conta o spread) também com stop and take em vez de um comércio de compra.
Assim, a lógica de busca de um ponto de entrada da EA não muda, e apenas a direção com propagação leva em conta as mudanças.
Descreva em poucas palavras o que você quer desta EA (a lógica de operação),
Acho que você tem muitas coisas desnecessárias em seu código ou eu não entendo alguma coisa.
as corujas devem abrir negócios de acordo com seu próprio algoritmo
se a parada, a próxima troca com um Martin, e assim por diante até o número de multiplicações que especifiquei (função -OrderClose = .....;).
Mais adiante, se a coruja for desativada junto com o terminal, basta pressionar o botão de "auto-comércio" com outra coruja, então o próximo comércio começará com o lote inicial, não com o último aumentado por um martingale.
Também seria bom anexar-lhe um cronograma, mas esta idéia só agora me ocorreu.
Por exemplo: foi ativado às 10-00 na segunda-feira com o lote inicial, depois foi desligado durante o dia quando algum resultado foi alcançado, e na terça-feira de manhã foi ativado às 10-00 e começou com o lote inicial novamente.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
É bom falar quando se sabe o que fazer...
me ajude com conselhos sobre como "obter o máximo de informações úteis que puder".
Eu disse tudo muito claramente. Bem, para você pessoalmente, deixe-me perguntar.
Aqui estão duas funções e ambas passam por ordens históricas
Dois ciclos com as mesmas ordens. Você não pode obter tudo que essas funções retornam em um ciclo, certo?
Olá!
Estou tentando acrescentar uma inversão de marcha à coruja. Estou fazendo isso conforme descrito nas instruções: https://www.mql5.com/ru/forum/128200
Não tenho erros na compilação, mas meu testador não trabalha com o flip.
O registro dá um erro:
2021.07.29 20:06:34.316 2015.01.08 22:10:00 SMA com código AUDUSD,M5: OrderSend error 130
2021.07.29 20:06:34.316 2015.01.08 22:05:45 SMA com reversão via AUDUSD,M5: OrderSend error 4107
2021.07.29 20:06:34.316 2015.01.08 22:05:45 SMA com flip via AUDUSD,M5: stoploss inválido para a função OrderSend
você pode me dizer qual é o problema aqui?
Eu mesmo penso que as variáveis especificadas em
int InversOrderSend (símbolo de string,int cmd,volume duplo,preço duplo,int slippage,stoploss duplo,takeprofit duplo,string comment,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)Não estão relacionados com o código principal.
Já tentei em diferentes terminais, 4 e 5 sinais.
aqui está o código completo:
Já o disse com clareza suficiente. Vou lhe fazer uma pergunta pessoal.
Aqui estão duas funções e ambas percorrem o ciclo através de ordens históricas
Há dois loops nas mesmas ordens. Você não pode obter tudo que essas funções retornam em um ciclo, certo?
Alexei, eu já escrevi, eu sei que você é um bom programador!
Mas eu não sou um programador, e o que é "claro o suficiente" para você não é tão claro para mim...
Quanto aos dois loops, para mim"Em um loop obtenho tudo" não é possível, porque eles retornam diferentes tipos de dados.
Alexey, eu já escrevi, eu sei que você é um bom programador!
Mas eu não sou um programador e o que é "claro o suficiente" para você é uma floresta escura para mim...
Quanto aos dois loops, para mim"obter tudo em um loop" não é possível, porque eles retornam tipos de dados diferentes.
Os tipos devolvidos não têm nada a ver com isso. Se houver 2 loops nos mesmos dados com verificações e filtros diferentes, você pode sempre colocar tudo em um loop, mas o código não vai ler tão claro, mas deve funcionar mais rápido) Na fase de depuração eu não faço tudo em um loop. É mais fácil encontrar bugs em diferentes.
Alexey, eu já escrevi, eu sei que você é um bom programador!
Mas eu não sou um programador e o que é "claro o suficiente" para você é uma floresta escura para mim...
Quanto aos dois loops, para mim"Em um loop para obter tudo" não é possível, porque eles retornam diferentes tipos de dados.
Eu tenho duas opções.
Eu tenho um conflito entre ordens pendentes.
Primeiro resultado. Há um conflito entre pares de moedas e a EA tem um conflito na colocação de pedidos pendentes. Por exemplo, eu coloquei um pedido pendente para EURUSD, a EA seguiu o algoritmo (compra em 1.18901, posição aberta, EA estabeleceu parada em 1.18751, lucro em 1.19051 e pedido de venda em 1.18751) tudo está bem conforme os planos.
Mas agora é hora de abrir um negócio em GBPUSD onde os preços são diferentes e a EA está fazendo tudo certo, exceto para estabelecer uma ordem pendente. Uma ordem de venda em 1,39393 foi acionada e a EA tentou abri-la, fixou uma parada em 1,39633 e tomou 1,39153, mas a ordem de compra em 1,39633 é totalmente duplicada em EURUSD e uma ordem de venda em 1,18751)
Acabo de encontrar outro problema: uma parada em 1.18751 e uma ordem de venda pendente em 1.18901 e take 1.18595 foram abertos em EURUSD. O Expert Advisor não acrescentou a parada acionada, o que está na história.
Estes são os problemas.
Olá!
Estou tentando dar uma reviravolta nos negócios para a coruja.
O que você quer dizer com isso? Uma certa gama de preços a partir dos quais você compra/vende?
Boa tarde. Ajuda com a EA. De acordo com a estratégia, se uma parada for acionada, então a EA deve acrescentar (o número de pontos) ao próximo set takeaway
da história por ID, mas não o faz por alguma razão.
O que há de errado no código?
Makar apontou corretamente para OrderMagicNumber(), mas entendeu mal o erro. Leia a documentação para a sintaxe desta função... deve ser o índice na lista de pedidos ou o ticket de um determinado pedido, mas não um magik. E OrderTicket() não vai ajudar aqui. Não tente colocá-lo lá.
O que você quer dizer? Uma certa faixa de preços a partir da qual você compra/vende?
O autor do código, como eu o entendo, sugeriu o seguinte:
Se a coruja abre um comércio de compra com stop and take, então seu código abre um comércio de venda ao mesmo tempo no mesmo lugar (levando em conta o spread) também com stop and take em vez de um comércio de compra.
Assim, a lógica de busca de um ponto de entrada da EA não muda, e apenas a direção com propagação leva em conta as mudanças.
isto é exatamente o que eu preciso
Descreva em poucas palavras o que você quer desta EA (a lógica de operação),
Acho que você tem muitas coisas desnecessárias em seu código ou eu não entendo alguma coisa.
as corujas devem abrir negócios de acordo com seu próprio algoritmo
se a parada, a próxima troca com um Martin, e assim por diante até o número de multiplicações que especifiquei (função -OrderClose = .....;).
Mais adiante, se a coruja for desativada junto com o terminal, basta pressionar o botão de "auto-comércio" com outra coruja, então o próximo comércio começará com o lote inicial, não com o último aumentado por um martingale.
Também seria bom anexar-lhe um cronograma, mas esta idéia só agora me ocorreu.
Por exemplo: foi ativado às 10-00 na segunda-feira com o lote inicial, depois foi desligado durante o dia quando algum resultado foi alcançado, e na terça-feira de manhã foi ativado às 10-00 e começou com o lote inicial novamente.
Tudo.