[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1124

 

Buenas tardes. Volviendo a mi pregunta. La transacción inversa no funciona. Busqué en el sitio pero no encontré nada sobre este tema. ¿Puedes aconsejarme qué estoy haciendo mal (todavía estoy aprendiendo el idioma)? Se requiere que se dispare en una sola vela.

extern double TP = 70; //ganancia
extern double SL = 0; /stoploss
extern double Lot = 0.1;

double HighLevel;
double LowLevel;
int resBuy=0;
int resSell=0;


//+------------------------------------------------------------------+
//| función de inicialización del experto |
//+------------------------------------------------------------------+
int init()
{
HighLevel=High[1];
LowLevel=Low[1];
return;
}

//+------------------------------------------------------------------+
//| función experta |
//+------------------------------------------------------------------+

void start()
{

if(Bars<100 && IsTradeAllowed()==false) return;


if(resBuy==0 && resSell==0 && CheckBreak()==-1)
{
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}

if(resBuy==0 && resSell==0 && CheckBreak()==1)
{
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}

if(resBuy!=0 && resSell==0 && Close[1]<LowLevel) //------------------------------------- interesa esta parte: cierre y apertura en una barra
{
bool closeBuy=OrderClose(resBuy, Lot, Bid, 2, Blue);
// while(!IsTradeAllowed()) Sleep(100);
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}

if(resSell!=0 && resBuy==0 && Close[1]>HighLevel) //------------------------------------- interesa esta parte: cierre y apertura en una barra
{
bool closeSell=OrderClose(resSell, Lot, Ask, 0.0002, Red);
// while(!IsTradeAllowed()) Sleep(100);
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}

}

//----------------------------------------------------------------- Check Low&High break (Func)

double CheckBreak()
{
double candle=Open[1]-Close[1];

if(candle>0 && Low[1]<LowLevel) return(-1);
if(candle<0 && High[1]>HighLevel) return(1);
}


 
Buenos días a todos,

Hay un problema con las matrices:

Supongamos

int start (){ // Inicio de la función

int OrdSen_1=OrderSend(Symbol(), OP_BUY, 0.10, Ask,1, Ask-70*Point, Ask+70*Point); // Orden de compra
if(OrdSen_1==-1){ Alert("OrdSen_1 ",GetLastError());} // Comprobación de un error al realizar una orden

double mas1[]={}; // Array
}

La cuestión es cómo colocar los valores "Symbol(), OP_BUY, 0.10, Ask,1, Ask-70*Point, Ask+70*Point" que pertenecen a OrdSen_1 en el array mas1[]={}, para poder utilizarlos posteriormente, tomarlos del array o equiparar estos valores con variables para su posterior uso. Puede haber más órdenes de este tipo, así como matrices. Lo principal es entender el principio.

MUY agradecido por la ayuda y las explicaciones, preferiblemente en detalle :)
 
Techno:

Fuera se borrará porque no lo usas, es decir, no lo llamas desde ningún sitio, ¿está claro ahora?

Lo tengo, gracias :)
 
artmedia70:

¿Qué le parece esta muestra? :)))))

Con el wifi, está bien.
 

Saludos. ¿Cómo puede el editor llevar la cuenta de todos los lugares del código donde se utiliza la misma variable. función?

 
Galion:

Saludos. ¿Cómo puede el editor llevar la cuenta de todos los lugares del código donde se utiliza la misma variable. función?


Para ello utilizo Notepad++. Todo lo que tienes que hacer es resaltar una variable una vez, para que quede resaltada en todo tu código.

 
Pero para que el Notepad++ resalte la sintaxis, hay que ajustarlo al lenguaje MQL4. Escribe Notepad++ en la búsqueda de este foro y encontrarás un enlace a un editor ya configurado - lo he publicado aquí más de una vez.
 
drknn:
Pero para que el Notepad++ resalte la sintaxis, hay que ajustarlo al lenguaje MQL4. Escribe Notepad++ en la búsqueda de este foro y encontrarás un enlace a un editor ya configurado - lo he publicado aquí más de una vez.

Gracias. Lo instalé, se ilumina, es más divertido))
 
Galion:

Gracias. Lo instalé, se ilumina, es más divertido))

Hay una función muy interesante para marcar las variables encontradas. Pulse Ctrl+F, introduzca el nombre de la variable, marque "Marcador" y "Marca encontrada". A continuación, pulse el botón "Buscar todo". Para eliminarlo, pulse el botón "Eliminar todo".
 
drknn:

Hay una función muy interesante para marcar las variables encontradas. Pulse Ctrl+F, introduzca un nombre de variable, marque las casillas "Marcar" y "Marcar encontrado". A continuación, pulse el botón "Buscar todo". Para eliminar esto, haga clic en "Eliminar todo".

Y el doble clic va al fragmento de código))) Justo lo que necesito, gracias)
Razón de la queja: