Блог им. vldtar

Пример рабочей торговой системы на MQL5 с выходом по времени

#property copyright "Copyright 2019, Example Inc."
#property link      "https://www.example.com"

input int LotSize = 1;
input int Period = 30;
input double VolatilityThreshold = 0.1;
input int ExitAfterMinutes = 60;

int buyOrderId;
int sellOrderId;
datetime entryTime;

void OnTick()
{
    // Get the last Period candlesticks
    ArraySetAsSeries(candles, true);
    CopyRates(Symbol(), PERIOD_M1, TimeCurrent() - Period, Period, candles);

    // Calculate the maximum and minimum prices
    double maxPrice = High(candles);
    double minPrice = Low(candles);

    // Calculate the standard deviation of the closing prices
    double stdev = iStdDev(candles, MODE_CLOSE, 0);

    // Check if the volatility is above the threshold
    if (stdev > VolatilityThreshold)
    {
        // Check if the current ask price is higher than the maximum price
        if (Ask > maxPrice)
        {
            // Place a buy order
            if (OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, "My order", 16384, 0, Green))
            {
                Print("Buy order placed");
                buyOrderId = OrderTicket();
                entryTime = TimeCurrent();
            }
            else
            {
                Print("Error placing buy order : ", ErrorDescription(GetLastError()));
            }
        }

        // Check if the current bid price is lower than the minimum price
        if (Bid < minPrice)
        {
            // Place a sell order
            if (OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, 0, 0, "My order", 16384, 0, Red))
            {
                Print("Sell order placed");
                sellOrderId = OrderTicket();
                entryTime = TimeCurrent();
            }
            else
            {
                Print("Error placing sell order : ", ErrorDescription(GetLastError()));
            }
        }
    }

    if (buyOrderId > 0)
    {
        if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60)
        {
            if (OrderClose(buyOrderId, LotSize, Bid, 3, clrNONE))
            {
                Print("Buy order closed");
                buyOrderId = 0;
            }
            else
            {
                Print("Error closing buy order : ", ErrorDescription(GetLastError()));
            }
        }
    }

    if (sellOrderId > 0)
    {
        if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60)
        {
            if (OrderClose(sellOrderId, LotSize, Ask, 3, clrNONE))
            {
                Print("Sell order closed");
                sellOrderId = 0;
            }
            else
            {
                Print("Error closing sell order : ", ErrorDescription(GetLastError()));
            }
        }
    }
}
★2
8 комментариев
Приветствую! Сколько примерно стоит переписать советник MQL4 700 строк кода в MQL5?
Василий Федорович, здравствуйте. К сожалению, на текущий момент я не предоставляю данного рода услуги. Про стоимость также не знаю.
Василий Федорович, Могу за 20к рублей.
Оплата по факту или этапами.
если возможно разбить на этапы.
без предоплаты
avatar
выглядит сложно… нам бы кубики
avatar
ves2010, так это в кубик один упаковать можно. Язык тот же.
А по сути алгоритм входит в сделку, когда и среднеквадратичный размах свечей выше заданного числа, и вышли за границы локального экстремума в сторону сделки. Выход — через час.
Неужто кубиками нельзя набрать?
А сам алгоритм требует проверки и настройки параметров для конкретного инструмента, иначе — пролёт.
avatar
У тя ж робот будет как пулемет покупать(или продавать) на каждом тике!
Нахрена такой робот нужен?
avatar
Наконец-то халява, образец. Полгода не могу собраться и написать ещё более рабочую на MQL5 с выходом по времени. Причём на MT4 написана.
avatar

теги блога Чувак Хачинбек

....все тэги



UPDONW
Новый дизайн