Necesito ayuda con la codificación - página 8

 

Jo

Algo así:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
Hola,

¿Cómo puedo codificar una alerta en un indicador?

Por ejemplo, ¿cómo alertar cuando MACD[0]>MACD[1]?

Gracias por la ayuda.

Jo
 
mladen:
Jo

Algo así:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

Gracias Mladen, pero ¿dónde?

Tenía los mensajes :

Rojo -If_function no definido

Red-Alert_Semicolon esperado

------------------------------------------------------------------------------------------------------------------

#property indicador_separar_ventana

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Rojo

#property indicator_width1 2

//---- parámetros del indicador

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- búferes del indicador

double MacdBuffer[];

double SignalBuffer[];

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizada

//+------------------------------------------------------------------+

int init()

{

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Dígitos+1);

//---- mapeo de buffers de indicadores

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")";

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Señal");

//---- inicialización realizada

return(0);

}

//+------------------------------------------------------------------+

//| Convergencia/Divergencia de Medias Móviles ||

//+------------------------------------------------------------------+

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

//---- la última barra contada se volverá a contar

if(counted_bars>0) counted_bars--;

limit=Barras contadas_barras;

//---- macd contada en el 1er búfer

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- línea de señal contada en el buffer 2

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- hecho

return(0);

}

//+--------------------------------------------

 

Justo antes del último return de tu código (así te aseguras de que se ejecute sólo cuando todo el resto del procesamiento haya terminado)

Jovager:
Gracias Mladen, pero ¿dónde?

Tenía los mensajes :

Rojo -If_function no definido

Red-Alert_Semicolon esperado

------------------------------------------------------------------------------------------------------------------

#property indicador_separar_ventana

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Rojo

#property indicator_width1 2

//---- parámetros del indicador

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- búferes del indicador

double MacdBuffer[];

double SignalBuffer[];

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizada

//+------------------------------------------------------------------+

int init()

{

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Dígitos+1);

//---- mapeo de buffers de indicadores

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- nombre para la etiqueta de la DataWindow y la subventana del indicador

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")";

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Señal");

//---- inicialización realizada

return(0);

}

//+------------------------------------------------------------------+

//| Convergencia/Divergencia de Medias Móviles ||

//+------------------------------------------------------------------+

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

//---- la última barra contada se volverá a contar

if(counted_bars>0) counted_bars--;

limit=Barras contadas_barras;

//---- macd contada en el 1er búfer

for(int i=0; i<limit; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- línea de señal contada en el buffer 2

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- hecho

return(0);

}

//+--------------------------------------------
 

¿Podría alguien arreglar el error de división por cero cuando se usa el timeframe como "0"?

pivot_crazy.mq4¿Podría alguien arreglar el error de división por cero al usar el timeframe como "0"?

Gracias.

Archivos adjuntos:
 

Pruébalo. Ya está corregido

privateer:
pivot_crazy.mq4¿Podría alguien arreglar el error de división de cero cuando se utiliza el marco de tiempo como "0" Gracias.
Archivos adjuntos:
 

Gracias mladen funciona como un encanto

mladen:
Pruébalo. Ya está corregido

gracias mladen funciona como un encanto

 

necesito ayuda con este ea su tiene la función de martingala pero no funciona propely por ejemplo si una posición su cerrado en una pérdida martingala función debe multiplie los lotes de la última posición cerrada en una pérdida, pero hay su un error en el código whitch hacer la martingala para trabajar propely aquí es el eauniversalmacrossea.mq4

Archivos adjuntos:
 

Esa forma de abrir una nueva orden después de una pérdida no es una martingala + martingala funciona con posiciones abiertas

blondutrader:
necesito ayuda con este ea su tiene la función de martingala pero no funciona propely por ejemplo si una posición su cerrado en una pérdida martingala función debe multiplie los lotes de la última posición cerrada en una pérdida, pero hay su un error en el código whitch hacer la martingala para trabajar propely aquí es el eauniversalmacrossea.mq4
 

¿Cómo puedo calcular el tamaño de mi lote si quiero operar con un 5% de mi dinero en cada operación?

 

sunshineh,

Trate de usar esta función:

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
¿Cómo puedo calcular mi tamaño de lote, cuando quiero comerciar con cada comercio f.e. 5% de mi dinero?
Razón de la queja: