MQL5 Refactor Job – NIKA_FTS (REV + PSAR + HA only, closed-candle, max speed)

MQL5 Индикаторы

Работа завершена

Время выполнения 17 дней
Отзыв от заказчика
good guy
Отзыв от исполнителя
GOOD CLIENT

Техническое задание

Summary

Refactor my current NIKA_FTS.mq5 into a minimal, fast, backtest-deterministic indicator that keeps:

  • Tilson T3 pair (fast/slow) with separate alphas → drives REV state

  • PSAR (plot + up/down cross signals)

  • Heikin-Ashi overlay (candles/bars/hollow), colored by REV state

Remove everything else (RSI, TSI, TRM, MA1/2/3, MA crosses, Curl, bar-color logic from RSI/TRM, etc.).
All logic must be closed-candle only (no live/intrabar behavior).


Scope of Work

KEEP & Implement

  1. Tilson T3 (double-alpha)

    • Inputs:

      input int aLength = 5; // fast T3 length input int Length = 8; // slow T3 length input double alphaFast = 0.70; // fast T3 alpha input double alphaSlow = 0.70; // slow T3 alpha

    • Buffers: anT3Average[] (fast), nT3Average[] (slow)

    • Plots: T3 Fast color line, T3 Slow color line, T3 Fill between them

    • Calls:

              calc_t3_series(src_arr, total, aLength, alphaFast, anT3Average);
      calc_t3_series(src_arr, total, Length , alphaSlow, nT3Average);
      
  2. REV state (Tilson-based)

    • For bar i (closed bars only):

      • uc : anT3Average[i] >= nT3Average[i] && Close[i] > nT3Average[i]

      • dc : anT3Average[i] <= nT3Average[i] && Close[i] < nT3Average[i]

      • ur : anT3Average[i] <= nT3Average[i] && Close[i] > nT3Average[i] (cross up)

      • dr : anT3Average[i] >= nT3Average[i] && Close[i] < nT3Average[i] (cross down)

    • Output buffer: Rev[] = +1 (bull: uc/ur), -1 (bear: dc/dr), 0 otherwise.

  3. PSAR

    • Inputs: start , inc_v , max_v

    • Use iSAR() handle; copy to sar[]

    • Signal buffer: SARsig[] = +1 if Close[i] >= sar[i] , else -1

    • Plot: dots/arrows (bull/bear color by state)

  4. Heikin-Ashi overlay (KEEP)

    • Inputs:

      enum CandleType {CT_Candles }; input CandleType type =

              CT_Candles 
      input bool haover = true; input bool rPrice = false; // optional real-close line

    • Buffers: hac_* and/or hab_* + color index buffer

    • Color rule: map REV → HA color

      • Rev>0 → bull; Rev<0 → bear; Rev==0 → neutral

  5. Alerts (closed-bar only)

    • Mode input:

      enum AlertMode { AM_PER_BAR=0, AM_PER_BAR_CLOSE }; input AlertMode i_alert_mode = AM_PER_BAR_CLOSE; input bool REVUP=false, REVDWN=false, SARUP=false, SARDWN=false;

    • Trigger only on last fully closed bar:

      • REVUP : Close[i-1] <= nT3[i-1] && Close[i] > nT3[i]

      • REVDWN : Close[i-1] >= nT3[i-1] && Close[i] < nT3[i]

      • SARUP : cross above PSAR

      • SARDWN : cross below PSAR

  6. 2-row table (Rev, SAR)

    • Inputs:

              input bool showTable=false;
      input int  textSize=12, textWidth=100, textHeight=25, tableYpos=10, tableXpos=10;
      
    • Rows: “Rev”, “SAR”; icons ✅ / ❌ / 🔸 .

    • Update only when a new bar closes (no per-tick redraw).

REMOVE / PRUNE

  • All RSI/TSI/TRM/MA/Curl code: enums, inputs, buffers, plots, alerts, palette colors, paint logic, table cells.

  • Any leftover live/intrabar logic (e.g., using TimeCurrent , per-tick alerts, on-the-fly objects).

  • Any plotting/objects unrelated to T3/PSAR/HA/table.


Closed-Candle-Only Rules (hard requirement)

  • In OnCalculate , set:

    const int last_closed = rates_total - 2; int start = (prev_calculated>0 ? prev_calculated-1 : warmup); for(int i=start; i<=last_closed; ++i) { ... } // NEVER use rates_total-1 in logic

  • Use data from arrays time[]/open[]/high[]/low[]/close[] only.

  • No SymbolInfoDouble(BID/ASK) or TimeCurrent() in logic/alerts.

  • Alerts and table update only when time[last_closed] changes (track static datetime last_bar_time ).


Performance & Code Quality (hard requirement)

  • Max speed / zero “dirty” code:

    • Single pass loop, no nested loops per bar.

    • Respect prev_calculated . Start at max(prev_calculated-1, warmup) .

    • Pre-allocate & reuse buffers; ArraySetAsSeries(..., true) once.

    • No dynamic ObjectCreate/Delete inside the bar loop. Table draw only once per closed bar; otherwise disabled.

    • Move branches out of hot loops; precompute booleans reused multiple times.

    • Keep #property indicator_plots and indicator_buffers to exact counts used.

    • Avoid repeated switch / Math* in hot path when possible; cache inputs.

    • Use built-in iSAR handle; a single CopyBuffer per call; fill EMPTY_VALUE for overflow.

    • No sleeps, prints, file I/O, or terminal calls in calc loop.

  • Backtest determinism:

    • No tick-dependent state. Results must be identical in visual/non-visual and multi-core tester.

    • No dependence on chart scaling/zoom or user objects.

  • Deinit hygiene: ObjectsDeleteByPrefix(0,"NIKA-") ; do not nuke user objects.


Final Inputs (only)

// T3
input int    aLength   = 5;
input int    Length    = 8;
input double alphaFast = 0.70;
input double alphaSlow = 0.70;

// PSAR
input double start = 0.043;
input double inc_v = 0.043;
input double max_v = 0.34;

// Visuals
enum CandleType { CT_Hollow=0, CT_Bars, CT_Candles };
input CandleType type = CT_Hollow;
input bool t3vis   = true;
input bool psarvis = true;
input bool haover  = true;
input bool rPrice  = false;

// Alerts (closed-bar only)
enum AlertMode { AM_PER_BAR=0, AM_PER_BAR_CLOSE };
input AlertMode i_alert_mode = AM_PER_BAR_CLOSE;
input bool REVUP=false, REVDWN=false, SARUP=false, SARDWN=false;

// Optional table
input bool showTable=false;
input int  textSize=12, textWidth=100, textHeight=25, tableYpos=10, tableXpos=10;

Required Buffers/Plots

  • Calc: anT3Average[] , nT3Average[] , sar[] , src_arr[] , HA arrays ( hac_* / hab_* )

  • Signals: Rev[] , SARsig[]

  • Plots:

    • Color-line T3 Fast , color-line T3 Slow , T3 Fill (2 buffers)

    • PSAR dots

    • HA candles/bars/hollow (color index)

    • Real Close line (optional)

  • Palette: only colors used by T3/PSAR/HA.


Acceptance Tests

  1. Compilation: MT5 current build, 0 errors / 0 warnings.

  2. Search-clean: No occurrences of RSI , TSI , TRM , MA1 , MA2 , MA3 , HCROSS , Curl .

  3. Closed-bar only: Changing tester from “Every tick” → “1 minute OHLC” yields identical buffers.

  4. Performance: On M1 with 50k bars, first load < 50ms and incremental updates scale O(1) per bar (no visible lag).

  5. Alerts: Fire once per qualifying closed bar (when AM_PER_BAR_CLOSE ), never on forming bar.

  6. HA coloring: Follows Rev state correctly; table (if enabled) shows only “Rev”, “SAR”.

  7. Determinism: Visual vs non-visual backtests produce the same Rev[]/SARsig[]/sar[]/T3 values.


Deliverables

  1. Refactored NIKA_FTS.mq5 .

  2. Short changelog of removed modules + final public API (inputs/plots/buffers).

  3. QA note with 3 screenshots:

    • Bull REV + SARUP

    • Bear REV + SARDWN

    • Neutral REV



  • Export a consolidated Signal[] buffer: +1 bull / 0 neutral / −1 bear (mirrors Rev ).

  • Inputs for line widths and PSAR dot size.


    input int    WarmupBars   = 500;     // bars to prefill T3 before signaling
    input int    MaxHistory   = 10000;  // cap processing for speed; 0 = unlimited
    input bool   UseSeries    = true;    // ArraySetAsSeries on calc buffers




Откликнулись

