Нужен советник, изменяющий стоп-лосс

 

Всем привет. Не нашел на просторах интренета советника, который изменяет уже установленный стоп лосс. Есть один советник на тесте (вскрыть его нельзя), который выставляет стоп лосс (примерно 20 п.). А нужен советник, который будет менять этот стоп лосс на нужный. Руками постоянно изменять не удобно и нереально. Может есть у кого-нибудь на примете такой советник? 

 
Evgenii Kasimov:

Всем привет. Не нашел на просторах интренета советника, который изменяет уже установленный стоп лосс. Есть один советник на тесте (вскрыть его нельзя), который выставляет стоп лосс (примерно 20 п.). А нужен советник, который будет менять этот стоп лосс на нужный. Руками постоянно изменять не удобно и нереально. Может есть у кого-нибудь на примете такой советник? 

просто изменить стоп лосс у уже существующей позиции? а как он должен задаваться?

 

если нет исходного кода то изменить стоплосс не получится. Только если стоплосс ставится 1 раз то потом его можно изменить с помощью другого советника 

 

Цена вопроса?

 
Evgenii Kasimov:

Всем привет. Не нашел на просторах интренета советника, который изменяет уже установленный стоп лосс. Есть один советник на тесте (вскрыть его нельзя), который выставляет стоп лосс (примерно 20 п.). А нужен советник, который будет менять этот стоп лосс на нужный. Руками постоянно изменять не удобно и нереально. Может есть у кого-нибудь на примете такой советник? 

Привет.

Для изменения уже установленного стоп-лосса в MQL4 можно использовать функцию OrderModify(). Эта функция позволяет изменить параметры открытого ордера, такие как стоп-лосс, тейк-профит, цена открытия и т.д.

Ниже приведен пример кода, который будет изменять стоп-лосс для уже открытого ордера. Этот код должен быть добавлен в функцию OnTick(), чтобы он выполнялся при каждом изменении цены.

void OnTick()

{

    // Получить список открытых ордеров

    int total = OrdersTotal();

    for (int i = 0; i < total; i++)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

            // Проверить, является ли ордер Buy или Sell

            bool isBuyOrder = OrderType() == OP_BUY;

            bool isSellOrder = OrderType() == OP_SELL;

            

            // Проверить, существует ли уже установленный стоп-лосс

            bool hasStopLoss = OrderStopLoss() > 0;

            

            // Если ордер Buy и у него еще нет установленного стоп-лосса

            if (isBuyOrder && !hasStopLoss)

            {

                // Вычислить новый уровень стоп-лосса

                double newStopLoss = Bid - 20 * Point;

                

                // Установить новый уровень стоп-лосса

                bool result = OrderModify(OrderTicket(), OrderOpenPrice(), newStopLoss, OrderTakeProfit(), 0);

                if (result)

                {

                    Print("Стоп-лосс для Buy ордера изменен на: ", newStopLoss);

                }

            }

            

            // Если ордер Sell и у него еще нет установленного стоп-лосса

            if (isSellOrder && !hasStopLoss)

            {

                // Вычислить новый уровень стоп-лосса

                double newStopLoss = Ask + 20 * Point;

                

                // Установить новый уровень стоп-лосса

                bool result = OrderModify(OrderTicket(), OrderOpenPrice(), newStopLoss, OrderTakeProfit(), 0);

                if (result)

                {

                    Print("Стоп-лосс для Sell ордера изменен на: ", newStopLoss);

                }

            }

        }

    }


}



Этот код будет проверять каждый открытый ордер и изменять его стоп-лосс, если он еще не установлен. Уровень стоп-лосса рассчитывается как цена Bid минус 20 пунктов для ордера Buy и как цена Ask плюс 20 пунктов для ордера Sell. Размер изменения стоп-лосса может быть настроен по вашему усмотрению.



PS: Если нужен полноценный и готовый к установке в терминал советник, то цена вопроса один день и 50 бакинских. Пишите, оформим

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