Ayuda a la codificación - página 747

 
Espero que esta pantalla muestre exactamente lo que quiero :)
Archivos adjuntos:
 
skyler1234321:
Espero que esta pantalla muestre exactamente lo que quiero :)

Si está usando HighLowCandle > 0, entonces se abstiene en una vela cerrada.

Establezca el UseBarDirection a true y compruébelo entonces

 

Sí, lo tengo en la configuración. Aquí están mis ajustes lo que he probado

Tal vez en el código hay algo mal. ¿Podría comprobarlo?

Archivos adjuntos:
2.PNG  25 kb
 
cja:

¿Existe alguna forma sencilla de acceder a los datos del indicador de MT5 para su visualización en el gráfico? Sé que cuando MT5 salió por primera vez el código era bastante complicado para un simple indicador y espero que con la última versión de MT5 algo haya cambiado.

Por ejemplo, si quiero mostrar un cruce de MA en la visualización del objeto del gráfico con MT4, utilizo

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);

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

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

si no {col = clrGray;}


¿hay algún equivalente sencillo en MT5? ¿o tengo que escribir incontables líneas de código para acceder a esta información?

Hola cja

En primer lugar a las gracias por su visita de vuelta TSD en 2017 a continuación, Feliz año nuevo a usted como usted es muy raro visitar tsd pero muy viejo, senior y miembro experto :)

saludos

 

Estoy tratando de cambiar esta rutina de Trailing con Paso.
Necesito moverme desde el stoploss y no desde la entrada de compra/venta...

por ejemplo: (operación de COMPRA)

StopLoss: 250 (en puntos)
Traling :150 (en puntos)
TralingStep: 50 (en puntos)
===========

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

================
Primer cambio de precio) El precio se movió a: 1150

(No necesito esto.. ;-( )
El trailing mueve mi stoploss a "buy_entrance" =>1000

(Pero necesito esto)
El trailing debería mover mi stoploss a => 800 (=StopLoss+Trailingstep)

Segundo cambio de precio) El precio se mueve a: 1300
El trailing debe moverse a=> 950 (=StopLoss+Trailingstep)


el código actual usa trailing y trailing step pero necesito modificarlo...
cuando (el precio se mueve) el trailing en puntos es alcanzado y usa trailing step para mover el stop loss pero el código actual
mueve el stoploss al punto de entrada de la operación (y no quiero esto)

Necesito:

cuando se abra la COMPRA: si se alcanza el trailing , el paso de trailing debería restarse del stoploss actual. (NewStopLoss = LastStoploss - TrailingStep)
cuando se abre la VENTA: si se alcanza el trailing , se debe sumar el trailing step del stoploss actual. (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:

Estoy tratando de cambiar esta rutina de Trailing con Paso.
Necesito moverme desde el stoploss y no desde la entrada de compra/venta...

por ejemplo: (operación de COMPRA)

StopLoss: 250 (en puntos)
Traling :150 (en puntos)
TralingStep: 50 (en puntos)
===========

Entrada de COMPRA=> 1000
StopLoss=>750 (=1000-250)

================
Primer cambio de precio) El precio se ha movido a: 1150

(No necesito esto.. ;-( )
Trailing está moviendo mi stoploss a "buy_entrance" =>1000

(Pero necesito esto)
Trailing debería mover mi stoploss a => 800 (=StopLoss+Trailingstep)

Segundo cambio de precio) El precio se ha movido a: 1300
El trailing se mueve a=> 950 (=StopLoss+Trailingstep)


el código actual utiliza trailing y trailingtep pero necesito modificarlo...
cuando (el precio se mueve) se alcanza el trailing en puntos y se usa el trailing step para mover el stop loss pero el código actual
mueve el stoploss al punto de entrada de la operación (y no quiero esto)

Necesito:

cuando se abre la COMPRA: si se alcanza el trailing, el paso de trailing debería restarse del stoploss real. (NewStopLoss = LastStoploss - TrailingStep)
cuando se abre la venta: si se alcanza el trailing, el paso de trailing debe añadirse al stoploss actual. (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;
   }
}
Su inicio siempre debe ser desde la entrada inicial de compra/venta (no hay otro criterio disponible)
 

Estimado MLADEN

Timmy y yo estamos tratando de jugar (copiar/pegar) con un simple EA con venta/compra básica en el cambio de tendencia, basado en "promedios - mtf - alertas 8.7", ya que ambos somos nulos en materia de codificación, plz ayuda y guía, cómo codificar (icustom) para este promedios ver.

saludos



     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);


Archivos adjuntos:
 
mntiwana:

Estimado MLADEN

Timmy y yo estamos tratando de jugar (copiar/pegar) con un simple EA con venta/compra básica en el cambio de tendencia, basado en "promedios - mtf - alertas 8.7", ya que ambos somos nulos en materia de codificación, plz ayuda y guía, cómo codificar (icustom) para este promedios ver.

saludos



     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á mal con los buffers , he utilizado el buffer : 2 para la compra y ambos buffer 3 y 4 para la venta , pero todo se dispara todo el tiempo , trató de utilizar sólo el buffer 2 para la compra y el buffer 3 para la venta , pero lo mismo sucedió .
 
timmyhanke:
Algo está mal con los buffers , he utilizado el buffer : 2 para la compra y ambos buffer 3 y 4 para la venta , pero todo se dispara todo el tiempo , trató de utilizar sólo el buffer 2 para la compra y el buffer 3 para la venta , pero lo mismo sucedió .

No hay nada malo con los buffers. Utilice el buffer 9 : 1 para la tendencia alcista, -1 para la tendencia bajista

 

Estimado Sr. Mladen,


Necesito un indicador de histograma para mi estrategia de comercio, en este momento utilizo el indicador XB4 y el indicador de estrategia Bandit. pero no tienen alerta y notificación enviar al correo electrónico oa mi androide MT4.

¿tiene modificado el indicador XB4d ndicator que tiene alerta enviar correo electrónico y la notificación que enviar a android mobil phone. si histograma cambiar el color azul a rojo, o rojo a azul en la primera barra.

y el histograma de la tendencia de la sesión del indicador del sistema Bandid, que cambia el color de azul a rojo, o rojo a azul, el primer color de cambio de tendencia.

podría ayudarme sobre este indicador Sr. Mladen.




saludos,

Samuel

Archivos adjuntos:
bandit.PNG  56 kb
XB4.PNG  46 kb