Ayuda Seleccionar orden

 

Publi

Ayuda Seleccionar orden

 

Publi

Resultados 1 al 8 de 8


  1. #1




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Re: Ayuda Seleccionar orden


    Publi
    hola de nuevo tivag, pues he probado el codigo y no funciona tampoco, el valor que me devuelve es el valor negativo mas alto. Aunque me ha dado alguna idea, lo voy a intentar de nuevo.
    Foro de Forex Trading United

  2. Publi
    Publi


  3. #2




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Re: Ayuda Seleccionar orden

    Muchas gracias por la contestación tivag, y por la ayuda por supuesto. Tendre en cuenta para el futuro lo de poder usar una misma funcion para varias cosas iguales . Probare el código que me has pasado y ya te comentaré.
    Por cierto el ultimo codigo que puse no era el que queria poner, creo que lo borraria al ver que no funcionaba o no se. Bueno, no importa. Gracias por la ayuda compañero.
    Foro de Forex Trading United

  4. #3




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Ayuda Seleccionar orden

    Buenas a todos, como dije en mi post de presentacion decidi registrarme porque tengo algun atasco a la hora de crear trozos de codigo y he dado mil vueltas pero no lo consigo. Y estoy seguro que tengo la solucion delante de mis narices pero estoy embotao.
    A ver, la cuestion es la siguiente.
    El EA va abriendo varias operaciones segun se vayan dando ciertas condiciones, hasta ahi lo tengo bien. Entonces estas operaciones abiertas tienen un profit determinado cada una (todos distintos porque se abren en distintos precios). La cuestion es que quisiera seleccionar el que tenga el profit negativo mas alto (esto si lo he conseguido) con este codigo:

    double profitmasbaja()
    {
    double profit=0.00;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<profit){
    profit=prof;
    }
    }
    }
    return NormalizeDouble(profit,2);
    }

    La cuestion es que despues obtengo el numero de ticket de esta operacion en cuestion con este codigo:

    double profitmasbaja2()
    {
    double profit=0.00;
    double ProfAlt=0.00;
    int tick1;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<ProfAlt){
    ProfAlt=prof;
    tick1=OrderTicket();
    }
    }
    }
    return tick1;
    }

    Esto lo hago para despues obtener el segundo profit negativo mas bajo, con lo que la idea que uso es hacer un condicional if que me diga que haga el bucle for si el ticket es distinto al tick1. Algo parecido a esto:

    double profitmasbaja2()//Probando para averiguar el segundo profit mas bajo
    {
    double profit=0.00;
    double ProfAlt=0.00;
    int tick1;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<ProfAlt){
    ProfAlt=prof;
    tick1=OrderTicket();
    }
    }
    }
    for(int i=0; i<OrdersTotal();i++){
    if(OrderSelect(tick1,SELECT_BY_TICKET,MODE_TRADES) ){
    double prof=OrderProfit();
    if(prof<profit){
    profit=prof;
    }
    }
    }


    return profit;
    }

    Pero no funciona, ya le he dado mil vueltas, pero nada.

    Podria alguien ayudarme por favor?

    Gracias
    Foro de Forex Trading United

  5. #4




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Re: Ayuda Seleccionar orden

    Buenas de nuevo. Tengo otra pregunta. Que pesao soy jeje.

    En la función que puse antes, la que ya funciona, tengo mas de una variable, pero la funcion me devuelve una. Concretamente "profit2". Pero si quisiera que dependiendo del sitio me devolviera esa o la de profit1, como lo tendria que hacer? Entiendo que en el return tendría que poner todas las que quiero que me devuelva, algo así:

    return profit1, profit2;

    O con varios returns:

    return profit1;
    return profit2;

    La cosa es que despues a la llamada de la funcion desde cualquier otra parte del programa como hago para que me de una u otra? Yo lo que he hecho es meter la variable entre los parentesis, algo asi:

    neg(profit1);

    Pero no funciona. Alguna sugerencia?

    Gracias por adelantado.
    Foro de Forex Trading United

  6. #5
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 17

    Espana
    Mensajes: 659
    Créditos: 5.114

    Re: Ayuda Seleccionar orden

    Hola yo lo probe y funcionaba, otra cosa a ver si es que mirastes solo el resultado del return y no el resultado de la variable? lo importante es que lo has conseguido si hay muchas formas de hacer las cosas , para hacer lo que quieres pon las variables definidas arriba del todo (debajo de los #property ) y asi podras llamarlas en cualquier parte .

    saludos
    Foro de Forex Trading United

  7. #6




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Re: Ayuda Seleccionar orden

    Cita Iniciado por tivag Ver mensaje
    Hola yo lo probe y funcionaba, otra cosa a ver si es que mirastes solo el resultado del return y no el resultado de la variable? lo importante es que lo has conseguido si hay muchas formas de hacer las cosas , para hacer lo que quieres pon las variables definidas arriba del todo (debajo de los #property ) y asi podras llamarlas en cualquier parte .

    saludos
    Hola tivag, pues seguro que fue eso que yo solo miré el resultado del return. Pero bueno lo importante es que ya esta resuelto y en gran parte a tu ayuda. Gracias. Y en lo segundo pues tambien gracias. Que zoquete soy jejeje. Pondre las variables en la cabecera (no se si se llama asi). Mil gracias compañero. Te debo unos vinitos
    Foro de Forex Trading United

  8. #7
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 17

    Espana
    Mensajes: 659
    Créditos: 5.114

    Re: Ayuda Seleccionar orden

    Cita Iniciado por distri Ver mensaje
    Buenas a todos, como dije en mi post de presentacion decidi registrarme porque tengo algun atasco a la hora de crear trozos de codigo y he dado mil vueltas pero no lo consigo. Y estoy seguro que tengo la solucion delante de mis narices pero estoy embotao.
    A ver, la cuestion es la siguiente.
    El EA va abriendo varias operaciones segun se vayan dando ciertas condiciones, hasta ahi lo tengo bien. Entonces estas operaciones abiertas tienen un profit determinado cada una (todos distintos porque se abren en distintos precios). La cuestion es que quisiera seleccionar el que tenga el profit negativo mas alto (esto si lo he conseguido) con este codigo:

    double profitmasbaja()
    {
    double profit=0.00;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<profit){
    profit=prof;
    }
    }
    }
    return NormalizeDouble(profit,2);
    }

    La cuestion es que despues obtengo el numero de ticket de esta operacion en cuestion con este codigo:

    double profitmasbaja2()
    {
    double profit=0.00;
    double ProfAlt=0.00;
    int tick1;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<ProfAlt){
    ProfAlt=prof;
    tick1=OrderTicket();
    }
    }
    }
    return tick1;
    }

    Esto lo hago para despues obtener el segundo profit negativo mas bajo, con lo que la idea que uso es hacer un condicional if que me diga que haga el bucle for si el ticket es distinto al tick1. Algo parecido a esto:

    double profitmasbaja2()//Probando para averiguar el segundo profit mas bajo
    {
    double profit=0.00;
    double ProfAlt=0.00;
    int tick1;
    for(int i=0; i<OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof<ProfAlt){
    ProfAlt=prof;
    tick1=OrderTicket();
    }
    }
    }
    for(int i=0; i<OrdersTotal();i++){
    if(OrderSelect(tick1,SELECT_BY_TICKET,MODE_TRADES) ){
    double prof=OrderProfit();
    if(prof<profit){
    profit=prof;
    }
    }
    }


    return profit;
    }

    Pero no funciona, ya le he dado mil vueltas, pero nada.

    Podria alguien ayudarme por favor?

    Gracias

    hola compi no hace falta repetir tantas veces el bucle , lo puedes hacer todo en el mismo quedandote asi:

    Código PHP:

    double profitmasbaja
    ()
    {
    double profit=0.00;
    double profitanterior=0.00;
    for(
    int i=0iOrdersTotal(); i++){
    if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();

    if(
    prof<profit){
    profit=prof;
    }

    if(
    prof<profitanterior && prof != profit){
     
    profitanteriorprof;
    }

    }
    }
    return 
    NormalizeDouble(profit,2);

    saludos
    Foro de Forex Trading United

  9. Gracias distri Gracias por este post
  10. #8




    Reputación:
    Poder de reputación: 6

    Espana
    Mensajes: 6
    Créditos: 155

    Re: Ayuda Seleccionar orden


    Publi
    Ok. Pues ya lo he conseguido, me dio una idea tu codigo y funciona. Seguramente se podra hacer mucho mejor. Mas depurado, pero eso ya llegara. Lo importante es que funciona, por lo menos para mi. Lo otro me da igual de momento. Os lo paso por si lo quereis.

    double neg2()//YA FUNCIONA
    {
    double profit1=0.00;
    double profit2=0.00;
    for(int i=0; i< OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();

    if(prof<profit1){
    profit1=prof;
    }
    }
    }

    for(int i=0; i< OrdersTotal(); i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    double prof=OrderProfit();
    if(prof!=profit1 && prof<profit2){
    profit2=prof;
    }
    }
    }

    return NormalizeDouble(profit2,2);
    }
    Foro de Forex Trading United

This website uses cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

 

Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal