¡Pide! - página 130

 
Dave137:

Ahora mismo, tanto el color 1 como el 2 aparecen en negro en el gráfico.

¿Puede algún experto Gurú ayudarme a resolver este problema?

¡Gracias por adelantado!

color Color1;

color Color2;

FerruFx

 

Por favor, alguien puede explicarme cómo puedo deshacerme del problema "OrderModify error 1". He estado buscando y parece que necesito NormalizeDouble(), pero he normalizado todo de aquí a la luna y todavía me sale el error.

Cuando lo entienda creo que podré solucionarlo, por favor alguien puede ayudar. gracias.

También estoy recibiendo un "error de datos no coincidentes(límite de volumen 31 en 2008.04.16 07:30 superado)" si alguien sabe a qué se debe agradecería la ayuda.

 
FerruFx:
color Color1;

color Color2;

FerruFx

SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2);

Intenté insertar el color por todas partes, un paso y prueba a la vez, y o bien obtengo un error para las dos declaraciones anteriores -')' - se espera una coma o un punto y coma o ningún error, pero entonces todo se muestra en negro.

Esto realmente me confunde - ¿Alguna otra sugerencia?

Dave

 

@xerof123 - este error se produce cuando se intenta modificar una orden con los mismos valores que ya tiene la orden abierta. El otro problema es la falta de coincidencia de precios entre los diferentes marcos temporales - para deshacerse de ellos, eliminar y regenerar todos los datos de ticks a través del menú del Centro de Historia.

@Dave137 - por dónde empezar, tienes color1, color2 definidos como tipo cadena, mientras que estos son de tipo color. Ten en cuenta que la palabra clave 'color1' en la definición de las 'propiedades' es sólo asignar un valor, por lo que cuando más tarde se define color1, color2, que podría ser fácilmente llamado c1,c2. Además, tenga en cuenta que no necesita usar 'properties color1' para empezar, ya que los está estableciendo manualmente en la función init() de todos modos. También, revise otros indicadores sobre cómo usar de '#propiedades indicadores buffers x' y 'indicadoresbuffers(x)'...

 

Gracias tortilla,

He intentado todo lo que he podido, llevo 6 días sin parar y me ha vencido...

Por favor, puedes mirar el código aquí y decirme por qué me sale el desgraciado "OrderModify error 1".

He probado a normalizar, he probado diferentes lógicas, diablos incluso he probado a ofrecerle una cerveza.

Realmente aprecio su ayuda. Gracias

for(int i=OrdersTotal()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

if(OrderType()<=OP_SELL) ordtotal++;

if(OrderType()==OP_BUY)

{

if(bep==true && Bid-OrderOpenPrice()>=Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()+7*Point,0,0,0)==true) bep=false;

return(0);

}

if((NormalizeDouble( Bid, Digits)-OrderOpenPrice())>=TS_start*Point)

{

if((NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits)) > TS_start*Point &&

(NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits) - TS_start*Point)>=(TrailEvery-1)*Point)

{

si (TS_start > OrderStopLoss()+Punto)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask - Point*TS_start ,0,0,SkyBlue);

return(0);

}

}

}

}

if(OrderType()==OP_SELL)

{

if(bep==true && OrderOpenPrice()-NormalizeDouble( Ask, Digits) >= Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()-7*Point,0,0,0)==true) bep=false;

return(0);

}

if((OrderOpenPrice()-NormalizeDouble( Ask, Digits)) >= TS_start*Point)

{

if((NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)) > TS_start*Point &&

(NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)-TS_start*Point)>=(TrailEvery-1)*Point)

{

si (TS_start > OrderStopLoss() +Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask + Point*TS_start ,0,0,Orange);

return(0);

}

}

}

}

}

}

 
Dave137:
SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2);

He probado a insertar el color por todas partes, un paso y una prueba a la vez, y o bien me da un error para las dos declaraciones anteriores')' - se espera una coma o un punto y coma o ningún error, pero entonces todo se muestra en negro.

Esto realmente me confunde - ¿Alguna otra sugerencia?

Dave

No, usted hace los cambios incorrectos.

Debes cambiar esto:

cadena Color1;

cadena Color2;

Por esto:

color Color1;

color Color2;

Eso es todo.

FerruFx

 

¿Cómo puedo conseguir que este indicador alerte cuando la vela toca la línea superior o inferior y la pendiente cambia de arriba a abajo o viceversa?

#property copyright "ANG3110@latchess.com"

//----------------------------------

#property ventana_del_gráfico

//----------------------------------

extern int Horas=24;

extern color col=Aqua;

//------------------

double lr,lr0,lrp

double sx,sy,sxy,sx2,aa,bb;

int p,sNombre,fs;

int f,f0,f1;

double dh,dl,dh_1,dl_1,dh_2,dl_2

int ai_1,ai_2,bi_1,bi_2;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap

double precio_p1,precio_p0,precio_p2,precio_01,precio_00,precio_02;

int p1,p0,p2,fp;

//*****************************************

int init() {

p=Horas*60/Periodo();

if (fs==0) {sName=CurTime(); fs=1;}

return(0);}

//*******************************

int deinit() {

ObjectDelete("1"+sName);

ObjectDelete("0"+sName);

ObjectDelete("2"+sNombre); }

//*******************************

int inicio() {

int i,n;

//------------------------------------------------------------------------------

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));

if (fp==0 && p!=p1) {p=p1; fp=1;}

if (fp==0 && p!=p0) {p=p0; fp=1;}

if (fp==0 && p!=p2) {p=p2; fp=1;}

}

//====================================================

sx=0; sy=0; sxy=0; sx2=0;

for (n=0; n<=p; n++) {sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);

//----------------------------------------------------

for (i=0; i<=p; i++) {

lr=bb+aa*i;

dh=Alto-lr; dl=Bajo-lr;

//----------------------------------------------------

if (i<p/2) {if (i==0) {dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;}

si (dh>=dh_1) {dh_1=dh; ai_1=i;}

si (dl<=dl_1) {dl_1=dl; bi_1=i;}}

//----------------------------------------------------

if (i>=p/2) {if (i==p/2) {dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;}

si (dh>=dh_2) {dh_2=dh; ai_2=i;}

si (dl<=dl_2) {dl_2=dl; bi_2=i;}}

//-------------------------------------

lr0=bb; lrp=bb+aa*(i+p);

//===================================================

si (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;

si (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;

if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

si (f==1) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {hai=Alto[ai_1]*(i-ai_2)/(ai_1-ai_2)+Alto[ai_2]*(i-ai_1)/(ai_2-ai_1);

si (i==0 || i==p/2) dhm=0,0;

si (Alta-hai>dhm && i<p/2) {ai_1=i; f1=1;}

si (Alta-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {hai=Alto[ai_1]*(i-ai_2)/(ai_1-ai_2)+Alto[ai_2]*(i-ai_1)/(ai_2-ai_1)

dli=Low-hai;

si (i==0) dlm=0,0; si (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

//----------------------------

precio_p1=hap;

precio_p0=hap+dlm/2;

price_p2=hap+dlm;

price_01=ha0;

price_00=ha0+dlm/2;

price_02=ha0+dlm;

}

//=================================================

si (f==2) {

for (n=0; n<=20; n++) { f1=0;

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);

si (i==0 || i==p/2) dlm=0,0;

si (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}

if (Low-lai=p/2) {bi_2=i; f1=1;}}

if (f==0) break;}

//----------------------------

for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1)

dhi=Alta-lai;

si (i==0) dhm=0,0; si (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

//----------------------------------------------------------------

precio_p1=lap;

precio_p0=lap+dhm/2;

price_p2=lap+dhm;

price_01=la0;

price_00=la0+dhm/2;

price_02=la0+dhm;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);

ObjectCreate("0"+sName,2, 0,Tiempo[p],precio_p0,Tiempo[0],precio_00);

ObjectCreate("2"+sName,2, 0,Tiempo[p],precio_p2,Tiempo[0],precio_02);

//-----------------------------------------------------------------

ObjectSet("1"+sName,OBJPROP_COLOR,col);

ObjectSet("1"+sName,OBJPROP_STYLE,STYLE_SOLID);

ObjectSet("0"+sName,OBJPROP_COLOR,col);

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);

ObjectSet("2"+sName,OBJPROP_COLOR,col);

ObjectSet("2"+sName,OBJPROP_STYLE,STYLE_SOLID);

ObjectSet("0"+sName,OBJPROP_WIDTH,1); // controlar el ancho de la línea

ObjectSet("1"+sNombre,OBJPROP_WIDTH,2);

ObjectSet("2"+sName,OBJPROP_WIDTH,2);

//---------------------------------------------

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

//==================================================================

f=1; p1=p; p0=p; p2=p; fp=0;

//*************************************************************************************

return(0);}

//=====================================================================================

 
xerof123:
Gracias tortilla,

He intentado todo lo que he podido, llevo 6 días sin parar y me ha vencido...

Por favor, podéis mirar el código aquí y decirme por qué me sale el desgraciado "OrderModify error 1".

He probado a normalizar, he probado con una lógica diferente, incluso he probado a ofrecerle una cerveza.

realmente aprecio tu ayuda. Gracias

Vuelve a leer lo que escribí: estás llamando a la función Modify() sin comprobar primero si hay que modificar los precios...

 

La tortilla ha respondido muy bien a tu pregunta. Debo decir que el tipo tiene la paciencia de un santo, lo felicito.

Espero que para ilustrar mejor el punto que está haciendo lo que sobre esto.

Lo que estás diciendo básicamente ahora es que si 2 > 1 Entonces modifica (cambia) X=2 pero el problema que estás teniendo es que X ya es igual a 2 por lo que pedir que se modifique (cambie) es incorrecto ya que ya es igual a lo que estás intentando modificar.

Sólo tienes que comprobar que no es igual a lo que estás tratando de cambiar y sólo tratar de modificarlo si no lo es.

¿Queda más claro?

Buena suerte

Lux

 

Es la primera vez que uso EA, necesito ayuda.

Estimado codersguru,

He copiado el archivo .mql4 a la carpeta de expertos y tured el comercio automático permitido en la sección de opciones, pero cuando hago la prueba de espalda que generan ningún comercio. Probé algunos EAs gratuitos en la red, el problema ocurrió cada vez. Puedo ver que los datos de la prueba retrospectiva se cargan en el gráfico, pero no hay comercio, por lo que en el informe todas las cifras son 0. Debo haber hecho algo mal, espero que pueda ayudar. Gracias de antemano.

Saludos,

jzhai1994

Razón de la queja: