Ayuda a la codificación - página 167

 

Quiero utilizar "PRECIO DE CIERRE" en lugar de precio medio en la siguiente codificación .... Por favor, ayúdenme:

Muchas gracias

int inicio()

{

double PrecioCierre=Cierre[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

int counted_bars = IndicatorCounted();

//---- comprobar posibles errores

if(counted_bars < 0) return(-1);

//---- la última barra contada se vuelve a contar

if(counted_bars > 0) counted_bars--;

limit=Barras-1-barras_contadas;

//Imprimir(límite);

//----

for (i = Barras; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("precio medio: "+precio medio);

up=PrecioMedio+(Multiplicador*atr);

//Imprime("subida: "+subida);

dn=Precio medio-(Multiplicador*atr);

//Print("dn: "+dn);

trend=1;

si (Cierre>subida) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

si (trend == 1) changeOfTrend = 1;

//Imprimir("tendencia: "+tendencia);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

si (trend0) {

flag=1;

//Print("flag: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

flagh=1;

//Print("flagh: "+flagh);

}

else {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

si (trendup)

up=up;

si (flag==1)

up=Precio medio+(Multiplicador*atr);

si (flagh==1)

dn=precio medio-(multiplicador*atr);

//-- Dibuja el indicador

si (trend==1) {

TrendUp=dn;

si (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=up;

si (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Punto);

}

}

WindowRedraw();

//----

return(0);

}

 
rpasupathy:
Quiero usar "CLOSE PRICE" en lugar de Median price en la siguiente codificación .... Por favor, ayúdeme:

Muchas gracias

int inicio()

{

double PrecioCierre=Cierre[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

int counted_bars = IndicatorCounted();

//---- comprobar posibles errores

if(counted_bars < 0) return(-1);

//---- la última barra contada se vuelve a contar

if(counted_bars > 0) counted_bars--;

limit=Barras-1-barras_contadas;

//Imprimir(límite);

//----

for (i = Barras; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("precio medio: "+precio medio);

up=PrecioMedio+(Multiplicador*atr);

//Imprime("subida: "+subida);

dn=Precio medio-(Multiplicador*atr);

//Print("dn: "+dn);

trend=1;

si (Cierre>subida) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Print("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

si (trend == 1) changeOfTrend = 1;

//Imprimir("tendencia: "+tendencia);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

si (trend0) {

flag=1;

//Print("flag: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

flagh=1;

//Print("flagh: "+flagh);

}

else {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

si (trendup)

up=up;

si (flag==1)

up=Precio medio+(Multiplicador*atr);

si (flagh==1)

dn=precio medio-(multiplicador*atr);

//-- Dibuja el indicador

si (trend==1) {

TrendUp=dn;

si (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=up;

si (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Punto);

}

}

WindowRedraw();

//----

return(0);

}

Puedes sustituir :

(Alto+Bajo)/2

por

Cerrar

 
mladen:
kenwa

¿De qué funcionalidad del símbolo autocheck estás hablando? No existe tal cosa en ese código

Todo lo que tienes que hacer es introducir el símbolo en el campo de parámetro apropiado y funcionará (en cualquier símbolo, siempre que el nombre del símbolo sea correcto) Utiliza el indicador que el fareastol proporcionó ya que hace todo lo que estabas hablando de que lo necesitas

hola mladen

veo esto dentro:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

algunas partes:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y);

}

}

No puedo saber exactamente lo que está haciendo, ya que mi habilidad no puede saber su propósito exacto, pero de mi conjetura en bruto, parece que el código es auto detectar si la entrada externa de un símbolo, a continuación, mostrar en el gráfico, si no hay ninguna entrada, se mostrará el gráfico local de Null. entonces voy a pensar si intencionalmente dejar varios cadena de entrada externa en blanco fuera (llenando nada allí), será el indicador repetidamente (al menos superponer) mostrar el gráfico local de Null varias veces? también como se adapta el código a los símbolos internos preestablecidos? no se que tan exacto hacer, pero lo intento, es como la forma de hacer el adjunto (desensibilizar la función/reconocimiento de los símbolos de entrada externos)? o como se adapta modificar a los símbolos internos preestablecidos?

Por cierto, ¿por qué la versión que hice antes de la página 166 #1660, sigue repintando en vivo? Gracias por los consejos.

 
kenwa:
hola mladen

veo esto dentro

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

algunas partes:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));

for (int i=limit; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y);

}

}

No puedo saber exactamente lo que está haciendo, ya que mi habilidad no puede saber su propósito exacto, pero de mi conjetura en bruto, parece que el código es auto detectar si la entrada externa de un símbolo, a continuación, mostrar en el gráfico, si no hay ninguna entrada, se mostrará el gráfico local de Null. entonces voy a pensar si intencionalmente dejar varios cadena de entrada externa en blanco fuera (llenando nada allí), será el indicador repetidamente (al menos superponer) mostrar el gráfico local de Null varias veces? ¿también cómo se adapta el código a los símbolos internos preestablecidos? no sé cómo hacerlo exactamente, pero lo intento, ¿es como la forma de adjuntarlo (desensibilizar la función/reconocimiento del símbolo de entrada externo)? o ¿cómo adaptarlo para modificarlo a los símbolos internos preestablecidos?

Por cierto, ¿por qué la versión que hice antes de la página 166 #1660, sigue repintando en vivo? ¿qué razones básicas causan tal repintado? Gracias por los consejos.

Puedes consultar el indicador de este post : https://www.mql5.com/en/forum/178416/page19 para ver como se pueden hacer algunos controles adicionales

 

para #1664, leer y descargar antes, no puedo adaptar los códigos, demasiado avanzado y complejo para mí.

 
kenwa:
para el #1664, leer y descargar antes, no puedo adaptar los códigos, demasiado avanzados y complejos para mí.

No todo puede escribirse en dos líneas. En algunos casos es imposible

 
fareastol:
Hola Mladen

En relación con mi petición de calcular el POC y el VA para una banda objetivo basada en un perfil de mercado determinado, lo he intentado con todas mis fuerzas. Lamentablemente, sólo he conseguido el valor POC. Obtener los valores de VA High/Low están más allá de mi capacidad actual.

Además, al principio de la semana, el indicador original Level Sensor parece tener un error en su código, causando una visualización terrible como se puede ver en la imagen adjunta. No puedo entender la razón, sólo supongo que se relaciona con los conflictos entre la pantalla por defecto de MT4 y los datos de marco de tiempo inferior (<W1).

Por favor, echar un vistazo y me dan consejos para seguir adelante.

Gracias profundamente,

fareastol

fareastol

Eso de la pantalla está ocurriendo porque hay un espacio de tiempo en el gráfico entre los datos del último viernes y los del primer domingo o lunes y cuando se añade el tiempo de xshift a los tiempos de la línea.

Una posible solución es la de esta versión : invertir la pantalla y en vez de mostrarla de derecha a izquierda mostrarla de izquierda a derecha (como en la imagen). Hasta ahora no he encontrado una solución para la visualización de derecha a izquierda

Archivos adjuntos:
 

A veces basta con pensar un poco (en cuanto terminé el post anterior la idea estaba ahí )

Aquí está la solución "de derecha a izquierda" (por lo que he probado funciona bien ahora)

Archivos adjuntos:
 

Hola,

He calculado la línea de desviación estándar "a mano".

Ahora quiero dibujar un canal como el canal de desviación original del metatrader.

Pero no sé cómo calcular el factor = 0,618 a mi línea de desviación normal para que funcione como el canal original ...OBJPROP_DEVIATION,0,618)

 

Hola Mladen,

Me recuerdas muchas cosas significativas y me motivas mucho.

Gracias por todo

fareastol

Razón de la queja: