Ayuda a la codificación - página 258

 
Tomcat98:
Hola Mladen , hola a todos,

¡Maldita nueva construcción!

Con B625 ahora tengo nuevas advertencias.

"El valor de retorno de 'OrderSelect' debe ser comprobado"

para el siguiente código:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

¿Cómo corregirlo?

Gracias por todo.

Tomcat98

Tomcat98

Haz lo siguiente :

declara una variable booleana global (así, por ejemplo) :

bool dummyResult;

Y luego simplemente coloca "dummyResult =" delante del OrderSelect -entonces tendrás lo siguiente :

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

 
Tomcat98:
Hola Mladen , hola a todos,

¡Maldita nueva construcción!

Con B625 ahora tengo nuevas advertencias.

"El valor de retorno de 'OrderSelect' debe ser comprobado"

para el siguiente código:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

¿Cómo corregirlo?

Gracias por todo.

Tomcat98

Bueno, se puede eliminar a costa de un poco de esfuerzo.

Pero tengo una advertencia permanente, que no puedo eliminar por ningún medio (excepto de eliminar la línea del código fuente):

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

que es una información inútil, si lo uso como supertipo para las llamadas dll solamente (no tengo idea de cualquier otro uso de la estructura vacía).

 

Hola Mladen,

Sí, funciona:

Gran trabajo.

Muchas gracias por tu ayuda.

Sinceramente.

Tomcat98

 

Hola a todos,

desde hace unos días estoy recibiendo esporádicamente el siguiente error en uno de mis indicadores que utilizo en mi EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violación de acceso al escribir en 0xFFFFFFFE en 'C:\NUsers...\AppData\Roaming\NMetaQuotes\NTerminalD5D5AE2430FC68F628F143CAFA9XXXX\NMQL4\indicators\MyDailyFibo.ex4'

Utilizo la versión 4 de MT. Build 625

Por favor, ayúdenme a encontrar la causa de este problema. Hágame saber si necesita mirar en el indicador. No aparece todo el tiempo pero sí muy a menudo...

Gracias y saludos,

Antony

 
Antony1:
Hola a todos,

desde hace unos días estoy recibiendo esporádicamente el siguiente error en uno de mis indicadores que utilizo en mi EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violación de acceso al escribir en 0xFFFFFFFE en 'C:\NUsers...\AppData\Roaming\NMetaQuotes\NTerminalD5D5AE2430FC68F628F143CAFA9XXXX\NMQL4\indicators\NMyDailyFibo.ex4'

Utilizo la versión 4 de MT. Build 625

Por favor, ayúdenme a encontrar la causa de este problema. Hágame saber si necesita mirar en el indicador. No aparece todo el tiempo pero sí muy a menudo...

Gracias y saludos,

Antony

Antony

Eso no es un problema con su indicador

Es un problema con el nuevo metatrader 4 (está teniendo problemas con la asignación de memoria y el acceso adecuado - build 628 es un poco mejor, pero no mucho)

 

Hola,

necesito ayuda con este indicador que estaba tratando de escribir (Wilder trailing stop velas MTF).

Primer problema: mi indicador dibuja la señal de compra 1 barra antes de lo que debería ser y sé que esto se debe a la forma de calcular la pendiente, pero no sé cómo solucionarlo.

Segundo problema: Los colores no coinciden, probablemente me equivoqué con los buffers en esta parte pero me estoy confundiendo y no puedo arreglarlo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Hola,

Necesito ayuda con este indicador que estaba tratando de escribir (Wilder trailing stop velas MTF).

Primer problema: mi indicador dibuja la señal de compra 1 barra antes de lo que debería ser y sé que esto se debe a la forma de calcular la pendiente, pero no sé cómo solucionarlo.

Segundo problema: Los colores no coinciden, probablemente me equivoqué con los buffers en esta parte pero me estoy confundiendo y no puedo arreglarlo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh, los colores coinciden. ¿Quizás tengo que escribir primero los wickbuffers y luego los bodybuffers?

 
thefxpros:
mmmhh, los colores coinciden. ¿Tal vez tengo que escribir primero wickbuffers y luego bodybuffers?

thefxpros

La forma más fácil es cambiar el indicador Wilders trailing stop (de lo contrario se verá atrapado en algunas construcciones complicadas if then else). Aquí hay una versión con un búfer interno que desea : tendencia. Si es igual a 1, la tendencia es alcista, si es igual a -1, la tendencia es bajista. Utilice este indicador en lugar de la original y simplemente leer el valor de la memoria intermedia 4 - después de que todo es simple

Archivos adjuntos:
 
mladen:
thefxpros La forma más fácil es cambiar el indicador Wilders trailing stop (de lo contrario se verá atrapado en algunas construcciones complicadas if then else). Aquí hay una versión con un búfer interno que desea : tendencia. Si es igual a 1, la tendencia es alcista, si es igual a -1, la tendencia es bajista. Utilice este indicador en lugar del original y simplemente lea el valor del buffer 4 - después de eso todo es simple

¿Así?

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

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

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

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

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

//| |

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

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+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 candles("+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

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

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

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

No puedo creer, funciona en el primer intento .....¿Hay algo más que puedo escribir mejor (borrar trendbuffer sí, vi ahora) que hice?

gracias Mladen

Archivos adjuntos:
cattura_2.jpg  72 kb
 
mladen:
No se pueden dibujar líneas con longitud en pulgadas en el gráfico (es completamente imposible usando metatrader y dudo que sea posible en cualquier plataforma de trading). Y esas líneas son objetos de líneas horizontales no líneas de tendencia (las líneas de tendencia se pueden limitar pero las horizontales no). Si no hay una regla matemática exacta de cómo se deben dibujar las líneas (dependiendo del precio, no de las pulgadas) simplemente no se pueden dibujar, y por esa secuencia de números parece que las reglas son únicas para todas y cada una de las líneas

Ok gracias he encontrado un indy mejor que se puede editar. Era un proyecto inacabado que un codificador hizo en forexfactory y ya no puedo localizarlo. Por favor, reemplace 00, 20, 50, 80 con mis números. Las líneas también se agrupan en lugar de sólo poner en los números especiales 5, 15, 31, 45 y 67.

Gracias

Archivos adjuntos:
Razón de la queja: