[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 104

 
¿Podemos crear un EA que cierre todas las órdenes cuando se dispare el take-profit de la última orden abierta?
 

Queridos programadores

Ayuda, por favor. El indicador dibuja valores en una divergencia latente alcista, y no dibuja una latente bajista.... Escribe, que el error 4002 - índice de matriz - fuera de rango.

Parece que he arreglado todo... Me llevó toda una tarde... Y es una pena - el código es el más simple... Pero está dibujando toros con flechas, pero no osos... ¡POR FAVOR! ¿Cuál es el error en ?????????????????????

//+------------------------------------------------------------------+
//| div zz 5.mq4 ||
//+------------------------------------------------------------------+

#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 4
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
#property indicator_color3 BlueViolet
#property indicator_color4 Rojo
#define flechasDesplazamiento 0.0001
doble cci[];
doble cci1[];
double bullishDivergence[];
double bullishDivergence[];

//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores

SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1, DRAW_NONE);
SetIndexStyle(2, DRAW_ARROW);
SetIndexStyle(3, DRAW_ARROW);

SetIndexBuffer(0, cci);
SetIndexBuffer(1, cci1);
SetIndexBuffer(2, bullishDivergence);
SetIndexBuffer(3, bullishDivergence);

SetIndexArrow(2, 233);
SetIndexArrow(3, 234);

return(0);
}
//+------------------------------------------------------------------+
//| Función de desinicialización del indicador Custor |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Función de iteración de indicadores personalizada |
//+------------------------------------------------------------------+
int inicio()
{
int barras_contadas=IndicadorContado();
//---- la última barra contada se volverá a contar
if(counted_bars>0) counted_bars--;
//int limit=Barras_contabilizadas;
doble vpadcci[];
doble v[];
doble hh[];
doble ss[];



for (int i=500; i>=0; i--)
{
cci[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i);
si (
(cci[i]<cci[i-1])&&
(cci[i]<cci[i-2])&&
(cci[i]<cci[i+1])&&
(cci[i]<cci[i+2])
)
{
vpadcci[i]=cci[i];
ss[i]=Low[i];
}
}



for(int j=500; j>0; j--)
{
cci[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j);
si (
((cci[j+1]>vpadcci[10])&&
(cci[j]<vpadcci[10])&&
(low[j]>ss[10])) |||
((cci[j+1]>vpadcci[9])&&
(cci[j]<vpadcci[9])&&
(low[j]>ss[9])) |||
((cci[j+1]>vpadcci[8])&&
(cci[j]<vpadcci[8])&&
(low[j]>ss[8])) |||
((cci[j+1]>vpadcci[7])&&
(cci[j]<vpadcci[7])&&
(low[j]>ss[7])) |||
((cci[j+1]>vpadcci[6])&&
(cci[j]<vpadcci[6])&&
(low[j]>ss[6])) |||
((cci[j+1]>vpadcci[5])&&
(cci[j]<vpadcci[5])&&
(low[j]>ss[5])) |||
((cci[j+1]>vpadcci[4])&&
(cci[j]<vpadcci[4])&&
(low[j]>ss[4])) |||
((cci[j+1]>vpadcci[3])&&
(cci[j]<vpadcci[3])&&
(low[j]>ss[3])) |||
((cci[j+1]>vpadcci[2])&&
(cci[j]<vpadcci[2])&&
(low[j]>ss[2])) |||
((cci[j+1]>vpadcci[1])&&
(cci[j]<vpadcci[1])&&
(low[j]>ss[1])) |||
((cci[j+1]>vpadcci[0])&&
(cci[j]<vpadcci[0])&&
(low[j]>ss[0])
)

{ bullishDivergence[j] = Low[j] - arrowsDisplacement;
}
}


for (i=1; i<500; i++)
{
cci1[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i);
si
(
(cci1[i]>cci1[i-1])&&
(cci1[i]>cci1[i-2])&&
(cci1[i]>cci1[i+1])&&
(cci1[i]>cci1[i+2])
)
{
v[i]=cci1[i];
hh[i]=Alto[i];
}
}



for(j=1; j<500; j++)
{
cci1[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j);
si (
((cci1[j+1]<v[10])&&
(cci1[j]>v[10])&&
(alto[j]<hh[10])) |||
((cci1[j+1]<v[9])&&
(cci1[j]>v[9])&&
(alto[j]<hh[9])) |||
((cci1[j+1]<v[8])&&
(cci1[j]>v[8])&&
(alto[j]<hh[8])) |||
((cci1[j+1]<v[7])&&
(cci1[j]>v[7])&&
(alto[j]<hh[7])) |||
((cci1[j+1]<v[6])&&
(cci1[j]>v[6])&&
(alto[j]<hh[6])) |||
((cci1[j+1]<v[5])&&
(cci1[j]>v[5])&&
(alto[j]<hh[5])
)

{ { cci1[j]= Alto[j] + flechasDesplazamiento;

}
}


return(0);
}



Archivos adjuntos:
divfzzg5.mq4  5 kb
 
Transferido desde otro hilo. Aquí se recomienda hacer preguntas sencillas. El código debe ser publicado a través del botón SRC, ya que es mucho más fácil de leer.
<br / translate="no">.
KoDim 14.02.2011 09:29
Hola.

Mientras programaba el Asesor Experto, estaba perplejo por el parámetro ma_shift- desplazamiento de la línea media en las barras. Si el desplazamiento es positivo, la línea se desplaza hacia la derecha. Y viceversa, si el desplazamiento es negativo, la línea se desplaza hacia la izquierda.
Si se utiliza un valor positivo, se abre una orden al cruzar las medias.
Sin embargo, si ponemos el parámetro en negativo, la orden no se abre.
¿Qué tiene esto que ver?

Este es un extracto del código

SMFast0=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 0 ); // МА быстрая на текущем баре
SMFast1=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 1 ); // МА быстрая на первом баре

SMSlow0=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 0 ); // МА медленная на текущем баре
SMSlow1=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 1 ); // МА медленная на первом баре

