Ajuda na codificação - página 747

 
Espero que esta tela mostre exatamente o que eu quero :)
Arquivos anexados:
 
skyler1234321:
Espero que esta tela mostre exatamente o que eu quero :)

Se você estiver usando HighLowCandle > 0, então ela está ausente em uma vela fechada.

Defina o UseBarDirection para true e verifique então

 

Sim, eu o tenho em configurações. Existem minhas configurações que testei

Meybe em código, há algo errado. Você poderia verificar lá dentro?

Arquivos anexados:
2.PNG  25 kb
 
cja:

Existe alguma forma simples de acessar os dados indicadores MT5 para uma exibição em gráficos. Sei que inicialmente quando o MT5 saiu pela primeira vez o código era bastante complicado para apenas um indicador simples e estou esperançoso que com a última versão do MT5 algo possa ter mudado?

Por exemplo, se eu quiser mostrar uma cruz de MA na exibição do objeto do gráfico com o MT4 que eu uso

double slow_MA = iMA(Symbol(),0,100,0,MA_MODE,MA_PRICE,0);

double fast_MA = iMA(Symbol(),0,35,0,MA_MODE,MA_PRICE,0);

se (ma_fast > ma_slow){ col = clrLime;}

if (ma_fast < ma_slow) {col = clrRed;}

else {col = clrGray;}


existe algum equivalente simples no MT5? ou tenho que escrever linhas de código indefinidas para acessar estas informações?

Olá cja

Primeiro para agradecer por sua visita de volta ao TSD em 2017, depois Feliz ano novo para você, pois você é muito raro visitar o TSD, mas muito velho, membro sênior e especialista :)

cumprimentos

 

Estou tentando mudar esta rotina de Trailing com Step.
Preciso sair de uma parada e não da entrada de compra/venda.

por exemplo: (operação de compra)

StopLoss: 250 (em pontos)
Traling :150 (em pontos)
TralingStep: 50 (em pontos)


BUY Entrance=> 1000
StopLoss=>750 (=1000-250)


Primeira mudança de preço) Preço mudou para: 1150

(Não preciso disto... ;-( )
Trailing is moving my stoploss to "buy_entrance" =>1000

(Mas preciso disto)
Trailing should move my stoploss to => 800 (=StopLoss+Trailingstep)

Second Price Change) Preço movido para: 1150 1300
Trailing show deve ser movido para => 950 (=StopLoss+Trailingstep)


o código atual usa o trailing and trailing step mas eu preciso modificá-lo...
quando (preço movido) o trailing in points é alcançado e ele usa o trailing step para mover o stop loss mas o código atual
move o stoploss para o ponto de entrada da operação (e eu não quero isso)

Eu preciso:

quando COMPRAR é aberto: se o trilho for alcançado, o passo do trilho deve ser subtraído do verdadeiro stoploss. (NewStopLoss = LastStoploss - TrailingStep)
quando a VENDA é aberta: se o rastro for alcançado , a etapa de rastro deve ser adicionada a partir do stoploss real. (NewStopLoss = LastStoploss +TrailingStep)

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>
CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

int
 Trailing = 150;
int TrailingStep = 25;

void fSimpleTrailingStep(){   //mt5
   if(Trailing<=0){
      return;
   }         
   if(!Pos.Select(_Symbol)){
      return;
   }         
   if(!Sym.RefreshRates()){
      return;  
   }   
   double nsl,tmsl,psl,newstop;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               //if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
               if(nsl>=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep)){  //////////////
                  //tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                   tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        newstop=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep);
                        Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                        Print ("(BUY) Trailing :"+Pos.StopLoss());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            //if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){             
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())-_Point*TrailingStep){   //////////////
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           newstop=Sym.NormalizePrice(Pos.StopLoss()-_Point*TrailingStep);
                           //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                           Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                           Print ("(SELL) Trailing :"+Pos.StopLoss());
                        }
                  }
            }      
      break;
   }
}
 
baraozemo:

Estou tentando mudar esta rotina de Trailing com Step.
Preciso sair de uma parada e não da entrada de compra/venda.

por exemplo: (operação de compra)

StopLoss: 250 (em pontos)
Traling :150 (em pontos)
TralingStep: 50 (em pontos)
===========

COMPRAR Entrada=> 1000
StopLoss=>750 (=1000-250)

================
Primeira mudança de preço) Preço mudou para: 1150

(Eu não preciso disto... ;-( )
Trailing is moving my stoploss to "buy_entrance" =>1000

(Mas eu preciso disto)
O trailing deve mover meu stoploss para => 800 (=StopLoss+Trailingstep)

Segunda Alteração de Preço) Preço mudou para: 1300
Trailing show ser movido para=> 950 (=StopLoss+Trailingstep)


