![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
Pido ayuda para escribir un sencillo robot de trading basado en el indicador i-Regr. Si se hace bien, garantizo un pago razonable.
Si alguien está interesado, puede escribir a ma.gog@mail.ru
La idea general es la siguiente:
1. El asesor experto debe colocar órdenes pendientes de stop y límite en los fractales (stop de compra, stop de venta, límite de compra, límite de venta), se debe establecer el tiempo de expiración de las órdenes (horas, minutos).
2. Los tipos de órdenes deben ser conmutables (órdenes stop y limitadas juntas; o por separado: sólo órdenes stop, sólo órdenes limitadas),
3. La distancia de la orden que se coloca al fractal debe establecerse en pips, y para las órdenes stop por separado, y para las órdenes limitadas por separado.
4. StopLoss y TakeProfit son fijos, se establecen inmediatamente.
5. Quieres tener un trailing stop de un pip y desactivarlo.
6. Hay que arreglar el lote. Pero también es posible crear una gestión del dinero.
7. El diferencial debe tenerse en cuenta en las órdenes: (orden de compra + diferencial, orden de venta - diferencial)
Para contactar: Cashinroman@yandex.ru
Puede alguien entender este código, por qué en el probador libra USD H4 funciona muy bien
Y en la demo y en el real sólo vierte algo para cambiarlo sps tal vez mira en la historia
extern double Init_line1 = 1.9620;
extern double Init_line2 = 1.9630;
extern double Init_line3 = 1.9640;
extern double Init_line4 = 1.9650;
extern int Línea_de_paso = 40;
extern double Lots = 1;
extern int ColUr = 2;
int i, j;
int a[4][4];//1-compra, 2-venta, 3-compra, 4-venta
doble minlote;
datetime LastWork;
//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
//********************************************************************
//verificar si hay posiciones abiertas,
//presenta el número de posiciones abiertas en el array a[4][4].
bool Pred()
{
int NL; //qué filas hay en el array
for (i=0; i<=4; i++)
for (j=0; j<=4; j++)
a[i][j]=-1;//todos en -1
for (i=0; i<OrdersTotal(); i++) //invertir todos los pedidos
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)//seleccionar orden si no es posible
romper;
if (OrderSymbol()==Symbol())//hay posiciones para este símbolo
if (OrderComment()=="a1")//¿Hay una marca?
NL=0;
else if (OrderComment()=="a2")//¿es nuestra etiqueta?
NL=1;
else if (OrderComment()=="a3")//¿es nuestra etiqueta?
NL=2;
else if (OrderComment()=="a4")//¿es nuestra etiqueta?
NL=3;
si no
continuar;//¿no? entonces continuar la búsqueda
//tenemos nuestras órdenes, ocupémonos de ellas
if (OrderType()==OP_BUY)//si la posición es de COMPRA
a[NL][0]=OrdenTicket();//recuerda su número
else if (OrderType()==OP_SELL)//si la posición está en venta
a[NL][1]=OrdenTicket();//recuerda su número
else if(OrderType()==OP_BUYSTOP)//si la posición está pendiente de compra
a[NL][2]=PedirTicket();//recordar su número
else if (OrderType()==OP_SELLSTOP)//si la posición está pendiente de venta
a[NL][3]=OrdenTicket();//recuerda su número
}// fin del bucle
}
//********************************************************************
/Ejemplo:
//Nivel de control 1.9420, precio actual 1.9277 o 1.9537 encontrar cerca del nivel inferior
//а)|1.9420-1.9277|*10000/40=3.575
//3,575-3=0,575; 0,575*40=23; 1,9277-0,0023=1,9255 nivel superior más cercano
//б)|1.9420-1.9537|*10000/40=2.925
// 2,925-2=0,925; 0,925*40=37; 1,9537-0,0037=1,9500 Nivel bajo más cercano
int init()
{
LastWork = -1;
}
//********************************************************************
int deinit()
{
return(0);
}
//********************************************************************
int inicio()
{
si (CurTime() - LastWork < 5)
return(0); // no más de una vez cada 5 segundos
LastWork = CurTime();
Pred();//todo recogido
Comment("a[1][1]=",a[0][0]," a[0][2]=",a[0][1]," a[1][3]=",a[0][2]," a[1][4]=",a[0][3],"\n",
"a[2][1]=",a[1][0], "a[2][2]=",a[1][1], "a[2][3]=",a[1][2], "a[2][4]=",a[1][3],"\n"
"a[3][1]=",a[2][0]," a[3][2]=",a[2][1], "a[3][3]=",a[2][2], "a[3][4]=",a[2][3],"\n"
"a[4][1]=",a[3][0]," a[4][2]=",a[3][1]," a[4][3]=",a[3][2]," a[4][4]=",a[3][3],"\n")
comentario de la cadena;
double Init_line,qw,qw1,uo,w, sl, op;
for(i=0;i<ColUr;i++)//ejecuta el array a[4][4]
{
//se necesita más
coment=";
si (i==0)
{
coment="a1";
Init_line=Init_line1;
}
else if(i==1)
{
coment="a2";
Init_line=Init_line2;
}
else if(i==2)
{
coment="a3";
Init_line=Init_line3;
}
else if(i==3)
{
coment="a4";
Init_line=Init_line4;
}
//buscar el nivel más cercano
w=(MathAbs(Línea_de_inicio)*1/Punto)/Línea_de_paso;//coeficiente
si (Oferta>=Línea_de_inicio)
qw=Step_line*(w-MathFloor(w));//número de puntos hasta el nivel más cercano
si no
qw=Línea_de_paso*(w-MathFloor(w));//número de puntos hasta el nivel más cercano
qw1=Línea_de_paso-qw;//número de puntos hasta el nivel más cercano
// Comentario("Línea1 ",Línea_de_inicio," w=",((Línea_de_inicio)*1/Punto)/Línea_de_paso," qw=",qw," NuevaLínea",Oferta-(qw)*Punto);
if ((a[i][0]==-1)&&(a[i][1]==-1)&&(a[i][2]==-1)&&(a[i][3]==-1))//нету открытых
{
//hacer pedidos
si (qw+4>=15)// podemos colocar una espera para vender
OrderSend(Symbol(), OP_SELLSTOP, Lots, Bid-(qw)*Point,0,Bid-Point*(qw-2*Step_line),0,0,CLR_NONE);
else //poner el siguiente nivel hacia abajo
OrderSend(Symbol(), OP_SELLSTOP, Lots, Bid-Point*(qw+Step_line),0,Bid-Point*(qw+Step_line-2*Step_line),0,coment,0,CLR_NONE);
if (qw1>=15)//puede poner una espera para Comprar
OrderSend(Symbol(), OP_BUYSTOP, Lots, Ask+(qw1-4)*Point,0,Ask+Point*(qw1-4-2*Step_line),0,coment,0,0,CLR_NONE);
si no// ponerlo en el siguiente nivel superior
OrderSend(Symbol(), OP_BUYSTOP, Lots, Ask+Point*(qw1-4+Step_line),0,Ask+Point*(qw1-4+Step_line-2*Step_line),0,coment,0,0,CLR_NONE);
}
¡¡¡¡¡¡¡¡¡¡¡¡¡//!!!!!!!!!!!!!
else if (a[i][0]!=-1)// vale la pena comprar
{//compra abierta
OrderSelect(a[i][0],SELECT_BY_TICKET, MODE_TRADES);//seleccionar orden abierta
uo=OrderOpenPrice();//su precio de apertura - nivel
op=uo;
if (uo<(Ask-(qw-4)*Point))//el precio de apertura es inferior al mínimo actual
//comprobar SL open, si es necesario modificar
if (OrderStopLoss()<(Ask-Point*(qw+4+2*Step_line)))//SL es inferior a 2 niveles por debajo del precio actual
OrderModify(a[i][0],NULL,Ask-Point*(qw+4+2*Step_line),NULL,NULL,CLR_NONE);
sl=OrderStopLoss();
//decidir sobre los pendientes
if (a[i][3]!=-1)//se vende la parada
{
OrderSelect(a[i][3],SELECT_BY_TICKET, MODE_TRADES);//posición en pendiente
uo=OrderOpenPrice();//precio de apertura - nivel
if(uo!=sl)//(Bid-Point*(qw+2*Step_line)))//el nivel de apertura es igual al stop de COMPRA
OrderModify(a[i][3],sl, sl+Punto*(2*Línea_de_paso),NULL,NULL,CLR_NONE)
// OrderModify(a[i][3],Bid-Point*(qw-2*Step_line),Bid+qw*Point,NULL,NULL,NULL);
}
else if (a[i][3]==-1)//se ha abierto el turno de compra, se debe fijar el sellstop
OrderSend(Symbol(), OP_SELLSTOP, Lots, sl,0,sl+Point*(2*Step_line),NULL,coment,0,0,CLR_NONE);
// OrderSend(Symbol(), OP_SELLSTOP, Lots, Bid-(qw+2*Step_line)*Point,0,Bid-Point*(qw),NULL,coment,0,0,0);
}
¡¡¡¡¡¡¡¡¡¡¡¡¡//!!!!!!!!!!!!!
else if (a[i][1]!=-1)//stand sell
{
OrderSelect(a[i][1],SELECT_BY_TICKET, MODE_TRADES);//selecciona la orden abierta
uo=OrderOpenPrice();//precio de apertura - nivel
op=uo;
si (uo>(Oferta+(qw1)*Punto))//el precio de apertura es superior al nivel máximo actual
//comprobar SL open, si es necesario modificar
if (OrderStopLoss()>(Bid+Point*(qw1+2*Step_line)))//SL es superior a 2 niveles por encima del precio actual
OrderModify(a[i][1],NULL,Bid+Point*(qw1+2*Step_line),NULL,NULL,CLR_NONE);
sl=OrderStopLoss();
//tomar un aplazamiento
if (a[i][2]!=-1)// cuesta buystop
{
OrderSelect(a[i][2],SELECT_BY_TICKET, MODE_TRADES);//posición en pendiente
uo=OrderOpenPrice();//precio de apertura - nivel
si (uo!=sl)//el nivel de apertura es igual al stop de VENTA
OrderModify(a[i][2],sl,sl-(2*Step_line)*Point,NULL,NULL,CLR_NONE);
// OrderModify(a[i][2],Ask+Point*(qw1-4+2*Step_line), Ask+(qw1-4)*Point,NULL,NULL,NULL);
}
else if (a[i][2]==-1)//se ha abierto el turno de venta, hay que poner buystop
OrderSend(Symbol(), OP_BUYSTOP, Lots, sl,0,sl-Point*(2*Step_line),NULL,0,0,CLR_NONE);
//OrderSend(Symbol(), OP_BUYSTOP, Lots, Ask+(qw1-4+2*Step_line)*Point,0,Ask+Point*(qw1-4),NULL,coment,0,0);
}
}
retorno (0);
}
¡Estimados señores programadores! Me gustaría pedir ayuda para escribir un EA. Todavía no hablo MQL. Si mi EA es rentable, estoy dispuesto a compartir mis ganancias con la persona que lo ha escrito, o describir sus condiciones. Creo que debería ser rentable.
Sobre "compartir el premio" - eso es digno)
Pero es más interesante "describir los términos".
Mis condiciones: ahora escribiré por el dinero, no pretendo lucrarme.
Contactos en el perfil
Estimados visitantes de este sitio. Hay que escribir un Asesor Experto muy sencillo. Tengo una sugerencia. Yo te doy una condición, tú me das el Asesor Experto. También podrás utilizar mi sencilla estrategia. Te agradecería que me explicaras cómo cambiar el volumen de la orden en el EA, cuando esto sea necesario. Voy a dar los términos durante la correspondencia personal o ICQ 300333834 o correo forexbmf@yandex.ru Andrew.
Si quieres operar en él de forma gratuita (preferiblemente real o demo 1-2 meses).
Por lo demás, aquí https://www.mql5.com/ru/job
Однако выслушав условие вы поймёте, что действительно имеет смысл такая торговля.
octubre, no tienes ni idea de cuántas personas antes que tú han dicho más o menos las mismas palabras y se han desanimado.
Estimados visitantes del sitio. Hay que escribir un EA muy sencillo.
Consulte el asistente de EA en línea: http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
Soporte de idioma ruso disponible