Ordem de parada/limite muito próxima do preço real
6 respostas
sansay
7 anos atrás #116332
Veja a captura de tela em anexo.
Quando vi pela primeira vez esse registro do EA, "ordem de parada/limite muito próxima do preço real", pensei imediatamente "OK, o nível de parada está incorreto". Então, editei o código e alterei o valor de MinDistanceOfStopFromPrice para 70, pois essa era a especificação do par USDMXN. No entanto, como você pode ver na captura de tela, isso não resolveu o problema. Na verdade, eu até tentei 100, 200, 700, mas não mudou nada.
Qualquer ajuda seria muito apreciada.
sansay
7 anos atrás #141561
Qual captura de tela?
Tenho o problema oposto, preciso que algumas ordens Stop_limit estejam mais próximas do preço.
Isso é estranho, tenho certeza de que anexei o arquivo png. Vamos tentar novamente...
tomas262
7 anos atrás #141585
Isso acontece quando você faz um pedido ou tenta modificar o PT, o SL ou o preço do pedido?
sansay
7 anos atrás #141594
Eu não faço nada, é um EA criado com o SQ. Ele faz isso e acho que o código é adicionado a cada um dos EAs que ele cria. A diferença nesse caso é que esse corretor forex específico tem um nível de 70 stops, enquanto outros têm 0.
É claro que aqueles com 0 não acionam nada.
O código está em funcionamento:
void openPosition(int tradeDirection) {
…
sansay
7 anos atrás #141656
Esta manhã, descobri que ele tentou e não conseguiu colocar uma ordem de parada de venda. Veja o registro em anexo.
tomas262
7 anos atrás #141681
Pergunto isso porque você colocou a pergunta no tópico "EA Wizard"
Você pode publicar a estratégia aqui ou me enviar para [email protected] para que eu possa tentar testá-lo também no USDMXN
sansay
7 anos atrás #141685
Na verdade, meus testes me permitiram encontrar o problema e eu corrigi o código.
O problema é que o servidor do corretor verifica se há:
curto: orderPrice < currentPrice - stopLevel
longo: orderPrice > currentPrice + stopLevel
Se a condição não for atendida, a solicitação de modificação falhará. Atualmente, o código ajusta o stopLoss e o targetProfit para que estejam pelo menos dentro do nível de stop do revendedor + ou - do orderPrice. E isso faz com que o teste falhe sempre que o orderPrice for exatamente CurrentPrice -+ stopLevel. Portanto, a solução foi simplesmente adicionar ou subtrair 1 pip. Aqui está a alteração do código:
Nos parâmetros ocultos, declare:
double stopOffset = 0,0001;
Adicionar e passar o parâmetro tradeDirection à assinatura e à chamada do método openOrderWithErrorHandling:
int openOrderWithErrorHandling(int tradeDirection, int orderType, double orderLots, double openPrice, double stopLoss, double profitTarget, string comment, int magicNumber) {
No mesmo método, adicione o código em verde:
Visualizando 6 respostas - 1 até 6 (de um total de 6)