Ayuda a la codificación - página 197

 
mladen:
Puedes añadirlo para dibujar esas líneas adicionales una vez más - así :
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
y dibujará esas líneas adicionales alrededor de todas las líneas "básicas"

De nuevo gracias mladen

 

Necesito ayuda para programar una alerta

Hola, soy nuevo en toda la programación de mql4.

Quiero crear una nueva alarma "todo en uno".

Tengo Fx MNT, Super Signal y CHT Value Chart con señales de alarma.

Ahora quiero tener una sola alarma, cuando MNT, Super Signal, Value Chart y RSI estén en el lugar correcto.

¿Cómo codificar esto? ¿Puedo utilizar las partes de la alarma existente y ponerlas todas en un código grande?

Saludos cordiales Slow

 
Slow Moe:
Hola, soy nuevo en toda la programación de mql4.

Quiero crear una nueva alarma "todo en uno".

Tengo Fx MNT, Super Signal y CHT Value Chart con señales de alarma.

Ahora quiero tener una sola alarma, cuando MNT, Super Signal, Value Chart y RSI estén en el lugar correcto.

¿Cómo codificar esto? ¿Puedo usar las partes de la alarma existente y ponerlas todas en un código grande?

Saludos cordiales Lento

Lento

Puedes hacerlo, pero el código que sería "responsable" de obtener los datos de todos esos indicadores no sería sencillo (especialmente la parte con los parámetros, en la que tendrías que declarar parámetros externos a todos los indicadores que serían llamados para saber si la alerta debe activarse o no)

 

cierres consecutivos superiores/inferiores

El archivo adjunto tiene una serie de condiciones que se pueden incluir seleccionando verdadero/falso.

Me gustaría incorporar otra condición como verdadero/falso: ¿hay

2 cierres superiores consecutivos para los largos?

Si los hay, entonces si las otras condiciones habilitadas por true están presentes, entonces se produce una flecha hacia arriba.

¿Hay 2 cierres inferiores consecutivos para los cortos?

Si hay, entonces si las otras condiciones habilitadas por true están presentes, entonces se produce una flecha hacia abajo.

¿Podría el número de cierres ser una variable?

¿Podría alguien codificar esta condición extra en el indicador Stoch_Indy? Gracias.

Archivos adjuntos:
 
person77:
El archivo adjunto tiene una serie de condiciones que se pueden incluir seleccionando verdadero/falso.

Me gustaría incorporar otra condición como verdadero/falso: ¿hay

2 cierres consecutivos más altos para los largos?

Si los hay, entonces si las otras condiciones habilitadas por true están presentes, entonces se produce la flecha hacia arriba.

¿Hay 2 cierres inferiores consecutivos para los cortos?

Si hay, entonces si las otras condiciones habilitadas por true están presentes, entonces se produce una flecha hacia abajo.

¿Podría el número de cierres ser una variable?

¿Podría alguien codificar esta condición extra en el indicador Stoch_Indy? Gracias.

persona77

Prueba con esto

Opción UseConsecutiveCloseBars añadida para este propósito. No sólo se comprueban los ids de cierre, sino que el cierre debe ser mayor que la apertura en dichas barras para que sea una subida consecutiva, o debe ser menor que la apertura en dichas barras para que sea una bajada consecutiva

Archivos adjuntos:
 
mladen:
persona77

Pruebe este

Opción UseConsecutiveCloseBars añadido para ese propósito. No sólo se comprueban los ids de cierre, sino que el cierre debe ser mayor que la apertura en dichas barras para que sea consecutivo al alza, o debe ser menor que la apertura en dichas barras para que sea consecutivo a la baja

Muy bonito mladen - funciona muy bien. Gracias.

En los pocos casos que me he encontrado, tener C = O permitido es por lo general favorable.

¿Podría cambiarlo para permitir esto, o, mejor aún, tener una opción si se permite o no C = O?

Archivos adjuntos:
 
person77:

Muy bonito mladen - funciona muy bien. Gracias.

En los pocos casos que me he encontrado, tener C = O permitido es en general favorable.

¿Podría cambiarlo para permitir esto, o, mejor aún, tener una opción si se permite o no C = O?

persona77

Una opción más añadida : AllowCloseEqualOpen. así que ahora puedes controlarlo con esa opción

Archivos adjuntos:
 

Hola chicos,

Tengo una pregunta sobre la codificación

¿Es posible dibujar la media móvil en el gráfico general con estas preferencias?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

 
cain82:
Hola chicos,

Tengo una pregunta sobre la codificación

¿Es posible dibujar la media móvil en el gráfico general con estas preferencias?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Lo que has escrito (el dFactor y el mFactor) se evalúa a un valor constante independientemente del precio y del número de barras, por lo que tendrías una línea horizontal en el gráfico

 
mladen:
Lo que has escrito (el dFactor y mFactor) todo evalúa a un valor constante, independientemente del precio y el número de barra, por lo que tendría una línea horizontal en el gráfico

¡Gracias por la respuesta!

Pero, ¿cómo puedo obtener una línea angular de MA en el gráfico general como en este código indi hystogramm?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

if(nCountedBars<0) return(-1);

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

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

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

Razón de la queja: