Maldito erro 130 para o inferno - página 2

 
cloudbreaker wrote >>

Bem, posso afirmar categoricamente que Seawolf e Ruptor estão falando fora de sua retaguarda coletiva.

Para um pedido OP_BUY, você está absolutamente correto ao usar o preço Ask para gerar seu preço de entrada e parar.

Na verdade, Seawolf e Ruptor estão corretos.

Você entra uma ordem longa pelo preço ASK e sai no BID, reverte isso para uma ordem de venda. Como um stop-loss ou take-profit é uma saída, você precisa usar o preço BID para calculá-los em uma ordem longa.

Este é um ponto de confusão bastante comum que muitas vezes é negligenciado, especialmente quando se trata de spreads pequenos, já que não há muita diferença entre o preço ASK e BID. Às vezes o código funcionará bem se suas paradas e deslizamentos não forem apertados, mas se você estiver escalando ou fazendo qualquer outra coisa que requeira precisão, então você precisa usar estas diretrizes para um preço adequado na entrada e saída.

-

Para um pedido longo, ou seja, OP_BUY, OP_BUYSTOP, ou OP_BUYLIMIT:

Preço de entrada = ASK

Preço à saída (stop-loss, take-profit ou OrderClose(...) ) = BID

-

Para uma ordem curta, ou seja, OP_SELL, OP_SELLSTOP, ou OP_SELLLIMIT:

Preço de entrada = BID

Preço à saída (stop-loss, take-profit ou OrderClose(...) ) = ASK

-

Tovan

 
tovan:

Na verdade, Seawolf e Ruptor estão corretos.

Você entra um pedido longo ao preço ASK e sai no BID, reverte isso para um pedido de venda. Como um stop-loss ou take-profit é uma saída, você precisa usar o preço BID para calculá-los em uma ordem longa.

Este é um ponto de confusão bastante comum que é freqüentemente negligenciado, especialmente quando se trata de pequenos spreads, já que não há muita diferença entre o preço ASK e BID. Às vezes o código funcionará bem se suas paradas e deslizamentos não forem apertados, mas se você estiver escalando ou fazendo qualquer outra coisa que requeira precisão, então você precisa usar estas diretrizes para um preço adequado na entrada e saída.

-

Para um pedido longo, ou seja, OP_BUY, OP_BUYSTOP, ou OP_BUYLIMIT:

Preço de entrada = ASK

Preço à saída (stop-loss, take-profit ou OrderClose(...) ) = BID

-

Para uma ordem curta, ou seja, OP_SELL, OP_SELLSTOP, ou OP_SELLLIMIT:

Preço de entrada = BID

Preço à saída (stop-loss, take-profit ou OrderClose(...) ) = ASK

-

Tovan

Entendido, vejo exatamente o que você está dizendo - e humildes desculpas ao Seawolf e ao Ruptor.

Onde eu fecho ordens normalmente ou opero meu próprio stoploss furtivo (que apenas invoca minha função normal de fechar ordens), estou plenamente consciente de usar Bid para OP_BUYs e Ask for OP_SELLs.

Entretanto, ao abrir minhas ordens, eu sempre usei apenas os preços de entrada como minha linha de base para calcular o stoploss e nunca tive nenhum problema. Posso ver como a combinação de um spread solto e um stop apertado poderia causar um erro de stop inválido.

Eu acrescentaria que existem muitas amostras que fazem isso da mesma forma que eu faço.

Se não tivermos paradas apertadas, acho que a única diferença entre as duas técnicas que a maioria de nós tenderá a experimentar é no dinheiro realmente ganho ou perdido, embora como ambos os tipos de ordem seriam parados "a quantidade de spread mais cedo", eles tenderiam a cancelar um ao outro se o spread fosse razoavelmente estável.

Esta lógica é válida?

 
cloudbreaker wrote >>

Entendido, vejo exatamente o que você está dizendo - e humildes desculpas ao Seawolf e ao Ruptor.

Onde eu fecho ordens normalmente ou opero meu próprio stoploss furtivo (que apenas invoca minha função normal de fechar ordens), estou plenamente consciente de usar Bid para OP_BUYs e Ask for OP_SELLs.

Entretanto, ao abrir minhas ordens, eu sempre usei apenas os preços de entrada como minha linha de base para calcular o stoploss e nunca tive nenhum problema. Posso ver como a combinação de um spread solto e um stop apertado poderia causar um erro de stop inválido.

Eu acrescentaria que existem muitas amostras que fazem isso da mesma forma que eu faço.

Se não tivermos paradas apertadas, acho que a única diferença entre as duas técnicas que a maioria de nós tenderá a experimentar é no dinheiro realmente ganho ou perdido, embora como ambos os tipos de ordem seriam parados "a quantidade de spread mais cedo", eles tenderiam a cancelar um ao outro se o spread fosse razoavelmente estável.

Esta lógica é válida?

Bem visto. Concordo que existem muitos outros EA por aí que o fazem da maneira que você sugeriu.

Isto ilustra alguns pontos de vista diferentes que assumimos com base na forma como nossa EA trabalha. Eu, por exemplo, tenho a tendência de definir meu stop-loss com bastante rigor. Portanto, geralmente estou mais preocupado com onde a ordem vai falhar do que com o quanto eu perderia se ela falhar. Por outro lado, porém, se você estiver mais interessado no que perderia (ou ganharia) quando a ordem fechar, então faz sentido fazer todos os cálculos sobre o preço de abertura ao invés do preço de fechamento. Isso só se torna um problema se seu stop-loss ou take profit for apertado (dentro de poucos pips, dependendo do par). Nesse caso, a EA precisaria fazer algumas verificações extras com MODE_STOPLEVEL (como você sugeriu acima) para ter certeza de que você pode realmente concluir a transação.

Eu estava falando principalmente de uma posição purista, mas posso ver alguns argumentos válidos para executá-la de ambas as maneiras.

- Tovan

 
tovan:

Pontos positivos. Concordo que existem muitos outros EA por aí que o fazem da maneira que você sugeriu.

Isto ilustra alguns pontos de vista diferentes que assumimos com base na forma como nossa EA trabalha. Eu, por exemplo, tenho a tendência de definir meu stop-loss bastante apertado. Portanto, geralmente estou mais preocupado com onde a ordem vai falhar do que com o quanto eu perderia se ela falhar. Por outro lado, porém, se você estiver mais interessado no que perderia (ou ganharia) quando a ordem fechar, então faz sentido fazer todos os cálculos sobre o preço de abertura em vez do preço de fechamento. Isso só se torna um problema se seu stop-loss ou take profit for apertado (dentro de poucos pips, dependendo do par). Nesse caso, a EA precisaria fazer algumas verificações extras com MODE_STOPLEVEL (como você sugeriu acima) para ter certeza de que você pode realmente concluir a transação.

Eu estava falando principalmente de uma posição purista, mas posso ver alguns argumentos válidos para executá-la de ambas as maneiras.

- Tovan

Tovan está mais que correto porque também recebo um erro 130

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Meu número de bilhete é ", OrderTicket(), " e minha configuração de stop loss é ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // novo código
}
}
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}

if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop-Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Meu número de bilhete é ", OrderTicket(), " e minha configuração de stop loss é ", DoubleToStr(Bid-Point*TrailingStop,Digits)); // novo código
}

}


é o erro 130 a ver com a entrada e saída - ou poderia ser por causa de um deslizamento

 

Na verdade, parece que todos vocês estão um pouco confusos. Alguns de vocês estão confundindo duas coisas totalmente diferentes.

As perguntas a serem feitas são:

1) A que preço as ordens de Compra e Venda TP e SL são executadas. Licite ou Pergunte?

2) Qual o preço que usamos para calcular TP e SL para compra e venda. Licite ou Pergunte?

tovan wrote >>

Na verdade, Seawolf e Ruptor estão corretos.

Você entra uma ordem longa pelo preço ASK e sai no BID, reverte isso para uma ordem de venda.

//---VANGROSH --- Correto mas confuso. Melhor dizer que seu pedido longo TP ou SL será executado quando seu TP Price ou SL Price == o preço BID. Isto é o que você VÊ quando vê seu pedido atingir TP ou SL, mas isto não tem nada a ver com a forma como você calcula esses preços.

Uma vez que um stop-loss ou take-profit é uma saída que você precisa usar o preço BID para calculá-los em uma ordem longa.

//---VANGROSH--- Desculpe, mas isso está errado. Você está confundindo o que você Vê - Que preço desencadeará a saída, com que preço você usa para calcular os preços TP e SL.

Basta pensar um pouco sobre isso. Faça um pedido de compra. Todos vocês concordam que nós compramos ao preço ASK - sem problemas. Digamos que TP é 15 pontos em um Pedido de Compra, e o spread é de 5 pontos. Se você definir o TP 15 pontos acima do preço BID, então seu TP será apenas 10 pontos porque o spread é ABAIXO o preço ASK e ABOVO o preço BID. Não faz sentido calcular 15 pontos de TP a partir de um preço 5 pontos ABAIXO do seu preço de entrada (ASK). Você deve sempre calcular o TP ou SL a partir do preço em que você inseriu o pedido. ASK for BUY, BID for SELL.

É fácil se você apenas pensar a que preço seu TP ou SL será atingido. Em uma ordem de compra, entrando com o preço ASK, a que preço seu TP será atingido? Ao preço BID. Se seu TP estava a 1,2450 e você definir seu TP a partir do preço ASK, então quando a linha ASK estiver a 1,2450 agora você está apenas começando a pagar o spread. Somente quando a linha BID estiver a 1,2450, seu TP será atingido e seu pedido será fechado com 15 pontos de lucro.

O mesmo com o SL. Se o seu SL for 30 pontos, isso significa 30 pontos a partir do preço de entrada. Na compra, o preço de entrada é ASK. Se você utiliza o preço BID - 30 pontos, então você está excluindo o spread em seu SL, então seu SL real será de fato 35 pontos do preço de entrada (ASK) porque o preço BID é 5 pontos mais baixo (o spread), então o preço ASK. Você receberá 35 pontos do SL porque seu SL PREÇO está agora 35 pontos abaixo de seu PREÇO ENTRY, que era o que para uma Ordem de Compra?

Eu só faço isso há alguns meses e o que me ajudou foi apenas observar a que preço TP e SL são atingidos quando negociamos manualmente e, em seguida, para o meu primeiro EA, eu apenas verifiquei duas vezes minhas linhas TP e SL em um pedido EA aberto usando a ferramenta de retícula e também verifiquei os preços de TP e SL em alguns pedidos EA fechados para ter certeza de que os pontos TP e SL eram exatos.

A única vez que você precisa fazer diferente é para uma parada de rastreamento. Para uma ordem de compra, você usa o preço BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque você quer que seu TS seja X pontos abaixo do preço que fechará o pedido se for atingido, que é o preço BID.

Para vender você usa ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque você quer que seu TS seja X pontos acima do preço que fechará o pedido se for atingido, que é o preço ASK.

Lembre-se que é o preço BID que fechará seus pedidos de COMPRA TP e SL,

E é o preço ASK que encerrará seus pedidos de TP e SL SELL.

 
vangrosh:

Na verdade, parece que todos vocês estão um pouco confusos. Alguns de vocês estão confundindo duas coisas totalmente diferentes.

As perguntas a serem feitas são:

1) A que preço as ordens de Compra e Venda TP e SL são executadas. Licite ou Pergunte?

2) Qual o preço que usamos para calcular TP e SL para compra e venda. Licite ou Pergunte?

Basta pensar um pouco sobre isso. Faça um Pedido de Compra. Todos vocês concordam que compramos ao preço ASK - sem problemas. Digamos que TP é 15 pontos em um Pedido de Compra, e o spread é de 5 pontos. Se você definir o TP 15 pontos acima do preço BID, então seu TP será apenas 10 pontos porque o spread é ABAIXO o preço ASK e ABOVO o preço BID. Não faz sentido calcular 15 pontos de TP a partir de um preço 5 pontos ABAIXO do seu preço de entrada (ASK). Você deve sempre calcular o TP ou SL a partir do preço em que você inseriu o pedido. ASK for BUY, BID for SELL.