1
Разработчик 1
Оценка
(25)
Проекты
31
13%
Арбитраж
14
0% / 79%
Просрочено
9
29%
Свободен
2
Разработчик 2
Оценка
(2)
Проекты
3
0%
Арбитраж
4
0% / 50%
Просрочено
0
Работает
3
Разработчик 3
Оценка
Проекты
0
0%
Арбитраж
0
Просрочено
0
Свободен
4
Разработчик 4
Оценка
(177)
Проекты
189
47%
Арбитраж
3
33% / 33%
Просрочено
1
1%
Загружен
5
Разработчик 5
Оценка
(1)
Проекты
1
0%
Арбитраж
0
Просрочено
0
Свободен
Похожие заказы
Modification of Trade_Panel_7 7.05 Objective . I have this utility “Trade_Panel_7 7.05” with which I open and close positions. Please refer to attached “Trade Panel Modification.jpg”. It shows an input parameter “Volume Step”. This parameter has the initial value of 0.02 as shown. This feature needs to be amended. Present Status . Value of lot size is increased by this “Volume Step”. I have built a whole series of
Indicador Maximas e Minimas + Super Trend O Indicador MAX/MIN é um indicador de análise técnica para o MetaTrader 5 , desenvolvido para ajudar você a identificar regiões importantes de preço e possíveis oportunidades de compra e venda. O que ele faz MAX/MIN: identifica máximas e mínimas relevantes do mercado e mostra os preços no gráfico. HH / HL / LH / LL: ajuda a visualizar a estrutura do mercado, mostrando quando
Hello Traders, Have a trading strategy or idea you want to automate? I specialize exclusively in MQL5 development, helping traders turn their concepts into professional trading solutions. Custom Expert Advisors — automate your strategy and reduce manual execution Custom Indicators — transform your market ideas into powerful trading tools Fix & Debug — identify errors and get your existing code working properly
I DO NOT need any programming or strategy development. I already have a working NinjaTrader 8 automated strategy based on a 3/5 EMA crossover. I need you to run my existing strategy through NinjaTrader Strategy Analyzer/Optimizer, test the existing adjustable parameters, and find robust settings with the best profit factor and lowest reasonable drawdown. I will provide the existing NinjaScript ZIP. I do not want the
I'm looking for an experienced developer to create an automated gold trading bot. The bot should be compatible with MetaTrader 4/5 and TradingView. Key Requirements: - Automated trading bot - Compatible with MetaTrader 4/5 and TradingView - Implement scalping and swing trading strategies Ideal Skills and Experience: - Proficiency in trading algorithms - Experience with gold trading - Familiarity with MetaTrader and
I need a robust optimization of my MT5 EA, mainly for XAUUSD (Gold). Please optimize the existing adjustable parameters such as entry/exit settings, SL/TP, trailing/break-even settings, and any other strategy parameters that are appropriate. I want the optimization focused on stable profitability, low/moderate drawdown, and robustness rather than simply the highest possible profit. Please use out-of-sample testing
NinjaTrader 8 / NinjaScript Phase 1 build: convert an existing Auction Market Theory (AMT) strategy into objective, alert-only decision-support logic. Not a bot, no auto-execution — trades stay manual. Covers NQ/MNQ, ES, CL, MGC using 30-min TPO/Volume Profile context with 5-min confirmation: one 5-min close outside VAH/VAL = acceptance, close back inside = rejection. Dashboard shows bias, auction state, location
Hello, I need a custom NON-REPAINT MT5 indicator that gives sell/buy arrow signals 1–2 candlesticks before a spike on Crash and boom indices respectively occurs. Requirements: Works perfectly on MT5 Shows arrows before the spike (1–2 candles earlier). Non-repaint – once the arrow appears, it must stay. Should be accurate, not quantity — only quality signals. Must work on both demo and live accounts. I want the
Hello, I saw an indicator on TradingView and would like to know if you will be able to convert it for use on Thinkorswim platform? Thanks. if anyone can help me with it kindly do well to bid it urgent thanks looking forward too see you
calcVolume( void ) { //--- MqlRates rates[]; if ( CopyRates ( _Symbol , PERIOD_CURRENT , startTime, endTime, rates) > 0 ) { double rangeHigh = rates[ 0 ].high, rangeLow = rates[ 0 ].low; int count = MathAbs ( iBarShift ( _Symbol , PERIOD_CURRENT , startTime) - iBarShift ( _Symbol , PERIOD_CURRENT , endTime)) + 1 ; //---VERTICAL PRICE RANGE for ( int b = 0

Информация о проекте

Бюджет
30 - 35 USD
Сроки выполнения
до 1 дн.