cerrando una orden de compra

 

Publi

Resultados 1 al 8 de 8

Tema: cerrando una orden de compra

  1. #1
    Hola

    escribo porque soy nuevo en esto de la programación
    he escrito un código muy sencillito pero cuya orden abierta no puede cerrar usando OrderSelect() y OrderClose(). no se cual es el fallo y seguro que echándole un vistazo rápido no tendrás problema en identificar donde se encuentra.
    aqui te dejo el código.
    Muchas gracias de antemano.
    Código:
    --------------
    input double Lots=0.01;
    input double macd_rapido=12;
    input double macd_lento=26;
    input int macd_signal=9; 
    input int slippage=3;
    input int magic=12345;
    //--------------
    
    
    
    int init()
    {
    //---
    
    //---
    return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void deinit()
    {
    //---
    return;
    }
    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    //--- definimos variables a usar
    double MacdCurrent,MacdPrevious;
    double SignalCurrent,SignalPrevious;
    bool cerrar;
    
    int i,ticket,total;
    //----------------
    double SL=Ask-30*Point;
    double TP=Ask+70*Point;
    
    MacdCurrent=iMACD(Symbol(),0,macd_rapido,macd_lento,macd_signal,PRICE_CLOSE,MODE_MAIN,0);
    MacdPrevious=iMACD(Symbol(),0,macd_rapido,macd_lento,macd_signal,PRICE_CLOSE,MODE_MAIN,1);
    SignalCurrent=iMACD(Symbol(),0,macd_rapido,macd_lento,macd_signal,PRICE_CLOSE,MODE_SIGNAL,0);
    SignalPrevious=iMACD(Symbol(),0,macd_rapido,macd_lento,macd_signal,PRICE_CLOSE,MODE_SIGNAL,1);
    
    total=OrdersTotal();
    //-------------------------------
    if (total<1)
    {
    if(MacdCurrent>MacdPrevious)
    {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,SL,TP,NULL,magic,0,clrGreen);
    for (i=0;i<total;i++) 
    {
    if (OrderSelect(ticket,SELECT_BY_TICKET)==False) continue;
    if ((OrderType()==OP_BUY)&& (OrderSymbol()==Symbol()))
    {
    if ((MacdCurrent<MacdPrevious))
    
    cerrar=OrderClose(OrderTicket(),Lots,Bid,slippage,clrNONE);
    
    }
    
    
    }
    return;
    } 
    } 
    }

  2. #2
    Hola , la verdad es que no acabo de ver por donde puede estar el error. No obstante te recomiendo que pruebes a modificar el MACD Sample que viene de serie con Metatrader, creo que trabajando sobre la estructura original conseguirás que funcione sin problema.

    Saludos,

  3. #3
    el primer error que se encuentra a simple vista es que cierras incorrectamente los "if"
    tu codigo dice:

    Código:
    if (total<1)
    {
    if(MacdCurrent>MacdPrevious)
    {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,SL,TP,NULL,magic,0,clrGreen);
    for (i=0;i<total;i++)
    .
    .
    .
    
    {
    deberia decir:

    Código:
    if (total<1)
    {
    if(MacdCurrent>MacdPrevious)
    {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,SL,TP,NULL,magic,0,clrGreen);
    }
    }
    
    for (i=0;i<total;i++)
    .
    .
    .
    
    {
    y logicamente sacar los "}" que estan de mas luego en el codigo.

    PD:cuando luego de un if tienes una sola sentencia puedes ahorrarte poner los " { ...} " y se hace mas facil de leer

  4. #4
    Gracias!!
    así lo haré...

  5. #5
    la igualdad no tiene nada de malo, es mas, yo siempre la pongo porque sino me da los "warnings" cuando compilo y soy jodido

  6. #6

  7. #7
    graciass!!! todo muy util ehh!1
    ya conseguí que funcionara.ahora a darle sentido y consistencia al sistema

    Un saludo

  8. #8
    Cita Iniciado por jagva Ver mensaje
    la igualdad no tiene nada de malo, es mas, yo siempre la pongo porque sino me da los "warnings" cuando compilo y soy jodido
    Quítanos la curiosisdad y dinos que parte del código modificaste.
    Saludos.

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Cookies
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información y política de cookies aquí.