Ayuda a la codificación - página 254

 
thefxpros:
Hola,

Me estoy divirtiendo en convertir algún indicador en MTF usando icustom. El indicador funciona, pero no muestra el color y las flechas correctamente, ¿por qué?

¿Dónde está el error, por favor?

wilders_trailing_stop_mtf.mq4

wilders_trailing_stop.mq4

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern int LineWidth = 1;

extern int ArrowWidth = 1;

extern color UpLineClr = LimeGreen;

extern color DnLineClr = Orange;

extern color UpArrowClr = LimeGreen;

extern color DnArrowClr = Orange;

//

double WTS[];

double WTSDn[];

double arrUp[];

double arrDn[];

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

//| |

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

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,WTS); SetIndexStyle(0,DRAW_LINE, EMPTY, LineWidth, DnLineClr);

SetIndexBuffer(1,WTSDn); SetIndexStyle(1,DRAW_LINE, EMPTY, LineWidth, UpLineClr);

SetIndexBuffer(2,arrUp); SetIndexStyle(2,DRAW_ARROW, EMPTY, ArrowWidth, UpArrowClr); SetIndexArrow(2,SYMBOL_ARROWUP);

SetIndexBuffer(3,arrDn); SetIndexStyle(3,DRAW_ARROW, EMPTY, ArrowWidth, DnArrowClr); SetIndexArrow(3,SYMBOL_ARROWDOWN);

IndicatorShortName("Wilders trailing stop MTF ("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF ("+TimeFrameStr+")");

return(0);

}

//----

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

//| MTF function |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

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

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

WTS=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,0,y);

WTSDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,1,y);

arrUp=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,2,y);

arrDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,3,y);

}

return(0);

}

//+------------------------------------------------------------------+[/PHP]

thefxpros

Has comentado la parte en la que tienes que declarar los buffers de dibujo

Esta parte :

[PHP]#property indicador_marcador_ventana

//#property indicator_buffers 4

//#property indicador_color1 Naranja

//#property indicator_color2 LimeGreen

//#propiedad indicator_color3 LimeGreen

//#propiedad indicator_color4 Naranja

//#propiedad indicador_ancho3 1

//#property indicator_width4 1

Elimina los comentarios de esas líneas y funcionará

 
mladen:
thefxpros

Has comentado la parte en la que tienes que declarar los buffers de dibujo

Esta parte :

#property indicator_chart_window

//#property indicator_buffers 4

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1
Elimina los comentarios de esas líneas y funcionará

Sí, lo sé, pero lo he especificado después, ¿no es suficiente? ¿Tengo que especificar siempre al principio?

Recuerdo que muchas veces lo hice así, con el metaeditor anterior y que yo recuerde funcionaba, ¿recuerdo mal?

 
thefxpros:
Sí, lo sé, pero he especificado más tarde, ¿no es suficiente? Recuerdo que muchas veces lo hice así, con el metaeditor de la versión anterior y hasta donde recuerdo funcionaba, ¿recuerdo mal?

losfxpros

Al principio se especifican los buffers de dibujo. Más tarde puede especificar los buffers de cálculo. Si no se especifica la #propiedad indicator_buffers numberOfDrawningBuffer entonces no se dibujará nada en el corazón

 

mostrar todo el historial de Speard . Por favor, ayúdame

 

Alguien que me ayude a revisar este EA para la función CloseInMA .

Me he quedado aquí durante muchos días y no puedo encontrar la solución .

Gracias.

Archivos adjuntos:
testing1.5.mq4  38 kb
 
stevenpun:
Alguien me puede ayudar a comprobar este EA para la función CloseInMA .

Llevo muchos días metido aquí y no encuentro la solución .

Gracias .

stevenpun

Trate de hacer como está escrito ahora

Archivos adjuntos:
 

Hola gurú de buen corazón, estoy solicitando por favor que alguien ayude a codificar esto y luego construir un robot (EA) versión de la misma:

INDICADOR- Auto dibujar líneas horizontales (preferiblemente líneas rotas) en los precios que terminan en 5, 15, 31, 67 respectivamente. Ejemplo en UJ 103.05, 102.67, 103.15 e.t.c. La longitud de la línea debe ser de 1 pulgada de largo de una regla matemática con estos números por debajo de modo que voy a tener un gráfico decente debido a las líneas de pareja que ya tengo.

PS- 4 y 5 dígitos corredor compatible

 

Reglas para el EA

COMPRA

Coloque una orden pendiente de compra cada vez que el precio se mueva 3 pips antes del número mágico de ABAJO. Ejemplo para el número mágico 5, el precio actualmente en UJ 103.02, colocar orden pendiente de compra @103.05.

VENDER

Coloque una orden pendiente de venta en cualquier momento que el precio se acerque al número mágico por 3 pips desde ARRIBA. Ejemplo, precio actual @103.08, colocar stop de venta @103.05

SL y TP 25/50 pip cada uno.

Cuando la operación alcance +3 pips de beneficio, mueva el STOP LOSS para bloquear +1 beneficio, mueva el 5 para bloquear el 4, mueva el 8 para bloquear el 7, mueva el 12 para bloquear el 10

Máxima posición abierta u operación flotante u orden pendiente =1 sólo hasta que se detenga para una nueva operación

Máximo draw down diario 3% y una vez alcanzado, el EA debe dejar de operar.

Tamaño de lote por defecto 0.1 (10,000)

Negociación de 24 horas

P.D: El EA debe tener una opción para ocultar los números mágicos, trailing stop, take profit/stop loss de mi broker y debe ser compatible con 4/5 dígitos. Par por defecto UJ.

Estaré muy agradecido de tener esto codificado pronto.

 
mladen:
stevenpun Trate de hacer como está escrito ahora

Hola mladen ,

Lo he intentado antes, pero no funciona.

Por eso estoy muy confundido.

Espero que pueda ayudarme a ver cuál es el problema.

Gracias.

 
stevenpun:
Hola mladen ,

Lo he intentado antes, pero no funciona.

Por eso estoy muy confundido.

Espero que pueda ayudarme a ver cuál es el problema.

Gracias .

En la versión que has publicado estabas comparando constantes (Fastma, Dn_slowma y Up_slowma son periodos que se utilizan para las medias móviles, no los valores de las medias móviles)

Ahora se cambia para comparar los valores de las medias móviles. Si no es lo que tienes en mente, entonces tienes que cambiarlo, pero no puedes comparar valores constantes y esperar que cambien de barra a barra

Comprueba si esas son las condiciones exactas de las medias móviles (en la función GetSignalClose()) que has imaginado como condiciones de salida, pero sigue comparando los valores de las medias móviles no los parámetros de esas medias móviles