É fácil se você apenas pensar a que preço seu TP ou SL será atingido. Em um pedido de COMPRA, entrando com o preço ASK, a que preço seu TP será atingido? Pelo preço BID. Se seu TP estava a 1,2450 e você definir seu TP a partir do preço ASK, então quando a linha ASK estiver a 1,2450 agora você está apenas começando a pagar o spread. Somente quando a linha BID estiver a 1,2450, seu TP será atingido e seu pedido será fechado com 15 pontos de lucro.

O mesmo com o SL. Se o seu SL for 30 pontos, isso significa 30 pontos do preço de entrada. Na compra, o preço de entrada é ASK. Se você usar o preço BID - 30 pontos, então você estará excluindo o spread em seu SL, então seu SL real será de fato 35 pontos do preço de entrada (ASK) porque o preço BID é 5 pontos mais baixo (o spread), então o preço ASK. Você receberá 35 pontos do SL porque seu SL PREÇO está agora 35 pontos abaixo de seu PREÇO ENTRY, que era o que para uma Ordem de Compra?

Só estou fazendo isso há alguns meses e o que me ajudou foi apenas observar a que preço TP e SL são atingidos quando negociamos manualmente e depois, para o meu primeiro EA, eu apenas verifiquei duas vezes minhas linhas TP e SL em um pedido EA aberto usando a ferramenta de retícula e também verifiquei os preços de TP e SL em alguns pedidos EA fechados para ter certeza de que os pontos TP e SL eram exatos.

A única vez que você precisa fazer diferente é para uma parada móvel. Para um pedido de compra, você usa o preço BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque você quer que seu TS seja X pontos abaixo do preço que fechará o pedido se for atingido qual é o preço BID.

Para vender você usa ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque você quer que seu TS seja X pontos acima do preço que fechará o pedido caso seja atingido, que é o preço ASK.

Lembre-se que é o preço BID que fechará seus pedidos de COMPRA TP e SL,

E é o preço ASK que encerrará seus pedidos de TP e SL SELL.

Vangrosh

obrigado pela contribuição

você pode me ajudar a ficar de pé

é isto correto

eu faço um EA com trilha automática


if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // coloque um TP e SL
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // coloque TP
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // verifique verdadeiro
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // se verdadeiro modificar ordem
Print("Error_Modify - ",GetLastError()));
else str=StringConcatenate("\n My ticket number is ", OrderTicket(), " and my stop loss setting is ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // novo código
}
}
}
 
vangrosh:

Na verdade, parece que todos vocês estão um pouco confusos. Alguns de vocês estão confundindo duas coisas totalmente diferentes.

As perguntas a serem feitas são:

1) A que preço as ordens de Compra e Venda TP e SL são executadas. Licite ou Pergunte?

2) Qual o preço que usamos para calcular TP e SL para compra e venda. Licite ou Pergunte?

Basta pensar um pouco sobre isso. Faça uma Ordem de Compra. Todos vocês concordam que compramos ao preço ASK - sem problemas. Digamos que TP é 15 pontos em um Pedido de Compra, e o spread é de 5 pontos. Se você definir o TP 15 pontos acima do preço BID, então seu TP será apenas 10 pontos porque o spread é ABAIXO o preço ASK e ABOVO o preço BID. Não faz sentido calcular 15 pontos de TP a partir de um preço 5 pontos ABAIXO do seu preço de entrada (ASK). Você deve sempre calcular o TP ou SL a partir do preço em que você inseriu o pedido. ASK for BUY, BID for SELL.

É fácil se você apenas pensar a que preço seu TP ou SL será atingido. Em uma ordem de compra, entrando com o preço ASK, a que preço o seu TP será atingido? Pelo preço BID. Se seu TP estava a 1,2450 e você definir seu TP a partir do preço ASK, então quando a linha ASK estiver a 1,2450 agora você está apenas começando a pagar o spread. Somente quando a linha BID estiver a 1,2450, seu TP será atingido e seu pedido será fechado com 15 pontos de lucro.

