Как найти самый последний ордер ??? - страница 2

 
Urain:

Вы тут на червёрке вообще расслабились что ли?

индекс OrdersHistoryTotal()-1 и есть номер последнего ордера, чего его циклом выбирать то?

В историю уходят только закрытые ордера. Если в истории ещё нет закрытых ордеров то входа в зону if не произойдёт.

Это вы там на пятере расслабились, с одной то позой ;)
 
И вообще - вопрос о Самом последнем :)
 
tara:
И вообще - вопрос о Самом последнем :)

первая часть ответа
 
Эх, ракетчики,- рожденные жать кнопки летать не могут :)
 
tara:
Эх, ракетчики,- рожденные жать кнопки летать не могут :)
Снисходительно сказал авиатехник...
 
tara:
Эх, ракетчики,- рожденные жать кнопки летать не могут :)

Где уж нам... :)
 

Помогите вписать в этот код поиск закрытого, что бы следующий открывался противоположный. (

// ---
void OnTick()
{
    // ---
    // закрытие сделки
    if(find_orders(_MagicNumber))
    {
        if(cl_buy_sig())
        {
            cbm(_MagicNumber, _Slippage, OP_BUY);
        }
        if(cl_sell_sig())
        {
            cbm(_MagicNumber, _Slippage, OP_SELL);
        }
    }
   
    // открытие сделки
    // ---
    get_lots_by_percent(Ask, Ask-_SL*K_DIG*Point);
    // ---
    if(!find_orders(_MagicNumber, (_OnlyOneOpenedPos ? -1 : OP_BUY)))
    {
        if(op_buy_sig() && LAST_BUY_BARTIME != iTime(Symbol(), Period(), 0))
        {
            LAST_BUY_BARTIME = iTime(Symbol(), Period(), 0);
            open_positions(OP_BUY, OP_LOTS);   
        }
    }
    // ---
    if(!find_orders(_MagicNumber, (_OnlyOneOpenedPos ? -1 : OP_SELL)))
    {
        if(op_sell_sig() && LAST_SELL_BARTIME != iTime(Symbol(), Period(), 0))
        {
            LAST_SELL_BARTIME = iTime(Symbol(), Period(), 0);
            open_positions(OP_SELL, OP_LOTS);   
        }
    }
    // ---
    T_SL();
    // ---
    nonLoss();
}

// ---

// ---
void get_lots_by_percent(double op_price, double sl_price)
{
    // MQL4 | объём сделки рассчитывается по значению SL и допустимому проценту потерь
    RefreshRates();
    if(_SL == 0)
    {
        OP_LOTS = MarketInfo(Symbol(), MODE_MINLOT);
        return;
    }
    // ---
    int pp;
    if (op_price < sl_price)
        pp = int((sl_price - op_price) / Point);
    else
        pp = int((op_price - sl_price) / Point);
    OP_LOTS = (((AccountBalance() * _LosPercent) / 100) / MarketInfo(Symbol(), MODE_TICKVALUE)) / (pp);
    OP_LOTS = MathRound(OP_LOTS / MarketInfo(Symbol(), MODE_LOTSTEP)) * MarketInfo(Symbol(), MODE_LOTSTEP);
    OP_LOTS = MathMax(OP_LOTS, MarketInfo(Symbol(), MODE_MINLOT));
    OP_LOTS = MathMin(OP_LOTS, MarketInfo(Symbol(), MODE_MAXLOT));
}

// ---
// ---
bool find_orders(int magic = -1, int type = -1, int time = -1, string symb = "NULL", double price = -1, double lot = -1)
{
    // MQL4 | функция поиска открытых ордеров
    // возвращает истину, если найден хотя бы один ордер с подходящими параметрами
    for (int i = OrdersTotal() - 1; i >= _OR; i--)
    {
        if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            break;
        if (((OrderType() == type) || (type == -1))
            && ((OrderMagicNumber() == magic) || (magic == -1))
            && ((OrderSymbol() == symb) || (symb == "NULL" && OrderSymbol() == Symbol()))
            && ((OrderOpenTime() >= time) || (time == -1))
            && ((OrderLots() == lot) || (lot == -1))
            && ((NormalizeDouble(OrderOpenPrice(), Digits) == NormalizeDouble(price, Digits)) || (price == -1)))
        {
            return (true);
            break;
        }
    }
    return (false);
}

// ---

 
Vadim Zhuravlev:

Помогите вписать в этот код поиск закрытого, что бы следующий открывался противоположный. (

Как правильно выбрать последний ордер в истории?

Адаптируйте под свои нужды.

 

Удивительно, что пользователь этого ресурса с 2009 года, с огромным рейтингом и который продает 40 продуктов, задает такой вопрос.

Обалдеть можно. 

 
Petros Shatakhtsyan:

Удивительно, что пользователь этого ресурса с 2009 года, с огромным рейтингом и который продает 40 продуктов, задает такой вопрос.

Обалдеть можно. 

Ну да , когда зарегистрировался посмотрели ,  а когда данную тему создал нет... Удивительно.

Причина обращения: