[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 324
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hola a todos.
He estudiado el Asesor Experto MQL4 durante un mes y decidí escribir un Asesor Experto. No quise escribir uno nuevo debido a la falta de experiencia y decidí usar la plantilla tradingexpert.mq4 del libro.
La esencia de la estrategia es la siguiente: un sistema de tres barras de máximos y mínimos de "Larry Williams", trazar dos EMAs de tres días para máximos y mínimos, vender
a los altos y compra a los bajos.
En la plantilla, en la sección de variables globales he eliminado la línea extern double Rastvor =28,0; (en realidad no es necesaria) y también la he eliminado de los criterios de negociación.
Se han cambiado los valores de MA a 3 en las variables globales:
extern int Period_MA_1= 3; // Periodo MA 1
extern int Period_MA_2= 3; // Periodo MA 2
En el apartado de criterios de negociación estaba:
//--------------------------------------------------------------- 5 --
// Criterios de negociación
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2
if (PRICE_HIGH * Point >= MA_1_t * Point)
{
Opn_S=true;
Cls_B=true;
}
if (PRICE_LOW * Point <= MA_2_t * Point)
{
Opn_B=true; //criterio de apertura. Comprar
Cls_S=true; // Criterio de cierre. Sell
}
//---------------------------------------------------------------
Ahora el quid del problema: el sistema sólo abre órdenes de venta, pero no quiere comprar. ¿Cuál puede ser el error?
Es muy posible que haya errores en alguna otra parte, por favor no juzgue con dureza sino que ayude con consejos)
//--------------------------------------------------------------- 5 --
// Criterios de negociación
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,0); // MA_2
if (PRICE_HIGH * Point >= MA_1_t * Point)
{
Opn_S=true;
Cls_B=true;
}
if (PRICE_LOW * Point <= MA_2_t * Point)
{
Opn_B=true; //criterio de apertura. Comprar
Cls_S=true; // Criterio de cierre. Sell
}
//---------------------------------------------------------------
Ahora el quid del problema: el sistema sólo abre órdenes de venta, pero no quiere comprar. ¿Cuál puede ser el error?
Es muy posible que tenga errores en alguna otra parte. Por favor, no juzguen, pero ayúdenme con consejos).
¿Qué es esto? PRICE_LOW y PRICE_HIGH. Son constantes enteras que tienen valor 0 o 1, hasta 6.
Debe utilizar iHigh(Symbol(),Period(),i) para obtener el valor máximo de BID en la barra i, e iLow(Symbol(),Period(),i) para obtener el valor mínimo de BID en la barra i.
Si se da una vuelta en la barra actual entonces: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) Y no es necesario multiplicar MA por Point.
¡Buenas tardes a todos!
Por favor, dígame cuál es el problema.
He adjuntado un indicador de volumen (Volume) al indicador estándar Awesome.
Quiero organizar el cálculo del volumen total de la onda (contado desde el precio mínimo hasta el máximo y que corresponde al valor mínimo y máximo de Awesome). Véase la figura 1.
Cuál es el error, los valores no se cuentan.
A continuación se muestra el código propiamente dicho.
¿Qué es esto? PRICE_LOW y PRICE_HIGH. Son constantes enteras con valor 0 o 1, hasta 6.
Debería utilizar iHigh(Symbol(),Period(),i) para obtener el valor máximo de BID en la barra i, e iLow(Symbol(),Period(),i) para obtener el valor mínimo de BID en la barra i.
Si se da una vuelta en la barra actual, entonces: if ( iHigh(Symbol(),Period(),0) >= MA_1_t) Y no es necesario multiplicar MA por Point.
Chicos, ¡que alguien me diga qué pasa con el código, por favor!
Chicos, ¡que alguien me diga qué pasa con el código, por favor!
No lo entiendo. Pero no hay problemas con la visualización del volumen. Hay problemas con el cálculo de los volúmenes. En algún lugar de aquí.
¡Buenas tardes!
Mi pregunta se sale un poco del tema.
¿Podría decirme si es posible encontrar en algún lugar el corte de las formas de AT como archivos CSV? Puedo utilizar txt, xls o cualquier otro formato que se pueda procesar mediante programación.
Hay ejemplos de figuras de AT en varios artículos de AT, libros de texto, pero por supuesto como imágenes ordinarias. ¿Alguien tiene conjuntos más o menos grandes de símbolos de AT guardados como una porción de la historia de algún par de divisas en los períodos H1-H4, digamos?
He buscado en Google y no he encontrado nada. Por supuesto, podemos recorrer manualmente el historial, marcar las formas, exportar este trozo de historial como .csv; repetir el número de veces necesario, y recoger la base de formas al final. Pero si alguien ya lo ha hecho, me gustaría ahorrar tiempo.
Gracias de antemano :)
¿Por qué necesita las formas como archivos CSV? Escribir una biblioteca de formas... Escríbalos usted mismo, para poder entenderlos, no pida prestados los de otra persona. Mucho no significa mejor.
No lo entiendo. Pero no hay ningún problema con la visualización de los volúmenes. Hay un problema con el recuento del volumen. En algún lugar de aquí.
1. La matriz necesita ser colocada - es decir, asignar memoria. De lo contrario, simplemente no hay ningún lugar para almacenar los valores ;).
2. Cuando reciba un nuevo tick, su matriz colocada de forma uniforme será reposicionada/reiniciada. Esto tiene que ver con el alcance. El array debe ser de tipo "estático" para evitar que esto ocurra.
Lee algo sobre los fundamentos de la programación.
HZ El problema del recuento es donde te señalé los errores de uso del array.
1. Un array debe ser localizado, en otras palabras, la memoria debe ser asignada. De lo contrario, no hay lugar para almacenar valores ;).
2. Cuando reciba un nuevo tick, su matriz colocada de forma uniforme será reposicionada/reiniciada. Esto tiene que ver con el alcance. El array debe ser de tipo "estático" para evitar que esto ocurra.
Lee algo sobre los fundamentos de la programación.
HZ El problema del recuento es donde te he señalado errores en el uso de los arrays.
Es decir,Vol_Arr[ ]debe ser inicializado como un array global según entiendo.
La pregunta es por supuesto una pregunta nula, PERO.
1. Por qué entonces los volúmenes se muestran correctamente en el indicador.
2. Al calcular, accedo aAOBuffer3[] y no aVol_Arr[].
Gracias.