[¡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 75
![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
¿Puede decirme qué código debería escribirse para cerrar una operación, de modo que la siguiente pudiera abrirse sólo en la siguiente barra?
Así que la pregunta es: ¿cómo se cierra el trato? ¿Es una parada (que es más complicada), o la cerramos nosotros? Si lo cerramos nosotros, es mucho más fácil.
¿Puede decirme cómo hacer que las velas del gráfico de precios se coloreen de verde cuando el Oscilador Asombroso y el Oscilador de Aceleración/Desaceleración son verdes, que se coloreen de rojo cuando el Oscilador Asombroso y el Oscilador de Aceleración/Desaceleración son rojos, y cuando los indicadores son de distinto color, que las velas sean grises?
Nunca he pintado un candelabro, pero definitivamente he visto este pavo en la base. En realidad, hace unos cuatro meses. Búscalo.
Así que la pregunta es: ¿cómo se cierra el trato? ¿Es una parada (que es más complicada), o la cerramos nosotros? Si lo cerramos nosotros, es mucho más fácil.
Las operaciones se cierran con Take Profit o Stop Loss.
Pregunta.
Tengo un indicador que escribe una cotización para la herramienta así - 2321.50000000
¿Cómo puedo eliminar los ceros de más?
Muy bien lo de escribir expertos aquí. http://www.vedikhin.ru/2006/06/expert-advisors-overview.html
Y que los dioses del forex me perdonen, está en formato Wordov .
Ayúdame también.
Limitaciones del compilador. Me gustaría saber sobre las restricciones en los arrays (cuántos arrays o número total de elementos o algo así como memoria asignada), y en el número de variables globales en el sentido de superglobales.
Hola a todos.
He decidido escribir a un experto. Tomó un Stoch para ello. Creo que debería tener una sola orden, pero venderá por encima de 80 y cerrará por debajo de 50. También he añadido StopLoss para reducir las pérdidas. Lo he probado. El experto parece funcionar, pero a veces los StopLoss se toman uno tras otro. Así que decidí cambiar las condiciones de negociación después de la primera Pérdida para hacerlas significativamente diferentes de las iniciales. Para ello, introduje la función isCloseLastPosByStop que tomé de Kima y me gustó. Si se trabaja con Loss, envía señales y escribe en el diario; después de la señal if(SSL==true) establezco nuevas condiciones de venta. Lo he escrito, lo he compilado, lo he lanzado - funciona, pero también se necesitan varios LossO en algunos lugares seguidos para que se detenga. Como no tengo mucha experiencia en MQL4 no sé qué es lo que falla. Por favor, ayúdenme en lo que puedan..... no somos de por aquí...... Y tal vez alguien me diga cómo implementar esta idea de otra manera. Gracias de antemano, este es un buen lugar, nunca he ido sin asesoramiento cualificado....
#property copyright "Alex"
#enlace de propiedad "http://www.сайта.net"//---- parámetros de entrada
extern int MagicNamber=88881;
extern int K_per=30;
extern int D_per=8;
extern int Lento=10;
extern double Lots=1.0;
extern double StopLoss=300;
extern double SSL=0;
//+------------------------------------------------------------------+
int inicio(){
int
cnt=0,
billete,
total;
doble
StochK_0, // Valor de la línea K
StochD_1, // valor de la línea D
SL=StopLoss;
isCloseLastPosByStop();
si (Bares<100)
{
Print("barras menos de 100");
return(0);
}
StochK_0=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 0); // K
StochD_1=iStochastic(NULL, 0, K_per,D_per,Slow,MODE_SMA,0,MODE_MAIN, 2); //D
total=Total de pedidos();
if(total<1)
if ((StochK_0>StochD_1) && StochD_1 > 80) // condición de venta
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Orden de venta abierta : ",OrderOpenPrice())
}
else Print("Error al abrir la orden de VENTA : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // ¿se trata de una posición abierta? OP_BUY o OP_SELL
OrderSymbol()==Symbol()) // ¿coincidencia de la herramienta?
{
if(OrderType()==OP_SELL) // la posición está abierta
SSL=isCloseLastPosByStop();
if(SSL==true)
{
Print("StopLoss");
}
total=Total de pedidos();
if(total<1)
if ((StochK_0<StochD_1) && StochK_0 < 50) // condición de venta si se activa el StopLoss
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Orden de venta abierta : ",OrderOpenPrice())
}
else Print("Error al abrir la orden de VENTA : ",GetLastError());
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates();
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // ¿se trata de una posición abierta? OP_BUY o OP_SELL
OrderSymbol()==Symbol()) // ¿coincidencia de la herramienta?
{
if(OrderType()==OP_SELL) // la posición está abierta
{
if(StochK_0>StochD_1 && StochD_1 < 50) // condición de cierre
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // cerrar posición
return(0); // salir
}}}}}}}
//___user fu-ya
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
datetime t;
doble ocp, osl;
int dg, i, j=-1, k=Total de pedidos();
if (sy=="0") sy=Símbolo();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}}}}}}}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
si (ocp==osl) return(True);
}
return(False);
}
Pregunta.
Tengo un indicador que escribe una cotización para la herramienta así - 2321.50000000
¿Cómo eliminar los ceros de más?
El operador DoubleToStr() le ayudará.