Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
He probado varias veces en la cuenta de Alpari, sin errores. Solo una vez, cuando pongo el script en el directorio de expertos y lo lanzo como EA.
Es porque te pregunté sobre los directorios.
Lo siento.Creo que he descubierto el problema. Estoy en window vista y suelo hacer "run as administrator". lo he probado sin hacer eso y parece que ahora funciona bien
Pasando un Array desde MT4 .mq4 a C++ DLL
Cualquier ayuda por favor.
Estoy teniendo un problema al pasar un solo Array que contiene 8 valores de indicadores a una DLL de C++. Es muy simple pero parece que obtengo -1 cuando llamo a la función
Forexindex() función que en realidad llama a la función importada gepModel ( d [] ) de la DLL . La función ForexIndex debería devolver 0 o 1 desde la DLL.
Sospecho que estoy haciendo algo mal en el archivo .mq4 en el Forexindex() . Cualquier ayuda será muy apreciada. Abajo está el código simple. El archivo DLL de C ++ está bien se compila sin errores por lo que el problema es con el archivo mq4 .
================================MQ4 file====================
#import "JadeClass.dll"
int gepModel( double& d[] );
#importar
int inicio()
{
........
........
........
ForexIndex();
.......
......
......
.....
}
int ForexIndex()
{
int myindex;
double ind[] , MA_Close, MA_High, MA_Low, MA_Open, Macd, Rsi, Stoch, Vol;
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
int pos=Barras_contadas;
MA_Close = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;
MA_High = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;
MA_Low = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;
MA_Open = iMA(NULL,PERIOD_M5,8,0,0,0,0) ;
Macd = iMACD(NULL,PERIOD_M5,12,26,9,0,0,0);
Rsi = iRSI(NULL,PERIOD_M5,10,0,0);
Stoch = iStochastic(NULL,PERIOD_M5,14,3,3,0,0,0);
Vol = iVolumen(NULL,PERIOD_M5,0);
while(pos>=0)
{
ind[0] = MA_Close;
ind[1] = MA_High;
ind[2] = MA_Low;
ind[3] = MA_Open;
ind[4] = Macd;
ind[5] = Rsi;
ind[6] = Stoch;
ind[7] = Vol;
myindex = gepModel(ind);
pos--;
}
Print( " Myindex = " , myindex);
return (myindex);
}
=========================DLL Código fuente ===========================
#include "stdafx.h"
#include "JadeClass.h"
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define MT4_EXPFUNC __declspec(dllexport)
// El único objeto CJadeClassApp
CJadeClassApp laApp;
MT4_EXPFUNC int __stdcall gepModel(double d[]);
MT4_EXPFUNC int __stdcall gepModel(double d[])
{
.....
.....
.....
.....
}
============================ El archivo Def para el código fuente de la DLL ===================
; JadeClass.def : Declara los parámetros del módulo para la DLL.
LIBRARY "JadeClass"
EXPORTACIONES
; Las exportaciones explícitas pueden ir aquí
gepModel
========================================
Necesito ayuda para añadir código para una sola operación por señal
Estoy aprendiendo el código de mq4 y he pasado muchas horas tratando de averiguar cómo codificar una sola operación por señal. He intentado algunas maneras, pero no puedo conseguir que hacer sólo un comercio. Por ejemplo, si el TP es golpeado, colocaría otra operación del mismo lado debido a que la señal sigue siendo buena. Me gustaría que esperara hasta la señal inversa y luego poner en ese comercio. He adjuntado el EA aquí sin ninguno de mis cambios. Gracias de antemano por la ayuda. Marty
Estoy aprendiendo el código de mq4 y he pasado muchas horas tratando de averiguar cómo codificar sólo una operación por señal. He intentado varias formas pero no puedo conseguir que se haga una sola operación. Por ejemplo, si el TP es golpeado, colocaría otra operación del mismo lado debido a que la señal sigue siendo buena. Me gustaría que esperara hasta la señal inversa y luego poner en ese comercio. He adjuntado el EA aquí sin ninguno de mis cambios. Gracias de antemano por la ayuda. Marty
Descubrí cómo hacer esto recientemente en mql4.com después de tener problemas con demasiadas operaciones abiertas en una barra. Los artículos en mql4 me ayudaron bastante al principio, además tienen una base de datos de código que te da buenos ejemplos para trabajar. Este sitio web tiene una excelente historia de los mensajes y algunos codificadores realmente bueno, sólo tiene que utilizar el servicio de búsqueda y haga clic en el botón de visualización como mensajes, le ahorra buscando a través de páginas y páginas de un tema sólo para la respuesta que usted necesita. En cuanto a su problema sólo tiene que utilizar este código:
if(Bars<BarsCount)
{
//Code to do once goes here
BarsCount=Bars;
}
[/CODE]
Personally I'm having problems with an array. I cant for the life of me figure out why the following code returns 0 all the time... Any help would be much appreciated. I'm trying to create an array of length STD_MA_Period+1 to later use with iMAOnArray but it doesnt work so its back to the drawing board I guess.
[CODE]for(i=0;i<=STD_MA_Period+1;i++)
{
STD_MA_Buffer=iStdDev(Symbol(),Period(),STD_Period,0,MODE_SMA,PRICE_CLOSE,i);
}
Print(STD_MA_Buffer[1]);PS double STD_MA_Buffer[]; está definido en la sección de variables globales.
arreglar mi EA, por favor
tengo alguna idea pero puedo escribirla en código mql4, ¿me pueden ayudar?
este es mi problema
esta es la definición de mi sistema:
A. si ordenes=0 >> OP compra && OP venta
B. hacer la rejilla por la condición + o -
ex. si OPbuy + grid = OPbuy
si OPbuy - grid = OPsell
lo mismo para OPsell
C. si beneficio > 0 && beneficio > beneficio mínimo ( bloqueo de beneficio )
detener cualquier orden ( OP compra || OP venta ) y mover la equidad de arrastre o el punto de beneficio
D. cerrar por beneficio puede ser por equidad o por punto
E. formato .mq4 porque quiero saber donde esta mi error
tengo problemas en el punto B. por favor ayudenme
Tengo alguna idea pero puedo escribirlo en código mql4, ¿pueden ayudarme?
este es mi problema
esta es la definición de mi sistema:
A. si órdenes=0 >> OP comprar && OP vender
B. hacer la rejilla por la condición + o -
ex. si OPbuy + grid = OPbuy
si OPbuy - grid = OPsell
lo mismo para OPsell
C. si beneficio > 0 && beneficio > beneficio mínimo ( bloqueo de beneficio )
detener cualquier orden ( OP compra || OP venta ) y mover la equidad de arrastre o el punto de beneficio
D. cerrar por beneficio puede ser por equidad o por punto
E. formato .mq4 porque quiero saber donde esta mi error
Tengo un problema en el punto B. Por favor, ayúdame¿Qué hay de enviar el código fuente en lugar de ex4?
¿Qué hay de enviar el código fuente en lugar de ex4?
sólo muéstrame cómo codificarlo,
esta es mi última declaración detallada
arreglar este.rar
Espero que pueda entender mi EA, el problema que el bucle en OP vender por qué?
Pregunta sobrela línea de tendencia
Nuevo en la codificación y sólo haciendo cosas para practicar, quería detener una línea de tendencia en la barra actual. Lo que se me ocurrió fue simplemente cambiar el color de la misma en la barra actual al color de fondo. En esencia, sólo la mezcla de la línea más allá de la barra en el fondo y hacer que desaparezca en ese punto.
Así que ahora pregunto a los expertos cuál es la forma correcta de hacerlo. Sé que hay muchas maneras de lograr lo mismo, así que sólo estoy buscando para ver algunas otras ideas sobre lo que podría haber hecho, en un esfuerzo por aprender más.
Gracias
Comportamiento muy extraño del código MQL
Hola a todos,
Versión de Metatrader: 4.00 Build 224 (15 de mayo de 2009)
Versión de Metaeditor: 4.00 Build 224 (14 de mayo de 2009)
Me he encontrado con un error muy extraño en MQL que me tiene completamente desconcertado, tanto que estoy revisando TODO mi código antiguo para asegurarme de que está escrito para evitar este problema.
Espero que alguien pueda arrojar algo de luz sobre lo que exactamente está pasando aquí.
Aquí está el código, un simple indicador que esencialmente no hace nada. Sin embargo en la sección init() he colocado una llamada a 2 funciones cuando el periodo del gráfico es H1.
Las dos funciones son idénticas en todos los aspectos menos en uno. Una tiene definida una matriz int estática y la otra tiene definida una matriz int no estática. Todo lo que hacen las funciones es imprimir el tamaño de su matriz definida localmente, asignar algunos valores a los elementos de la matriz y luego imprimirlos.
#property indicator_chart_window
void afunc() {
int i;
int array[4];
array[0] = 100;
array[1] = 101;
array[2] = 102;
array[3] = 103;
Print("afunc array[4] size="+ArraySize(array));
for (i = 0; i < 4; i++) {
Print("afunc array["+i+"]="+array);
}
}
void afunc_static() {
int i;
static int array[4];
array[0] = 100;
array[1] = 101;
array[2] = 102;
array[3] = 103;
Print("afunc_static array[4] size="+ArraySize(array));
for (i = 0; i < 4; i++) {
Print("afunc_static array["+i+"]="+array);
}
}
int init() {
if (Period() == PERIOD_H1) {
afunc();
afunc_static();
}
return(0);
}
int deinit() {
return(0);
}
int start() {
return(0);
}
Si miras el código no debería haber ninguna circunstancia en la que las dos funciones se comporten de forma diferente una de otra.
Sin embargo, si adjunto el indicador a un gráfico M5 y luego cambio al marco temporal H1 obtengo la siguiente salida.
2009.05.23 18:12:47 afunc EURUSD,H1: initialized
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[3]=103
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[2]=102
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[1]=101
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[0]=100
2009.05.23 18:12:47 afunc EURUSD,H1: afunc_static array[4] size=4
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[3]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[2]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[1]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[0]=0
2009.05.23 18:12:47 afunc EURUSD,H1: afunc array[4] size=0
2009.05.23 18:12:47 afunc EURUSD,M5: uninit reason 3
2009.05.23 18:12:47 afunc EURUSD,M5: deinitialized
2009.05.23 18:12:45 afunc EURUSD,M5: inicializado
2009.05.23 18:12:43 afunc EURUSD,M5: cargado con éxito
Fíjate que aunque he definido 'int array[4]' en afunc() el tamaño de ese array es realmente CERO y no puedo asignar valores a los elementos del array. Esta función obviamente no funciona como se esperaba.
Fíjate que he definido 'static int array[4]' en afunc_static() y el tamaño se muestra correctamente como 4 al igual que los valores que he asignado a los elementos del array. Esta función funciona bien.
En resumen. Si defines una matriz no estática en una función y si esa función no es llamada por tu indicador, entonces podrías tener un problema.
Si posteriormente cambia el marco de tiempo del gráfico y luego llama a la función, el tamaño de cualquier matriz definida localmente en la función será cero, independientemente de lo que haya definido el tamaño de las matrices.
La única manera de evitar este problema, por lo que puedo ver, es asegurarse de que cualquier matriz definida localmente en sus funciones se define como una matriz estática. Es una locura, pero no veo otra forma de evitar el problema.
Agradecería cualquier comentario sobre este tema.
Saludos,
Laurence.