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

 
lottamer:

¡¡¡MISTICA!!!

este

-----------------------------------------------------------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // para monedas con dimensión EUR


Imprimir (pp_sell);

------------------------------------------------------------------------------------

Imprime -10, como debería ser, ya que la última operación de VENTA tiene un beneficio de 10

pero si se insertan varios TIEMPOS DIFÍCILES ENTRE LA IMPRESIÓN Y LA VARIABLE, por ejemplo

----------------------------------------------------------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // para monedas con dimensión EUR


if ( Hour()>=10 && Hour()<20)

{

si ( Stoch_1>Stoch_2) return(0);

si no {

if (OrdersTotal()==0)

{ PlaySound("ok.wav");

if ( GetTypeLastClosePos()==1) Imprimir (pp_sell);

}

Print("___");

}

}

return(0);

}

------------------------------------------------------------------------------------

¡¡¡¡funciona, pero imprime -9 !!!!

¿cuál es el secreto?


En estos casos, las imprecisiones de cálculo se acumulan y pueden llegar a ser significativas. Usted cree que inserta condiciones queno cambian nada, en realidad obliga al ordenador a hacercálculos innecesarios y sus condicionesno cambian nada.

¿Y está seguro de quePriceOpenLastClosePos() y PriceCloseLastPos() están estableciendo valores para la misma posición?

 
rigonich:


int fLastClosetPoz()

{
int Tot=Total de pedidos(),Ticket=-1; datetime time=0;
si(Tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>time)
{
time=Hora de cierre del pedido();Ticket=Ticket del pedido();
}
}
}
Si no, continúe;
}
}
return(Ticket);
}


empezando por if(OrderCloseTime()>time)... entonces no está claro de dónde viene... bueno, no importa...

Imprime un billete, pero sólo el último. ¿Y qué hacer con el penúltimo? ¿No veo cómo se puede imprimir el segundo billete?

primero escribo Print LastClosetPoz()

¿tomar la 2ª (i)? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?

¿Imprimir LastClosetPoz(2)? error obvio, pero sería lógico :))

Intento poner otros parámetros de una posición cerrada(precios de cierrede una posición stop) en lugar de OrderTicket en la línea Ticket=OrderTicket(); - no funciona.

 
rigonich:

Está trabajando con valoresno normalizados como el doble. En estos casos, las imprecisiones de cálculo se acumulan y pueden llegar a ser significativas.


¿No es gordo que un ordenador acumule hasta un 10% de error en 4 líneas? :))))))))))) (en números grandes menos del 10%)

1) ¿qué hay que salvar si la orden cerrada es fija y todos sus parámetros "no flotan"?

2) Las condiciones no estaban en absoluto relacionadas con el cálculo del parámetro de salida. Eran sólo una barrera -dejar pasar- no dejar pasar...

3) ¿Y por qué entonces el resultado no flota dentro del trabajo de un EA, sino que flota de uno a otro?

 
lottamer:


empezando por if(OrderCloseTime()>time)... entonces no está claro de dónde viene... pero bueno...

Imprime un billete, pero sólo el último. ¿Y qué hacer con el penúltimo? no veo cómo hacerlo con el segundo billete?

tomar el 2° (i) ? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?

1. por favor, escriba un artículo con la petición de entradas de la historia.-su pregunta.

Para encontrar la penúltima, hay que memorizar la entrada de la última (por ejemplo, en la variable A), luego hay que ejecutar el bucle una vez más y "saltarse" este orden, es decir, por ejemplo, cambiar la línea

if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o añadir una líneaif(Ticket()!=A)continue;

Y ya he explicado que el índice de la orden no siempre coincidirá con la cerrada en la cuenta, ya que las órdenes de mercado y las pendientes se tienen en cuenta conjuntamente y estas últimas no tienen precio de cierre, por eso se hace un bucle con todas las órdenes para encontrar la última cerrada y se busca la orden con mayor tiempo de cierre, es decir, la última orden cerrada puede tener índice 3 y la penúltima - 7.

 
rigonich:

1. por favor, escriba un artículo con una solicitud de entrada de la última semana de la historia...-su pregunta.

Para encontrar el penúltimo, debemos memorizar el ticket del último ticket (por ejemplo, en la variable A), luego debemos ejecutar el bucle una vez más y "saltar" este orden, es decir, cambiar la línea

if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o añadir una líneaif(Ticket()!=A)continue;


pregunta principal:

qué for(int i=0;i<OrdersHistoryTotal();i++) ¿necesitamos exactamente OrdersHistoryTotal() cuando, por ejemplo, sólo necesito 2 operaciones?

¿Qué tal esto?

o(int i=0;i<2;i++) ? (comprobado - ticket =-1....) nda.....tuman...:))

 
lottamer:


pregunta principal:

pero por qué necesitamos la línea for(int=0;i<OrdersHistoryTotal();i++) ¿necesitamos exactamente OrdersHistoryTotal() cuando, por ejemplo, sólo necesito 2 operaciones?

¿Qué tal esto?

o(int i=0;i<2;i++) ? (comprobado - ticket =-1....) nda.....tuman...:))


He terminado el comentario anterior, ver. Además, le escribí un código que busca la última operación cerrada en el instrumento actual.
 
Ayúdame si decido escribir un robot en C/C++, por ejemplo. No hay problema en escribir uno, pero ¿cómo lo conecto con metatrader? ¿Cómo obtener cotizaciones y cómo enviar una señal de compra/venta?
 
Desead:
Ayúdame si decido escribir un robot en C/C++, por ejemplo. No hay problema en escribir uno, pero ¿cómo lo conecto con metatrader? ¿Cómo obtener cotizaciones y cómo enviar una señal de compra/venta?

No conozco otros lenguajes, pero puede ser posible escribir tu código como DLL y luego puede ser posible llamar desde programas MQL.
 
rigonich:

He terminado el comentario anterior, ver.


Sí, ahora entiendo por qué hay una comparación para el tiempo en el bucle, y el tiempo en general....

También entiendo la LÓGICA - marcar la "A", luego excluir la "A", pero en primer lugar, todas las opciones DONDE esta "A" puede ser fijada las he probado - y aún así el asesor me devuelve la última entrada, no la penúltima.

.

He introducido 2 bucles (2 funciones) - el primero su original, el segundo con excepción de "A"... se ejecutan uno tras otro.

Imprime cero....

----------------------------------------------------------------------------------------------------

if ( Hour()>=10 && Hour()<20)

{

LastClosetPoz();Sec_LastClosetPoz();

Imprimir ( ticket2,ticket);

}

return(0);

}

//--------------------------------------------+

int UltimoCostePoz()

{

int Tot=Total de pedidos(),Ticket=-1; datetime time=0;

si(Tot>0)

{

for(int i=0;i<OrdersHistoryTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

{

if(OrderSymbol()==Symbol())

{

if(OrderCloseTime()>time)

{

time=Hora de cierre del pedido();Ticket=Ticket del pedido(); A=Ticket;

}

}

}

Si no, continúe;

}

}

return(Ticket);

}


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

int Sec_LastClosetPoz()

{

int Tott=Total de pedidos(),Ticket2=-1; datetime time2=0;

if(Tott>0)

{

for(int i=0;i<OrdersHistoryTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

{

if(OrderSymbol()==Symbol()&&OrderTicket()!=A)

{

if(OrderCloseTime()>time2)

{

time2=OrderCloseTime();Ticket2=OrderTicket();

}

}

}

Si no, continúe;

}

}

return(Ticket2);

}

 
Desead:
Ayúdame si decido escribir un robot en C/C++, por ejemplo. No hay problema en escribir uno, pero ¿cómo lo conecto con metatrader? ¿Cómo obtener cotizaciones y cómo enviar una señal de compra/venta?

DLL - ver ejemplos. Es posible que un programador, que sabe escribir en C/C++, no sea capaz de enfrentarse a los ejemplos estándar de la entrega de МТ y esto a pesar de la presencia de mucho material en el foro?
Razón de la queja: