← К каталогу
Исходный код · ID 3433

StepReversalEA

reverse pending1.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

StepReversalEA — торговый советник для MetaTrader 4, реализующий стратегию пиф-шаговых реверсий. Советник отслеживает движение цены базового актива и при достижении определённых уровней шага размещает отложенные ордера (Buy Stop / Sell Stop) в направлении текущего тренда.

При наличии открытых позиций советник дополнительно проверяет возможность установки реверсивных отложенных ордеров. Если открыта позиция Buy, формируется Sell Stop на расстоянии шага от текущей цены спроса, и наоборот для Sell-позиций. Количество одновременно существующих отложенных ордеров ограничивается параметром.

В качестве инструментов исполнения используются стандартные торговые функции MetaTrader 4. Все ордера маркируются магическим числом для удобной идентификации и управления.

Получить полный код

Поиск по коду файла

extern double PipStep = 10; extern double LotSize = 0.01; extern double StopLoss = 10; extern double TakeProfit = 10; extern int MagicNumber = 123456; extern int MaxPendingOrders = 100;

int lastStepLevel = 0; double lastBasePrice = 0;

int OnInit() {
      // код доступен только после оплаты
   }

bool OrderExistsAtPrice(double price, int type) { for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber) { if (OrderType() == type && MathAbs(OrderOpenPrice() - price) < (PipStep * Point / 2)) return true; } } return false; }

int CountPendingOrders() { int count = 0; for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) count++; } } return count; }

void OnTick() {
      // код доступен только после оплаты
   } double currentPrice = NormalizeDouble(Ask, Digits); double stepSize = PipStep * Point;

int direction = (currentPrice > lastBasePrice) ? 1 : (currentPrice < lastBasePrice) ? -1 : 0;
int stepsMoved = int(MathAbs(currentPrice - lastBasePrice) / stepSize);

if (stepsMoved > lastStepLevel && direction != 0)
{
    for (int j = lastStepLevel + 1; j <= stepsMoved; j++)
    {
        if (CountPendingOrders() >= MaxPendingOrders) break;

        double orderPrice = lastBasePrice + direction * j * stepSize;
        double entryPrice = NormalizeDouble(orderPrice - direction * stepSize, Digits);

        if (direction > 0 && !OrderExistsAtPrice(entryPrice, OP_SELLSTOP))
        {
            OrderSend(Symbol(), OP_SELLSTOP, LotSize, entryPrice, 3,
                      NormalizeDouble(entryPrice + StopLoss * Point, Digits),
                      NormalizeDouble(entryPrice - TakeProfit * Point, Digi

Показано первые 50% кода (символов: 2643)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
264,30₽ ≈ $3.23