if(SMFast0>SMSlow0 && SMFast1<SMSlow1)

{
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}

if(SMFast0<SMSlow0 && SMFast1>SMSlow1)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
} 
 

Hola, hace tiempo que intento aprender a escribir EAs, así que aquí va una pregunta. ¿Cómo puedo prescribir el EA para poner un stop loss después de poner un stop buy o un stop loss? Es decir, después de la parada de compra y la parada se sentó durante 5 puntos (más o menos hablando), el EA inmediatamente se puso un stop loss.

 
Poseidon:
¿Es posible crear un EA que cierre todas las órdenes cuando se active el take-profit de la última orden abierta?

Puedes hacerlo.

Pupersa ,busca esta orden y cambia el parámetro "stop loss".

KoDim, ¿quizás porque los valores están desplazados a la izquierda, en las barras de la derecha (cruce en el que se puede comprobar) no existen en absoluto?

 

pregunta a los programadores: ¿cómo hacer que el número después del punto decimal sea un entero?)

por ejemplo, el número 1,128 necesita 128, el número 1,12 necesita 12, el número 1,2 necesita 2)

El número es una variable externa.

 
Pregunta sobre MT5. ¿Cómo puedo saber si el comprobador ha completado su trabajo? Excepto visualmente :)
 
eddy:

pregunta a los programadores: ¿cómo hacer que el número después del punto decimal sea un entero?)

Por ejemplo, el número 1,128 necesita 128, el número 1,12 necesita 12, el número 1,2 necesita 2)

El número es una variable externa.


ver aquí: https://docs.mql4.com/ru/basis/operations/math
 
nemo811:


Si el dinero y los volúmenes (y no las ondas de Elliott) actúan en el mercado, y el movimiento de los precios no es caótico, sino impulsado por los volúmenes, entonces dos señales en 2 pares (de los tres considerados) darán una señal más fuerte en el tercer par. Busque los niveles de acumulación de órdenes, analice el VSA y encontrará las X e Y necesarias)))

Además (véase la figura), un claro plano de un par de divisas (formado por 2 divisas) no impide que un tercer par de divisas (los 2 pares restantes) tenga tendencia. Si hay una tendencia de más de una moneda, se crea una especie de "caos de mercado". Dado que las tendencias intradía son menos estables que las de medio y largo plazo, este caos es más pronunciado en los pequeños TF.

Estudiando el mercado desde esta perspectiva, tiendo a pensar que la tendencia de las propias divisas (y no de los pares de divisas) es más estable, ya que de lo contrario obtendríamos un gráfico de osciladores que no se puede analizar en absoluto.

Eso es lo que me dice esta foto. ))))

Laspruebas del índice del dólar en M1 y M5 dieron peores resultados que el GBP/USD. Los grandes TFs no pueden ser probados debido a que el archivo histórico es muy pequeño. Fibogroup no da mucho por Nedex, y muchas empresas de corretaje no lo dan en absoluto. Por eso es problemático estudiar las tendencias de las divisas y trabajar con lotes pequeños (0,01) .....
 
eddy:

pregunta a los programadores: ¿cómo hacer que el número después del punto decimal sea un entero?)

Por ejemplo, el número 1,128 necesita 128, el número 1,12 necesita 12, el número 1,2 necesita 2)

El número es una variable externa.

double a = 1.123345;
int b = a;
Esto también es posible.