Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 405

 
Leanid Aladzyeu:

Aqui está o código:

if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)

Não se considera a possibilidade de OrderStopLoss() ser igual a zero. E zero em qualquer caso será menor que a expressãoAsk+(TrailingStop+TrailingStep)*Ponto, e a condição regressará falsa.

 
if((OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)||OrderStopLoss()==0)
Experimente-o e veja se funciona. Ainda não entrei realmente no código.
 

ObrigadoVitalii Ananev,Vladimir Zubov!

Estou a escrever um EA baseado no indicador RSI. O princípio do EA será abrir ordens pelo indicador mas também fechará pelo mesmo indicador (não sei o preço de fecho)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

EncomendarFechar(bilhete,Lote,Perguntar,Slippage,Azul);

return(0);

Esta condição não é cumprida. Porquê? (Abre e fecha imediatamente a ordem, e assim sucessivamente no laço).

Aqui está a questão principal. O meu consultor especializado irá trabalhar com um grande número de ordens e eu preciso de calcular o preço médio, alto e baixo para todas as ordens no mercado, como encontro os preços de fecho de todas as ordens para obter um lucro total e outras operações semelhantes?

 
Leanid Aladzyeu:

Como indicado na referência dá um erro.

Sim!? E que tipo de erro é que isso lhe dá? O que diz o compilador?

 
Leanid Aladzyeu:

ObrigadoVitalii Ananev,Vladimir Zubov!

Estou a escrever um EA baseado no indicador RSI. O princípio do EA será abrir ordens pelo indicador mas também fechará pelo mesmo indicador (não sei o preço de fecho)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

EncomendarFechar(bilhete,Lote,Perguntar,Slippage,Azul);

return(0);

Esta condição não é cumprida. Porquê? (Abre e fecha imediatamente a ordem, e assim sucessivamente no laço).

Aqui está a questão principal. O meu consultor especializado irá trabalhar com um grande número de ordens e eu preciso de calcular o preço médio, alto e baixo para todas as ordens no mercado, como encontro os preços de fecho de todas as ordens para obter um lucro total e outras operações semelhantes?

O preço de fecho de uma posição não será conhecido até que a posição seja fechada. Depois disso, pode descobrir o preço de fecho na história das negociações com a função OrderClosePrice().

Abre e fecha imediatamente a posição, porque a condição de fecho é cumprida. Verificar a lógica da condição de fecho. Tente escrevê-lo desta forma para começar:

if(OrderType()==OP_BUY && (irsa <=20 || irsa >=40))
{
  OrderClose(ticket,Lot,Ask,Slippage,Blue);

 return(0); 
}

Ler referência sobre a prioridade dos cálculos de expressões lógicas.

"É preciso calcular o preço médio, alto e baixo para todas as encomendas no mercado" - Desculpe, de que preço estamos a falar? O preço da encomenda em aberto? O preço actual de um par de moedas? O preço quando o lucro total de todas as posições abertas será alcançado sem quaisquer perdas?

 
Tapochun:

Sim!? E que tipo de erro é que isso dá? O que diz o compilador?

Lamento, não há erro, mas o método da amostra não funciona para mim (recebo erros com o arrasto).
 
Vitalii Ananev:

O preço de fecho da posição não será conhecido até que a posição seja fechada. A função OrderClosePrice() pode então ser encontrada no histórico de transacções.

Abre e fecha imediatamente as posições, porque a condição de fechamento é cumprida. Verificar a lógica da condição de fecho. Tente escrevê-lo desta forma para começar:

Leia a ajuda sobre a prioridade dos cálculos de expressões lógicas.

Bem, como estar dentro por exemplo com uma grelha, é necessário um TP total ou (e) o preço total.

Talvez haja um ou mais amortecedores onde o preço deva ser guardado ou talvez o próprio indicador tenha um amortecedor onde o preço em aberto da última encomenda seja guardado (e a partir daí pode tomar e guardar o preço no nosso amortecedor global)

 
Leanid Aladzyeu:

Se estabelecermos uma grelha, por exemplo, precisaremos de um TP total ou (e) um preço total.

Talvez haja um ou mais amortecedores para guardar o preço ou no próprio indicador talvez haja um amortecedor onde o preço de abertura da última encomenda é guardado (e a partir daí podemos levá-lo e guardá-lo no nosso amortecedor global)

Recomendo que se comece a estudar a língua com o livro de texto Kovalev (pode encontrá-lo no nosso site). É claro que está um pouco ultrapassado, mas em combinação com a documentação tudo ficará bem!
 
Leanid Aladzyeu:

ObrigadoVitalii Ananev,Vladimir Zubov!

Estou a escrever um EA baseado no indicador RSI. O princípio do EA será abrir ordens pelo indicador mas também fechará pelo mesmo indicador (não sei o preço de fecho)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

EncomendarFechar(bilhete,Lote,Perguntar,Slippage,Azul);

return(0);

Esta condição não é cumprida. Porquê? (Abre e fecha imediatamente a ordem, e assim sucessivamente no laço).

Aqui está a questão principal. Se a sua EA vai trabalhar com um grande número de ordens e precisa de calcular o preço médio, alto e baixo para todas as ordens no mercado, como encontra o preço de fecho de todas as ordens para obter um lucro total e outras operações semelhantes?

Está a tentar fechar uma compra num asc, se não entende as coisas elementares - leia a documentação.

Ou está habituado à regra do polegar?

 
Leanid Aladzyeu:

Se estabelecermos uma grelha, precisaremos de um TP total ou (e) de um preço total.

Talvez haja um ou mais amortecedores para guardar o preço ou no próprio indicador talvez haja um amortecedor onde o preço de abertura da última encomenda é guardado (e a partir daí podemos levá-lo e guardá-lo no nosso amortecedor global)

Deve-se calcular o preço médio aberto para todas as posições. E com base nisso, calcular o Total Take Profit para todas as posições. O preço aberto das posições é conhecido (OrderOpenPrice()). Somar tudo e dividir pelo número de posições em aberto.