O mesmo com o SL. Se o seu SL for 30 pontos, isso significa 30 pontos a partir do preço de entrada. Na compra, o preço de entrada é ASK. Se você usar o preço BID - 30 pontos, então você estará excluindo o spread em seu SL, então seu SL real será de fato 35 pontos do preço de entrada (ASK) porque o preço BID é 5 pontos mais baixo (o spread), então o preço ASK. Você receberá 35 pontos do SL porque seu SL PREÇO está agora 35 pontos abaixo de seu PREÇO ENTRY, que era o que para uma Ordem de Compra?

Eu só faço isso há alguns meses e o que me ajudou foi apenas observar a que preço TP e SL são atingidos quando negociamos manualmente e, em seguida, para o meu primeiro EA, eu apenas verifiquei duas vezes minhas linhas TP e SL em um pedido EA aberto usando a ferramenta de retícula e também verifiquei os preços de TP e SL em alguns pedidos EA fechados para ter certeza de que os pontos TP e SL eram exatos.

A única vez que você precisa fazer diferente é para uma parada de rastreamento. Para uma ordem de compra, você usa o preço BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque você quer que seu TS seja X pontos abaixo do preço que fechará o pedido se for atingido, que é o preço BID.

Para vender você usa ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque você quer que seu TS seja X pontos acima do preço que fechará o pedido se for atingido, que é o preço ASK.

Lembre-se que é o preço BID que fechará seus pedidos de COMPRA TP e SL,

E é o preço ASK que encerrará seus pedidos de TP e SL SELL.

Vangrosh, como aludi em minha resposta à Tovan, desde que você saiba exatamente o que está fazendo, você pode fazer de qualquer maneira. Estamos longe de estarmos confusos.

Isto é, dado que você sabe o preço de entrada, o limite de parada do corretor e o spread você pode conseguir o stoploss 'absoluto' que você quer (um que também não produzirá 130 erros!) fazendo com que seja 'relativo' ou pedir ou licitar e ajustando-o conforme necessário.

Prefiro fazê-lo da maneira que você descreve a propósito.

 
cloudbreaker wrote >>

Vangrosh, como aludi em minha resposta a Tovan, desde que você saiba exatamente o que está fazendo, você pode fazer de qualquer maneira. Estamos longe de estarmos confusos.

Isto é, dado que você conhece o preço de entrada, o limite de parada do corretor e o spread, você pode conseguir o stoploss 'absoluto' que você quer (um que também não produzirá 130 erros!) fazendo com que seja 'relativo' ou pedir ou licitar e ajustando-o conforme necessário.

Prefiro fazê-lo da maneira que você descreve a propósito.

Bem, Seawolf disse: "Regra de ouro... se você entra no pedido, você sai com lance, se você entra no Bid, você sai com lance".

Isso não é confuso? Não quero dizer que ele está confuso, quero dizer que para mim o contexto com o qual ele está falando não é claro. Sua Regra de ouro não está correta SE ele estiver falando sobre cálculo de saídas. Quando digo confuso, não estou dizendo que vocês não sabem o que estão fazendo ou que não podem fazer de outra forma - o que eu realmente queria dizer é que a forma como estavam dando instruções era confusa. Por exemplo, a citação acima da Seawolf está correta SE ele estiver falando sobre a que preço os pedidos saem na MT. Eu acho que para alguém que está aprendendo isso você tem que ser muito claro com que contexto você está se referindo, porque há dois contextos básicos quando se ensina sobre TP e SL.

1) O contexto ou ponto de vista que está focando em qual preço (Bid ou Ask) o TP e SL de uma ordem aberta será atingido - o que é uma das primeiras coisas que eu precisava aprender apenas para a negociação manual...

2) O contexto ou ponto de vista que não está focando o número 1 acima, mas sim em que preço (Bid ou Ask) usamos para calcular nosso TP e SL, SE queremos que nossos preços de TP e SL sejam exatos e incluam o spread.

