[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 774
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Não entendo o que tenho uma linha na abertura da ordem de mercado, copio-a e adiciono uma nova à ordem, mas o mesmo erro 4107 não aparece no registro, mas a ordem abre, se você se importa em olhar o que eu perdi
Não entendo, tenho esta linha na abertura da ordem de mercado, copio-a em uma ordem pendente e adiciono uma nova, mas o mesmo erro 4107 ainda escreve no registro, mas as ordens pendentes são colocadas, se você se importa em ver o que eu perdi.
Você tem um maldito código mal organizado. E os nomes das variáveis têm abreviações que também dificultam a sua leitura.
O código deve ser organizado em blocos. Atribuir nomes às variáveis de tal forma que fique claro, num relance, de que se trata o código. Nomes constantes (entre no hábito) escreva-os em letras maiúsculas. A inicialização de constantes com valores deve ser colocada em um bloco de inicialização. Assim, por exemplo, você tem um uso absolutamente injustificado da corda
string sy = Símbolo();
no início da EA. Bem, diga-me por que a cada tique, por que você precisa chamar a função Symbol(), se durante todo o comércio o nome do símbolo permanece o mesmo? É suficiente inicializar uma vez com valor de sy variável em bloco de inicialização, e isso é tudo. Além disso, este bloco de código
É fundamentalmente errado! Para descobrir a parada de perda da última ordem, ela (a ordem) deve primeiro ser selecionada usando OrderSelect() - veja o exemplo no contador de ordens abaixo. Isto significa que se você precisar de níveis de parada para as últimas ordens, você precisará fazer isto através de um loop. A seguir. O projeto de
não se justifica. Função OrdensTotal() retornará o número total de ordens já abertas no terminal. Este valor inclui ordens abertas por outros instrumentos de negociação, bem como ordens que não foram abertas pelo Expert Advisor, mas por você pessoalmente para o mesmo instrumento, que o Expert Advisor colocou.
Se você não vai trocar à mão e apenas trocar o símbolo ao qual a EA foi lançada, então este projeto vai funcionar. Mas assim que você quiser negociar com suas mãos e a EA não interferir em suas negociações manuais, ou quiser que as negociações sejam executadas com outros símbolos também, o projeto realmente o decepcionará. Portanto, é melhor escrever contadores de pedidos separados para cada tipo de pedido. Aqui está um exemplo de um contador desse tipo.
Reescreva o código levando em conta as recomendações acima!!!
Desculpe, eu não percebi que as cordas como
chamar um subprograma.
Mas ainda é melhor organizá-lo de uma maneira diferente.
>> duplo StopLossLastPos(string sy="", int op=-1, int mn=-1) {
Você não precisa passar um nome simbólico de um símbolo comercial para o subprograma. Sua sub-rotina está no Expert Advisor, não na biblioteca incluída. Como a variável sy é declarada a nível global do Expert Advisor, esta variável está no escopo de tais subprogramas. Além disso, você passa o segundo parâmetro para o subprograma, mas quando você chama o próprio subprograma, você inicializa este parâmetro com um valor ( int op=-1) - você não precisa fazer isto. O mesmo é válido para o parâmetro seguinte.
A linha
>> se (op<0 || OrderType()==op) {
novamente é ilegível. Veja como está organizado no meu balcão!
E depois há isto. O bloco de código
é chamado a cada tique. Mas não é necessário em cada carrapato. Você só precisa conhecer a ordem de parada/lucro em alguns casos. Estes são os casos em que você precisa chamar sua subrotina.
Olá, você pode anexar um alerta ao indicador (o verde cruza o vermelho de cima para baixo - vender, voltar - comprar)?
Bem, alguém está postando códigos roubados no fórum novamente. :))))))))
Duvido que alguém queira escavar esta mistura de variáveis numeradas gratuitamente :)
Boa tarde, poderia acrescentar um alerta ao peru (o verde cruza o vermelho de cima para baixo - vender, voltar - comprar)?
Se você fizer isso novamente, serei obrigado a bani-lo do jogo.
Isto é uma violação das regras do fórum.
Desculpe, eu não percebi que as cordas como
chamar um subprograma.
Mas ainda é melhor organizá-lo de uma maneira diferente.
>> duplo StopLossLastPos(string sy="", int op=-1, int mn=-1) {
Você não precisa passar um nome simbólico de um símbolo comercial para o subprograma. Seu subprograma está no Expert Advisor, não na biblioteca incluída. Como a variável sy é declarada a nível global do Expert Advisor, esta variável está no escopo de tais subprogramas. Além disso, você passa o segundo parâmetro para o subprograma, mas quando você chama o próprio subprograma, você inicializa este parâmetro com um valor ( int op=-1) - você não precisa fazer isto. O mesmo é válido para o parâmetro seguinte.
A linha
>> se (op<0 || OrderType()==op) {
novamente é ilegível. Veja como está organizado no meu balcão!
Portanto, acho que a chamada de função pode ser escrita de forma simples
PrAskLim = StopLossLastPos(OP_SELL); na própria função
duplo StopLossLastPos(int op=-1,) como este?
Já lhe disse que tirei as funções deste site, seu trabalho foi testado porque não ouso mudar suas variáveis por outras mais legíveis, porque posso não ter experiência no que você pode e no que você não pode mudar; isto está repleto do perigo de que eu possa mudar algo errado em uma função de trabalho e você vai agulhar em uma pilha de código de novo,
mas consertei o máximo possível o que pude acrescentar,
Eu mesmo já o acrescentei, mas não resolvi meus problemas com o log 4107 e tenho uma dúvida sobre como fixar o preço e parar porque não mudei nada fundamentalmente na função de pedidos pendentes.
A segunda questão é como adicionar um spread a este preço PrAskLim = StopLossLastPos(OP_SELL) ; (Spread =MarketInfo(sy, MODE_SPREAD); )
Aqui está a versão modificada do EA
o código deve ser afixado?
Você não tem que postar coisas roubadas.
Não é preciso roubar.
E as regras deste recurso não o proíbem...
https://www.mql5.com/ru/code/8089
;)