One Trade per Trend

1
Hello Coders,

I am trying to implement that my EA is just performing one Trade per Trend direction change.
I did a simple approach, but this is not really working. Maybe someone could have a look and advise?

Code: Select all

input int   i_MaximumOpenedOrders = 1;

datetime GetLastOrderOpenTime(void)
{
    datetime last_open_time = 0;
    int total_order = OrdersTotal();
    for (int i = total_order - 1; i >= 0; i--)
    {
        if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {
            if ((Symbol() == OrderSymbol()) && (0 == OrderMagicNumber()))
            {
                if (OrderOpenTime() > last_open_time)
                {
                    last_open_time = OrderOpenTime();
                }
            }
        }
    }
    return (last_open_time);
}

//Open Sell 
ticket=OrderSend(Symbol(),OP_SELL,NewLot,NormalizeDouble(Bid,Digits),3*P,SL,TP,"HyDramaBot",MagicNumber,0,Red)<i_MaximumOpenedOrders&&(GetLastOrderOpenTime() < Time[0]);
                
Thank you in advance!


Re: One Trade per Trend

2
hobbytrader wrote: Sat Aug 15, 2020 7:42 pm Hello Coders,

I am trying to implement that my EA is just performing one Trade per Trend direction change.
I did a simple approach, but this is not really working. Maybe someone could have a look and advise?

Code: Select all

input int   i_MaximumOpenedOrders = 1;

datetime GetLastOrderOpenTime(void)
{
    datetime last_open_time = 0;
    int total_order = OrdersTotal();
    for (int i = total_order - 1; i >= 0; i--)
    {
        if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {
            if ((Symbol() == OrderSymbol()) && (0 == OrderMagicNumber()))
            {
                if (OrderOpenTime() > last_open_time)
                {
                    last_open_time = OrderOpenTime();
                }
            }
        }
    }
    return (last_open_time);
}

//Open Sell 
ticket=OrderSend(Symbol(),OP_SELL,NewLot,NormalizeDouble(Bid,Digits),3*P,SL,TP,"HyDramaBot",MagicNumber,0,Red)<i_MaximumOpenedOrders&&(GetLastOrderOpenTime() < Time[0]);
                
Thank you in advance!
Hey, have noticed this and can suggest something if you have not found a solution so far.
Use MODE_HISTORY instead of the MODE_TRADES and check the last closed order is how I would approach it. Assuming you need the opposite direction, rather than simply 1 trade per continuous entry signal.

Best of luck :)

Who is online

Users browsing this forum: No registered users and 8 guests