[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 141

 

Ya está, ha funcionado. Parece que es porque he puesto un buffer.

#property indicator_buffers 1

 

Has hecho todo correctamente. Lo he comprobado - sale como debe (puedo darte una captura de pantalla).

Acabo de añadir encima

#property  indicator_separate_window
#property  indicator_buffers 2
 

Помогите, плиз!!!

double Lots_simb[3];


if(( Lots_simb[0]*2)< Lots_simb[2]) // почему истина ?
{

Print("Lots_simb[0]*2=", Lots_simb[0]*2,"Lots_simb[2]=", Lots_simb[2]);
Open_Buy_otl( symb[0],( Lots_simb[2]/2- Lots_simb[0]));

return;

}

2009.07.10 06:57:09 newseason GBPJPY, M30: Lots_simb[0]*2=8.4  Lots_simb[2]=8.4
 
Señores del conocimiento, cuando el registro en el probador dice "Función no permitida en el modo de prueba" ¿cómo sé qué función no está permitida?
 
Dimoncheg писал(а) >>
Señores, cuando el registro en el probador dice "La función no está permitida en el modo de prueba" ¿cómo puedo saber qué función no está permitida?

Características y limitaciones de la prueba de estrategias comerciales en MetaTrader 4'

 

Hola, ¡realmente necesito ayuda! Quiero hacer un EA basado en un indicador. Al principio, como en cualquier indicador, hay estas líneas:

SetIndexBuffer(0,ExtBullBuffer);
SetIndexBuffer(1,ExtBull1Buffer);
SetIndexBuffer(2,ExtBull2Buffer);
SetIndexBuffer(3,ExtBull3Buffer);
SetIndexBuffer(4,ExtBull4Buffer);
SetIndexBuffer(5,ExtBull5Buffer);
SetIndexBuffer(6,ExtBull6Buffer);
SetIndexBuffer(7,ExtBull7Buffer);
Luego viene el cuerpo del programa (int start()...) donde se calculan las variables ExtBullBuffer... Quiero hacer un EA, por lo que no necesito SetIndexBuffer, pero si lo quito, mientras que las variables de prueba ExtBullBuffer no se calculan (para todos los marcos de tiempo de la prueba, para todos los marcos de tiempo que genera 0, aunque no es cierto) ... ¿Puede aconsejarnos qué hacer? Gracias.

 
Levchik >> :

Hola, ¡realmente necesito ayuda! Quiero hacer un EA basado en un indicador. Al principio, como en cualquier indicador, hay estas líneas:

SetIndexBuffer(0,ExtBullBuffer);
Luego viene el cuerpo del programa (int start()...), que calcula las variables ExtBullBuffer... Quiero hacer un EA, por lo que no necesito SetIndexBuffer, pero si lo quito, mientras que las variables de prueba ExtBullBuffer no se calculan (para todos los marcos de tiempo de la prueba, para todos los marcos de tiempo que genera 0, aunque no es cierto) ... ¿Puede aconsejarnos qué hacer? >> Gracias.

En los búferes indicadores, el búfer se inicializa automáticamente en cuanto se declara el búfer como indicador (no como auxiliar),

en otros programas (no indicadores) los buffers necesitan ser inicializados con la función ArrayResize(ExtBullBuffer,Bars);

(si el búfer no tiene un nombre explícito double ExtBullBuffer[1000]; )

Y la inicialización debería hacerse en la función donde se supone que se asignan los valores al buffer. En su caso, en int start().

 

Hola a todos. Me puedes decir como arreglar el código del indicador, para que el pitido salga no una vez, sino 10 veces, o como hay inducciones donde aparece la señal hasta la siguiente vela. Es decir, la señal va todo el tiempo la vela en la que se produjo. Desgraciadamente, no puedo escucharlo por la noche((((. Les agradezco de antemano sus comentarios.

#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 5
#property indicator_color1 Amarillo
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomate
#property indicator_width3 2

#property indicator_color4 Azul
#property indicator_color5 Rojo
#property indicator_width4 1
#property indicator_width5 1

//---- parámetros de entrada
extern int Precio = 0; /Aplicar a Precio(0-Cierre;1-Abierto;2-Alto;3-Bajo;4-Precio medio;5-Precio típico;6-Cierre ponderado)
extern int Length = 15; //Periodo de NonLagMA
extern inttern Displace = 0; //DispLace o Shift
extern double PctFilter = 0; //Filtro dinámico en decimal
extern string note1 ="activar Color: ln=1 ln&dot=2; off=0";
extern int Color = 2; /Cambio de modo de color (1 color)
extern int ColorBarBack = 0; //Bar back para el modo de color
extern double Desviación = 0; //Desviación hacia arriba/hacia abajo
extern string note2 ="encender = 1; apagar = 0";
extern int AlertMode = 0; //cambio de alerta de la caja (0-off,1-on)
extern int WarningMode = 0; //Sonido de advertencia switch(0-off,1-on)
extern int SendEmail = 0;
cadena externa soundfile = "news.wav";
//---- búferes indicadores
doble MABuffer[];
doble UpBuffer[];
doble DnBuffer[];
doble tendencia[];
doble Del[];
doble AvgDel[];
doble updbuffer[];
doble dndbuffer[];

doble alfa[];
int i, Phase, Len, Cycle=4;
doble Coeff, beta, t, Suma, Peso, g;
doble pi = 3,1415926535;
bool UpTrendAlert=false, DownTrendAlert=false;
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MABuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,DnBuffer);

SetIndexBuffer(5,trend);
SetIndexBuffer(6,Del);
SetIndexBuffer(7,AvgDel);


SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); SetIndexBuffer(3,updbuffer); SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,159); SetIndexBuffer(4,dndbuffer); SetIndexEmptyValue(4,EMPTY_VALUE);


nombre_corto_de_cadena;
//---- línea indicadora

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- nombre para la etiqueta de la subventana DataWindow y del indicador
short_name="NonLagMA("+Longitud+")";
IndicadorNombreCorto(nombre_corto);
SetIndexLabel(0, "NonLagMA");
SetIndexLabel(1, "Up");
SetIndexLabel(2, "Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);
SetIndexShift(3,Displace);
SetIndexShift(4,Displace);

SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexDrawBegin(0,Length*Cycle+Length+1);
SetIndexDrawBegin(1,Length*Cycle+Length+1);
SetIndexDrawBegin(2,Length*Cycle+Length+1);
//----

Coeff = 3*pi;
Fase = Longitud-1;
Len = Longitud*4 + Fase;
ArrayResize(alfa,Len);
Peso=0;

for (i=0;i<Len-1;i++)
{
si (i<=Fase-1) t = 1,0*i/(Fase-1);
si no t = 1,0 + (i-Fase+1)*(2,0*Ciclo-1,0)/(Ciclo*Longitud-1,0);
beta = MathCos(pi*t);
g = 1,0/(Coeff*t+1);
si (t <= 0,5 ) g = 1;
alfa[i] = g * beta;
Peso += alfa[i];
}

return(0);
}

//+------------------------------------------------------------------+
//| NonLagMA_v7.1 ||
//+------------------------------------------------------------------+
int inicio()
{
int,shift, counted_bars=IndicatorCounted(),limit;
doble precio;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if ( counted_bars < 1 )

for(i=1;i<Longitud*Ciclo+Longitud;i++)
{
MABuffer[Bars-i]=0;
UpBuffer[Bars-i]=0;
DnBuffer[Bars-i]=0;
}

for(shift=limit;shift>=0;shift--)
{
Suma = 0;
for (i=0;i<=Len-1;i++)
{
precio = iMA(NULL,0,1,0,3,Precio,i+desplazamiento);
Suma += alfa[i]*precio;

}

if (Peso > 0) MABuffer[shift] = (1.0+Deviation/100)*Suma/Peso;


si (PctFilter>0)
{
Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1]);

doble sumdel=0;
for (i=0;i<=Longitud-1;i++) sumdel = sumdel+Del[shift+i];
AvgDel[shift] = sumdel/Length;

double sumpow = 0;
for (i=0;i<=Longitud-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2);
double StdDev = MathSqrt(sumpow/Length);

double Filter = PctFilter * StdDev;

if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1];
}
si no
Filtro=0;

si (Color>0)
{
trend[shift]=trend[shift+1];
si (MABuffer[shift]-MABuffer[shift+1] > Filtro) trend[shift]= 1;
si (MABuffer[shift+1]-MABuffer[shift] > Filtro) trend[shift]=-1;

updbuffer[shift] = EMPTY_VALUE; dndbuffer[shift] = EMPTY_VALUE;

si (trend[shift]>0)
{
UpBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
DnBuffer[shift] = EMPTY_VALUE;
if (trend[shift+1]<0&Color>1) updbuffer[shift]= MABuffer[shift];
}
si (trend[shift]<0)
{
DnBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = EMPTY_VALUE;
if (trend[shift+1]>0&Color>1) dndbuffer[shift]= MABuffer[shift];

}
}
}
//----------
Mensaje de la cadena;

if ( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
{
Mensaje = ""+Símbolo()+" M "+Periodo()+" Señal NonLagMa de COMPRA";
si ( AlertMode>0 ) Alerta (Mensaje);
if ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert");
UpTrendAlert=true; DownTrendAlert=false;
}

if ( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
{
Mensaje = ""+Símbolo()+" M "+Período()+" Señal de No-LagMa para Vender";
si ( AlertMode>0 ) Alerta (Mensaje);
if ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert");
DownTrendAlert=true; UpTrendAlert=false;
}
//----
return(0);
}

 
E_mc2 >> :

Hola a todos. Por favor, aconsejar cómo arreglar el código indyuka que el pitido no se muestra una vez, y luego 10 veces, o como hay indyuki donde la señalización hasta la próxima vela aparece. Es decir, la señal va todo el tiempo la vela en la que se produjo. Tengo una buena señal, pero sólo una vez ... Por desgracia, a veces no puedo escuchar en la noche(((( Le doy las gracias de antemano que va a ayudar.

¿Para qué lo necesitas? Cuéntame más sobre esto, tal vez hay una solución y no sabes cómo hacer las preguntas correctas para que la gente entienda.

Sobre lo que has escrito, tengo dos soluciones, tú qué, dos a la vez demasiado largas para escribir :)

..

Por cierto, es mejor adjuntar estos códigos largos como un archivo.

Y para el código, hay un botón especial SRC.