input double BelowCurrentPriceLevel = 1.13;  // Уровень ниже текущей цены для алерта
input double AboveCurrentPriceLevel = 1.14;  // Уровень выше текущей цены для алерта
input int PipsToChange = 20;                 // Количество пунктов изменения цены
input double InitialLots = 0.01;              // Количество лотов для начальной сделки
input double LotChangePercent = 10.0;        // Процент изменения количества лотов

double currentLots = InitialLots;            // Текущее количество лотов
double lastPrice;                            // Последняя цена для отслеживания изменения на N пунктов
bool belowLevelAlerted = false;              // Флаг отправки алерта для нижнего уровня
bool aboveLevelAlerted = false;              // Флаг отправки алерта для верхнего уровня

//±-----------------------------------------------------------------+
//| Expert initialization function                                   |
//±-----------------------------------------------------------------+
int OnInit()
{
    // Сохраняем начальные значения цен
    double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    if (BelowCurrentPriceLevel >= currentPrice || AboveCurrentPriceLevel <= currentPrice)
    {
        Print("Check input levels: BelowCurrentPriceLevel should be less than current price, AboveCurrentPriceLevel should be greater than current price.");
        return (INIT_FAILED);
    }

    lastPrice = currentPrice;
    return(INIT_SUCCEEDED);
}

//±-----------------------------------------------------------------+
//| Expert tick function                                             |
//±-----------------------------------------------------------------+
void OnTick()
{
    double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    // Отправляем алерты при достижении указанных уровней
    if (!belowLevelAlerted && bidPrice <= BelowCurrentPriceLevel)
    {
        Alert("Цена достигла уровня BelowCurrentPriceLevel");
        belowLevelAlerted = true; // Отмечаем, что алерт был отправлен
    }

    if (!aboveLevelAlerted && askPrice >= AboveCurrentPriceLevel)
    {
        Alert("Цена достигла уровня AboveCurrentPriceLevel");
        aboveLevelAlerted = true; // Отмечаем, что алерт был отправлен
    }

    // Проверяем изменение цены для позиций и открываем новые ордера
    if (MathAbs(bidPrice - lastPrice) > PipsToChange * _Point)
    {
        // Подсчитаем новый размер лота
        currentLots *= (1 + LotChangePercent / 100);
        lastPrice = bidPrice; // Обновление последней цены

        // Открываем новые ордера с новым размером лота
        OpenOrder(ORDER_TYPE_BUY, currentLots, "B");
        OpenOrder(ORDER_TYPE_SELL, currentLots, "S");
    }
}

void OpenOrder(ENUM_ORDER_TYPE type, double lots, string orderMagic)
{
    MqlTradeRequest request;
    MqlTradeResult result;

    // Заполнение полей структуры запроса на сделку
    Request.action = TRADE_ACTION_DEAL;
    Request.symbol = _Symbol;
    Request.volume = lots;
    Request.type = type;
    Request.sl = 0.0;    // Уровень стоп-лосс не задан
    Request.tp = 0.0;    // Уровень тейк-профит не задан
    Request.deviation = 0;
    Request.magic = StringToInteger(orderMagic + IntegerToString(GetTickCount()));
    Request.comment = "Auto trade order";

    if(type == ORDER_TYPE_BUY)
        Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    else if(type == ORDER_TYPE_SELL)
        Request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    // Попытка отправить торговый запрос
} у меня есть такой код он выдаёт эту ошибку 2024.02.29 11:17:57.776	Trades	'10000120491': failed instant buy 0.011 EURUSD at 1.08369 [Invalid request]
2024.02.29 11:17:57.777	Trades	'10000120491': failed instant sell 0.011 EURUSD at 1.08365 [Invalid request]