工作已完成
指定
Доброго времени суток!
Задача следующая: нужно автоматизировать торговую систему, основанную на одном индикаторе (скрин и код индикатора внизу письма). Робот должен работать в МТ4. Сам индикатор создан и работает в tradingview.com Вероятно код индюка необходимо будет переписать под язык Метатрейдера.
Реализация предполагает 2 этапа: отдельно робот и отдельно индикатор.
Новый индикатор на выходе должен один в один выдавать сигналы такие же, как у первоисточника.
Считаю правильным начать с индикатора.
Робот должен работать следующим образом:
Вход: в 10.15 в направлении, которое показывает индикатор
Выход: 1. если индикатор отрисовал синий бар
2. если цена от точки входа ушла больше чем 40 пунктов, но меньше чем 80 пунктов и вернулась к уровню входа (при данном условии выход по стопу в безубыток +5 пунктов)
3. закрывать позиции за 15 минут перед выходом важных данных по рынку
3. закрывать позиции на ночь (ориентировочно в 22.45)
Примечания:
1. таймфрейм: М15
2. инструмент – любая пара
3. профит фиксированный - 80 пунктов. При достижении робот должен закрыть позиции и ждать противоположного сигнала (если позиция была в лонг, то ждем сигнала на шорт)
4. после 19.00 не открывать новых позиций, кроме случаев, когда свеча в 19.00 сигнальная
5. если сформировалась синяя свеча в индикаторе: открытые сделки закрыть, новые не открывать до сигнала
В роботе должна быть реализована возможность по умолчанию выставлять размер лота и параметры индикатора.
Выше представлен общий каркас тех. задания. Исполнителю будет предоставлена подробная версия
код индикатора:
//
//
study("Vwewwww", shorttitle="ACO")
length = input(defval=55, title="TEMA Period")
emaLength = input(defval=60, title="EMA Period")
candleSizeFactor = input(defval=1.1, title="Candle size factor")
overlayMode=input(false)
calc_tema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
ema3 = ema(ema2, length)
3 * (ema1 - ema2) + ema3
haOpen = nz((haOpen[1] + ohlc4) / 2, ohlc4)
haClose = (haOpen + max(high, haOpen) + min(low, haOpen) + ohlc4) / 4
thaClose = calc_tema(haClose, length)
thl2 = calc_tema(hl2, length)
haCloseSmooth = 2 * thaClose - calc_tema(thaClose, length)
hl2Smooth = 2 * thl2 - calc_tema(thl2, length)
shortCandle = abs(close - open) < ((high - low) * candleSizeFactor)
keepn1 = ((haClose >= haOpen) and (haClose[1] >= haOpen[1])) or (close >= haClose) or (high > high[1]) or (low > low[1]) or (hl2Smooth >= haCloseSmooth)
keepall1 = keepn1 or (keepn1[1] and (close >= open) or (close >= close[1]))
keep13 = shortCandle and (high >= low[1])
utr = keepall1 or (keepall1[1] and keep13)
keepn2 = (haClose < haOpen) and (haClose[1] < haOpen[1]) or (hl2Smooth < haCloseSmooth)
keep23 = shortCandle and (low <= high[1])
keepall2 = keepn2 or (keepn2[1] and (close < open) or (close < close[1]))
dtr = keepall2 or (keepall2[1] and keep23)
upw = dtr == 0 and dtr[1] and utr
dnw = utr == 0 and utr[1] and dtr
upwWithOffset = upw != dnw ? upw : nz(upwWithOffset[1])
buySig = upw or (not dnw and (na(upwWithOffset) ? 0 : upwWithOffset))
ltSellSig = close < ema(close, emaLength)
neutralSig = buySig or (ltSellSig ? 0 : nz(neutralSig[1]))
hacolt = buySig ? 1 : neutralSig ? 0 : -1
plot(not overlayMode ? hacolt : na, style=columns, color=hacolt>0?green:hacolt<0?red:blue, title="HACOLT")
barcolor(overlayMode?hacolt>0?green:hacolt<0?red:blue:na)