Olhe, eu também sou um novato nisso e é fácil para mim e para outros novatos ficar confuso se as coisas nos forem apresentadas de uma maneira em que o contexto não seja muito claro.

E eu, por exemplo, não sabia no início que havia mais de um contexto no qual se podia ver TP e SL e muitas outras coisas que precisamos entender.

Vangrosh, como eu aludi em minha resposta a Tovan, desde que você saiba exatamente o que está fazendo, você pode fazer de qualquer maneira .

É por isso que eu estava tentando ser o mais claro e contextualizado possível em meu posto. As pessoas apenas aprendendo como eu Não sabemos exatamente o que estamos fazendo e é por isso que precisamos ser ensinados sobre as coisas em seu contexto apropriado.

Em minha experiência parece que muitas vezes se supõe o conhecimento que ainda não temos. Precisamos primeiro conhecer as regras básicas e depois obter alguma experiência. Só depois disso é que saberemos quais "regras" podemos dobrar ou partir.

A propósito, eu não estava me referindo a você em meu posto. Pensei que suas respostas eram, de longe, as mais claras e precisas. E correndo o risco de soar como "beijar bunda", quando se trata de obter as respostas mais claras e precisas neste fórum, suas postagens são algumas das que procuro primeiro. Há apenas cerca de 4 ou 5 pessoas neste fórum que eu encontrei até agora que provaram ser mais consistentemente precisas e que você pode dizer que elas realmente têm mais do que apenas uma pequena experiência por trás delas.

 
vangrosh:

Bem, Seawolf disse: "Regra de ouro... se você entra no ask, você sai com bid, se você entra no Bid você sai com ask".

Isso não é confuso? Não quero dizer que ele está confuso, quero dizer que para mim o contexto com o qual ele está falando não é claro. Sua Regra de ouro não está correta SE ele estiver falando sobre cálculo de saídas. Quando digo confuso, não estou dizendo que vocês não sabem o que estão fazendo ou que não podem fazer de outra forma - o que eu realmente queria dizer é que a forma como estavam dando instruções era confusa. Por exemplo, a citação acima da Seawolf está correta SE ele estiver falando sobre a que preço os pedidos saem na MT. Eu acho que para alguém que está aprendendo isso você tem que ser muito claro com que contexto você está se referindo, porque há dois contextos básicos quando se ensina sobre TP e SL.

1) O contexto ou ponto de vista que está focando em qual preço (Bid ou Ask) o TP e SL de uma ordem aberta será atingido - o que é uma das primeiras coisas que eu precisava aprender apenas para a negociação manual...

2) O contexto ou ponto de vista que não está focando o número 1 acima, mas sim em qual preço (Bid ou Ask) usamos para calcular nosso TP e SL, SE queremos que nossos preços de TP e SL sejam exatos e incluam o spread.

Olhe, eu também sou um novato nisso e é fácil para mim e para outros novatos ficar confuso se as coisas nos forem apresentadas de uma maneira em que o contexto não seja muito claro.

E eu, por exemplo, não sabia no início que havia mais de um contexto no qual se podia ver TP e SL e muitas outras coisas que precisamos entender.

Vangrosh, como eu aludi em minha resposta a Tovan, desde que você saiba exatamente o que está fazendo, você pode fazer de qualquer maneira .

É por isso que eu estava tentando ser o mais claro e contextualizado possível em meu posto. As pessoas apenas aprendendo como eu Não sabemos exatamente o que estamos fazendo e é por isso que precisamos ser ensinados sobre as coisas em seu contexto apropriado.

Em minha experiência parece que muitas vezes se supõe o conhecimento que ainda não temos. Precisamos primeiro conhecer as regras básicas e depois obter alguma experiência. Só depois disso é que saberemos quais "regras" podemos dobrar ou partir.

