Muito útil. Muito obrigado.
Steven
O exemplo final falha com um erro.
Programadores, ajudem com o mql5, por favor!!!
É possível usar apenas uma função trailing comum, como no mql4, sem nenhuma classe? Assim como, por exemplo, a função TradeSizeOptimised é implementada em Moving Averages.mq5.
Já pesquisei tudo, em exemplos, artigos, fórum - não encontrei nada. Já estou completamente perdido.... Talvez alguém tenha uma variante pronta, ficarei muito grato!!! - Gostaria de participar do campeonato.
Programadores, ajudem com o mql5, por favor!!!
É possível usar apenas uma função trailing comum, como no mql4, sem nenhuma classe? Assim como, por exemplo, a função TradeSizeOptimised é implementada em Moving Averages.mq5.
Já pesquisei tudo, em exemplos, artigos, fórum - não encontrei nada. Já estou completamente perdido.... Talvez alguém tenha uma variante pronta, ficarei muito grato!!! - Gostaria de participar do campeonato.
aqui está
int TrailingStop() { if(PositionSelect(Symbol())) // selecionar posição { //MqlTradeRequest m_request;// declarar a estrutura da solicitação para o servidor //MqlTradeResult m_result;// declarar a estrutura de resposta do servidor double Bid = SymbolInfoDouble(Symbol(), SYMBOL_BID); // gravar o preço do lance na variável double Ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK); // gravar na variável ask price double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN); // escrever o preço de abertura da posição na variável double PositionSL=PositionGetDouble(POSITION_SL); // gravar o nível de stop loss na variável double PositionTP=PositionGetDouble(POSITION_TP); // gravar o nível de lucro na variável if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) // definir o tipo de posição { if(TrailWhileMinus==true || Bid-OpenPrice>_Point*Trail) // não arrastamos até atingirmos o ponto de equilíbrio com a primeira transferência de parada { if(Bid-PositionSL>Trail*_Point) //condição básica para a necessidade de mover o stop loss { //--- gravar dados na estrutura request.action = TRADE_ACTION_SLTP; request.symbol = Symbol(); request.sl = NormalizeDouble(Bid-Trail*_Point,_Digits); request.tp = NormalizeDouble(PositionTP,_Digits); //--- return(OrderSend(request,result)); // enviar a solicitação ao servidor } } } else { if(TrailWhileMinus==true || OpenPrice-Ask>_Point*Trail) // não arrastamos até atingirmos o ponto de equilíbrio com a primeira transferência de parada { if(PositionSL-Ask>Trail*_Point) //condição básica para a necessidade de mover o stop loss { //--- gravar dados na estrutura request.action = TRADE_ACTION_SLTP; request.symbol = Symbol(); request.sl = NormalizeDouble(Ask+Trail*_Point,_Digits); request.tp = NormalizeDouble(PositionTP,_Digits); //--- return(OrderSend(request,result)); // enviar a solicitação ao servidor } } } } return(0); }
Aqui está
Presumo (provavelmente não sem razão) que é melhor passar o resultado como um parâmetro :)
Caso contrário, não há como analisá-lo. De alguma forma, isso não é bom...
PS
Eu também criaria duas funções - TrailingStopBuy e TrailingStopSell
Presumo (provavelmente não sem razão) que é melhor passar o resultado como um parâmetro :)
Caso contrário, não há como analisá-lo. De alguma forma, isso não é bom...
PS
Eu também criaria duas funções - TrailingStopBuy e TrailingStopSell.
Bem, eu dei um exemplo ao homem, porque ele já fez seu cérebro escrever um trailing comum, e então o deixei pensar um pouco, que funcionaria sem erros, no testador, em princípio, e esse design funciona bem. na vida real não verificou
Aqui está.
sergey1294,
Mais uma vez obrigado, tudo funciona!!!
Há mais uma pequena dúvida: como adicionar uma verificação por número mágico à função? Estou tentando inserir essa verificação:
if (OrderGetInteger(ORDER_MAGIC)==EA_Magic) { ..... }....., mas isso interrompe toda a negociação.....
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Como Criar o Seu Próprio Limite Móvel foi publicado:
A regra básica do negociante - aumente o lucro, corte as despesas! Este artigo considera uma das técnicas básicas, permitindo seguir esta regra - mover o nível de parada de proteção (Nível Stop loss) após aumentar o lucro da posição, ou seja - nível do Limite móvel. Você encontrará o procedimento passo-a-passo para criar uma classe para o limite móvel nos indicadores SAR e NRTR. Todos poderão inserir este limite móvel em seus experts ou usá-los independentemente para controlar posições em suas contas.
Autor: Dmitry Fedoseev