Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 149
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
Buenas tardes.
¿Pueden decirme cómo encontrar la barra correcta por fecha y hora sin tener que recorrer todas las barras una por una?
Buenas tardes.
¿Pueden decirme cómo encontrar la barra correcta por fecha y hora sin tener que recorrer todas las barras una por una?
Lea sobre iBarShift
int TotalPos=-1;
void start()
{
//el resto del código
//--
if(OrdersTotal()!=TotalPos) { // no torturar cada tick
for(int i=Total de Pedidos()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Historia();
}
}}} TotalPos=TotalPedidos(); // recuerda la cantidad
//--
}
void Historia() {
string Ticket=(string)OrderTicket();
color col=Rojo;
if(OrderType()==0)col=Azul;
datetime a=OrderOpenTime();
double b=Precio de apertura del pedido();
datetime c=OrderCloseTime();
double d=Precio de cierre del pedido();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
doble prAll=0;
int cn=0;
cadena hTicket;
for(int i=Total de Pedidos()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 segundos de diferencia entre el cierre de la primera y la última orden de la parrilla
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Beneficio",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Beneficio",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Beneficio",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Beneficio",OBJPROP_TIME1,c+Periodo()*60*2);
}
qué añadir al código de esta función para dibujar una línea de nivel en estos lugares de las operaciones
coordenada desde las operaciones hasta el borde del gráfico offset
Por favor, ayuda con la lectura de un archivo .crv
tiene la siguiente entrada :
2010.03.18 01:35:00;1.37409;1.37119
cómo escribir código para obtener cada valor por separado en una variable
Por favor, ayuda con la lectura de un archivo .crv
tiene la siguiente entrada :
2010.03.18 01:35:00;1.37409;1.37119
cómo escribir código para obtener cada valor por separado en una variable
int TotalPos=-1;
void start()
{
//el resto del código
//--
if(OrdersTotal()!=TotalPos) { // no torturar cada tick
for(int i=Total de Pedidos()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Historia();
}
}}} TotalPos=TotalPedidos(); // recuerda la cantidad
//--
}
void Historia() {
string Ticket=(string)OrderTicket();
color col=Rojo;
if(OrderType()==0)col=Azul;
datetime a=OrderOpenTime();
double b=Precio de apertura del pedido();
datetime c=OrderCloseTime();
double d=Precio de cierre del pedido();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
doble prAll=0;
int cn=0;
cadena hTicket;
for(int i=Total de Pedidos()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 segundos de diferencia entre el cierre de la primera y la última orden de la parrilla
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Beneficio",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Beneficio",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Beneficio",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Beneficio",OBJPROP_TIME1,c+Periodo()*60*2);
}
qué añadir al código de esta función para dibujar una línea de nivel en estos lugares de las operaciones
coordenada desde las operaciones hasta el borde del gráfico offset
algo así:
string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)
if (ObjectFind(level)==-1) {
// гор.вектора нет - видимо первый ордер из закрытых на баре
// сделать горизонтальную линию
ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);
// указывающую только вправо
ObjectSetInteger(level,OBJPROP_RAY,1);
ObjectSetInteger(level,OBJPROP_RAYLEFT,0);
// украсить её как-то :-)
ObjectSetInteger(level,OBJPROP_COLOR,....)
....
} else {
// гор.уровень есть - значит были ордера закрытые на этом баре
// по фантазии - обновить метки/корректировать уровень/etc
}
¡Buenas tardes!
¿Qué razones hay para que el terminal no vea un robot? fue escrito por un programador local. Los otros robots son en parte visibles y en parte no.
¡Buenas tardes!
¿Qué razones hay para que el terminal no vea un robot? fue escrito por un programador local. Los otros robots son en parte visibles y en parte no.
¡Buenas noches!
Por favor, ayúdame a escribir este código, siento que no puedo hacerlo yo mismo:
Cuando ejecuto un EA en EURUSD debería colocar dos órdenes pendientes si no tengo ninguna orden abierta/pendiente en este par,
Si una de ellas se dispara, otra no se muestra, es decir, la suma total de todas las órdenes pendientes en el par no debe exceder de 2 y no debe tener en cuenta las órdenes pendientes/abiertas ya mostradas en otros pares.
Ya me he devanado los sesos, no coloca nada de nada, luego cada tic que coloca.
Estoy muy agradecido por ello.
Se lo agradeceré mucho.
¡Buenas tardes!
¿Qué razones hay para que el terminal no vea un robot? fue escrito por un programador local. Los otros robots son en parte visibles y en parte no.
El robot debe estar ubicado en la carpeta "expertos" y tener el formato *.ex4 (*.ex5 para el 5).
En el terminal - menú "Archivo/Abrir carpeta de datos" y luego "MQL4/Experts".
Y el código fuente *.mq4 *.mq5 no se iniciará - necesita ser compilado.
Y mientras tanto, arráncale la cabeza al programador que no te dijo cómo usar su producto