Quase pronto EA, código funciona para ordens de compra, mas não VENDER ordens
Results 1 to 7 of 7

Thread: Quase pronto EA, código funciona para ordens de compra, mas não VENDER ordens

  1. #1
    Olá a todos.

    Eu sou novo neste fórum, mas não é novo para orientar negociação e da EA. Estou muito feliz em ver a atividade no tradingintuitivo e procurando conhecê-lo.

    Estou quase pronto com o meu pequeno EA simples, mas com base na codificação do SL ordermodify para operações breves.

    O que estou tentando alcançar é isso;
    Quando o preço atingir 20pips de lucro: ajuste o SL de -40pip para -20pips. (Reduza o SL ao meio)
    Quando o preço atinge 40 pips de lucro: Trailing Stop entra em ação. (Break )

    Isso funciona perfeitamente bem para posições longas, mas talvez não para posições breves.
    Se alguém puder identificar um errosolução clara, eu ficaria eternamente grato.

    Aqui está o código:

    Código inserido dual newSL; if ((Bid-OrderOpenPrice ()) gt; = 200 * Point) newSL = OrderOpenPrice () - 200 * Ponto; if ((Bid-OrderOpenPrice ()) gt; = 400 * Point) newSL = Lance- (TrailingStop * Ponto); newSL = NormalizeDouble (newSL, Dígitos); if (newSLgt; OrderStopLoss ()) OrderModify (OrderTicket (), OrderOpenPrice (), newSL, OrderTakeProfit (), 0, verde); retorno (0); else/move para a posição breve se ((OrderOpenPrice () - Ask) gt; = 200 * Point) newSL = OrderOpenPrice () 200 * Point; if ((OrderOpenPrice () - Ask) gt; = 400 * Ponto) newSL = (TrailingStop * Ponto) Ask; newSL = NormalizeDouble (newSL, Dígitos); if (newSLlt; OrderStopLoss ()}
    Obrigado antecipadamente
    Oddvin

  2. #2

    if ((OrderOpenPrice () - Ask) gt; = 200 * Estágio) newSL = OrderOpenPrice () 200 * Estágio; if ((OrderOpenPrice () - Ask) gt; = 400 * Estágio) newSL = (TrailingStop * Estágio) Ask;
    Talvez isso realmente seja um erro de digitação e tenha que ser assim: Código inserido newSL = NormalizeDouble (# 91; color = Red # 93; newSL # 91;color # 93;, Digits); PS: Por favor, enrole o seu código em tags CODE ao postar aqui no fórum para preservar a formatação. Além disso, sempre é considerado um estilo ruim (má prontidão) para usar o formato abreviado para uma linha, se for construído. Você deve fazer um favor aos leitores do seu código e usar a sintaxe longa, embora seja permitido deixar de lado as chaves.

  3. #3
    7bit, obrigado pela sua observação. Lamentavelmente, foi um erro de digitação no meu post, mas talvez não seja o motivo por trás do erro de modificação da ordem da VENDA. O que está acontecendo é muito estranho; assim que um pedido SELL é aberto (com SL correto), ele modifica e elimina completamente o SL. Quando o preço atinge o primeiro alvo ( 20pip) a meu favor, ele adiciona um novo SL e se o preço for bacward, elimina o SL novamente. Quanto ao seu outro comentário, eu sou muito novo em se comunicar e, adicionalmente, em fóruns de FX, então, por favor, desculpe-me se eu não estou atrás da integridade comum do fórum. Você quer dizer que eu deveria postar o código EA? Obrigado por sua amável ajuda.

  4. #4

    Você acredita que eu deveria postar todo o código EA? Obrigado por sua amável ajuda.
    O objetivo é permitir que você corrija esse problema com sucesso. Primeiro você deve aprender a fazer uso extensivo deste trabalho Print (), este é o amigo mais importante quando se trata de depuração. Percorra o seu código como se você fosse o pc (onde você sente que o computador vai depois do código) e imprima em cada etapa cada fator que possa ter alguma influência para garantir que o computador faça exatamente o que você acha que faria. Faça isso para que literalmente lhe diga exatamente o que está acontecendo e o que está acontecendo, e se isso for implementado, isso mostrará rapidamente onde está o problema. Impressão de código inserida (entrada instantânea se divisão). Imprimir (o pedido tem este SL:, OrderStopLoss ()); Print (newSL atualmente tem esse respeito:, newSL); Imprimir (chamando OrderModify () com estes valores: newSL, ..., ...);

  5. #5
    Obrigado por entradas e suas dicas. Eu joguei com algumas tweakings sem uso e quase desisti rsrs. Entendi, então, que o ea reconhecia inicialmente o valor newSL (como SELL orders) como zero, alterando instantaneamente a ordem livre do SL. Uma vez eu coloquei esta linha simples no topo: newSL = OrderStopLoss (); , a questão desapareceu. Eu consegui implementar o TrailingStep. Não é grande coisa, mas para um codificador novato como eu é uma grande conquista e muito útil: - RRB- NOVO CÓDIGO: Código Inserido else/move para short standing {newSL = OrderStopLoss (); if ((OrderOpenPrice () - Ask) gt; 200 * Estágio) newSL = OrderOpenPrice () (200 * Estágio); if ((OrderOpenPrice () - Ask) gt; 400 * Estágio) newSL = Perguntar (Ponto * TrailingStop); {newSL = NormalizeDouble (newSL, Digits); if (((OrderStopLoss () - (TrailingStep * Estágio)) gt; newSL) || (OrderStopLoss () == 0)) OrderModify (OrderTicket (), OrderOpenPrice (), novoSL, OrderTakeProfit (), 0, Vermelho); retorno (0); Não sei por que isso é necessário apenas para pedidos de Economia, mas parece funcionar perfeitamente.

  6. #6
    Você está certo, claro. Quando penso nisso, faz sentido. Grande sentimento para resolvê-lo.

  7. #7

    Não sei por que isso é necessário apenas para pedidos de venda, mas parece funcionar perfeitamente.
    Porque um stop loss de 0 significa que não há stop loss. E se comparar o preço atual com o stop loss atual, então 0 sempre será menor em comparação com o preço das ordens de compra, mas quando você tiver uma ordem de venda, 0 significará que a parada está completamente no outro lado (já está muito acima) , então nunca iria rastrear. Você precisa cuidar do 0 separadamente para ordens de mercado, para ordens de compra o 0 está atualmente no lado direito desta negociação. Eu não vi isso ao olhar para o seu código, embora eu tenha tido esse problema eu mesmo há alguns meses. Eu resolvi isso na minha biblioteca de funções e desde então nunca precisei considerar isso.

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.