o código atual usa o passo de fuga e o passo de fuga, mas preciso modificá-lo...
quando (preço movido) o trailing em pontos é alcançado e ele usa o trailing step para mover o stop loss mas o código real
mova o stoploss para o ponto de entrada da operação (e eu não quero isso)

Eu preciso:

quando COMPRAR é aberto: se a trilha for alcançada, a etapa de trilha deve ser subtraída da perda de carga real. (NewStopLoss = LastStoploss - TrailingStep)
quando a VENDA é aberta: se a trilha for alcançada, a etapa de trilha deve ser adicionada a partir do stoploss real. (NewStopLoss = LastStoploss +TrailingStep)

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>
CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

int
 Trailing = 150;
int TrailingStep = 25;

void fSimpleTrailingStep(){   //mt5
   if(Trailing<=0){
      return;
   }         
   if(!Pos.Select(_Symbol)){
      return;
   }         
   if(!Sym.RefreshRates()){
      return;  
   }   
   double nsl,tmsl,psl,newstop;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               //if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
               if(nsl>=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep)){  //////////////
                  //tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                   tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        newstop=Sym.NormalizePrice(Pos.StopLoss()+_Point*TrailingStep);
                        Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                        Print ("(BUY) Trailing :"+Pos.StopLoss());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            //if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){             
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())-_Point*TrailingStep){   //////////////
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           newstop=Sym.NormalizePrice(Pos.StopLoss()-_Point*TrailingStep);
                           //Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                           Trade.PositionModify(_Symbol,newstop,Pos.TakeProfit());
                           Print ("(SELL) Trailing :"+Pos.StopLoss());
                        }
                  }
            }      
      break;
   }
}
Seu início inicial deve ser sempre a partir da entrada inicial de compra/venda (não há outros critérios disponíveis)
 

Caríssimos MLADEN

Timmy e eu estamos tentando jogar (copiar/colar) com uma simples EA com venda/compra básica sobre mudança de tendência, baseada em "médias - mtf - alertas 8,7" , já que ambos zeramos em questões de codificação,plz ajuda e guia,como codificar (icustom) para esta média ver.

com respeito a



     double Averages_trend_current  = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse);

     double Averages_trend_previous = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse+1);


Arquivos anexados:
 
mntiwana:

Caríssimos MLADEN

Timmy e eu estamos tentando jogar (copiar/colar) com uma simples EA com venda/compra básica sobre mudança de tendência, baseada em "médias - mtf - alertas 8,7" , já que ambos zeramos em questões de codificação,plz ajuda e guia,como codificar (icustom) para esta média ver.

com respeito a



     double Averages_trend_current  = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse);

     double Averages_trend_previous = iCustom(NULL,0,"averages - mtf - alerts  8.7",PERIOD_CURRENT,AveragePeriod,AveragePrice,AverageMethod,DoubleSmoothedAverage,AdaptiveAverage,FilterPeriod,FilterOn,BarToUse+1);


Algo está errado com os amortecedores, usei amortecedores: 2 para comprar e ambos amortecedores 3 e 4 para vender, mas tudo aciona o tempo todo, tentei usar apenas o amortecedor 2 para comprar e o amortecedor 3 para vender, mas a mesma coisa aconteceu.
 
timmyhanke:
Algo está errado com os amortecedores, usei amortecedores: 2 para comprar e ambos amortecedores 3 e 4 para vender, mas tudo aciona o tempo todo, tentei usar apenas o amortecedor 2 para comprar e o amortecedor 3 para vender, mas a mesma coisa aconteceu.

Nada de errado com os amortecedores. Usar buffer 9 : 1 para tendência para cima, -1 para tendência para baixo

 

Prezado Sr. Mladen,


Eu preciso de um indicador histograma para minha estratégia comercial, neste momento eu uso o indicador XB4 e o indicador de estratégia Bandit. mas eles não têm alerta e notificação enviados por e-mail ou para o meu andróide MT4.

você tem um indicador XB4d ndicator modificado que tem alerta enviar e-mail e notificação que envia para o telefone celular androide. se o histograma mudar de cor azul para vermelho, ou vermelho para azul na primeira barra.

e o histograma de tendência do indicador do sistema Bandid, que muda de cor de azul para vermelho, ou vermelho para azul, primeira cor de tendência de mudança.

poderia me ajudar sobre este indicador, Sr. Mladen.




cumprimentos,

Samuel

Arquivos anexados:
bandit.PNG  56 kb
XB4.PNG  46 kb