A propósito, eu não estava me referindo a você em meu posto. Pensei que suas respostas eram, de longe, as mais claras e precisas. E correndo o risco de soar como "beijar rabos", quando se trata de obter as respostas mais claras e precisas neste fórum, suas postagens são algumas das que eu procuro primeiro. Há apenas cerca de 4 ou 5 pessoas neste fórum que eu encontrei até agora que provaram ser mais consistentemente precisas e que você pode dizer que elas realmente têm mais do que apenas uma pequena experiência por trás delas.

Obrigado pelo elogio; muito apreciado.

Quando eu disse que não estávamos confusos, eu estava realmente apenas falando por mim e por Tovan, pois parece que operamos em uma banda de ondas semelhante.

Desculpas se meu posto soou abrupto de alguma forma; certamente não era para ser e eu não estava me sentindo assim na época (embora eu tenha meus momentos...).

Minha abordagem geral neste fórum (quando não estou procurando ajuda) é tentar o melhor para ajudar aqueles que estão tentando aprender uma habilidade de programação. Eu realmente não tenho tempo para as pessoas que querem que tudo seja feito por elas, apenas chegando ao fórum com seu primeiro post intitulado "Eu preciso de uma EA de sucesso". Gente como você é o motivo pelo qual eu continuo interessado aqui, e você provavelmente sabe mais sobre negociação forex do que eu.

Um pouco de experiência - sou um programador desde o início dos anos 80, mas desisti há alguns anos para trabalhar como piloto de helicóptero comercial. No entanto, dada a falta de vôo por minha empresa este ano, tenho escrito EAs para um amigo meu que é dono de uma empresa de pesquisa caloura. Adotamos a teoria do caos (em vez de conhecimento de mercado) para negociar e já estamos negociando os EAs de forma muito lucrativa em nome de um fundo de hedge bem conhecido. Eu realmente aprecio isso!

Boa sorte.

 
delcor wrote >>

Vangrosh

obrigado pela contribuição

você pode me ajudar a ficar de pé

é isto correto

eu faço um EA com trilha automática

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
se (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // coloque um TP e SL}

Você deve definir sua base TP e SL ao enviar seu pedido ou então fazer a linha acima apenas uma vez. Se você fizer a linha acima

em cada tick então você também receberá OrderModify error 1 que acontecerá quando o valor do SL existente for o mesmo

como a nova significa que o preço ainda não mudou - SL é o mesmo de antes.
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // lugar TP

{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // verifique verdadeiro

Isto parece bem. E eu acho que o que você está fazendo acrescentando um ponto (+Point) é uma boa idéia. Eu faço a mesma coisa.

mas em um lugar e uma maneira diferentes, mas isso é para resolver um problema diferente, um problema que você pode ter quando a duplicação de pares não funciona direito, então você acrescenta

um Ponto para garantir que o preço seja maior ou menor - ou então sua Trailing stop não será executada às vezes.

O resto parece correto.
{

if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // se realmente modificar a ordem
Print("Error_Modify - ",GetLastError()));
else str=StringConcatenate("\n My ticket number is ", OrderTicket(), " and my stop loss setting is ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // novo código
}
}
}

Aqui está o exemplo do trailing stop da MQ EA MACD Sample.mq4

              // check for trailing stop
              if( TrailingStop>0)  
              {                 
                 if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                    if((OrderStopLoss()>(Ask+Point* TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }

Mas eu descobri que eu receberia erros deste código por causa da conhecida questão de, ao se emparelhar, dobrar como acima, sua cláusula maior que > às vezes avaliaria como VERDADEIRO

mesmo quando os preços são exatamente os mesmos - você Imprime() os preços e eles são os mesmos. Você pode fazer uma busca em duplas de pares para obter os detalhes. Há soluções como a função CompareDoubles() encontrada em stdlib.mq4 (na pasta bibliotecas), ou usando NormalizeDouble() em lugares onde realmente não deveria ser necessário, mas descobri que neste caso simplesmente adicionar um Ponto como você fez é uma boa maneira de fazê-lo. Mas eu não testei a maneira como você o faz, então não tenho certeza se está correto, mas parece estar tudo bem. Eu lhe darei o código que uso em minha EA no próximo post.

Razão: