Trabalho concluído
Tempo de execução 68 dias
Termos de Referência
Hello !
I use the SS_SupportResistance indicator and I love it :
It draw zones based on Fractals.
But I would like to have Daily, Weekly and Monthly Pivot point supports (S1,S2,S3) and
resistances (R1,R2,R3) to be drawed as zone like the rests and merged when they overlap.
Daily, Weekly and Monthly should be switched with parameters.
This it the part that get the zone, it should be easy to add the
Pivot Points supports and resistances :
The whole indicator is attached.
void FindZones() { int i, j, shift, bustcount=0, testcount = 0; double hival, loval; bool turned = false, hasturned = false; double temp_hi[1000], temp_lo[1000]; int temp_start[1000], temp_hits[1000], temp_strength[1000], temp_count = 0; bool temp_turn[1000], temp_merge[1000]; int merge1[1000], merge2[1000], merge_count = 0; // iterate through zones from oldest to youngest (ignore recent 5 bars), // finding those that have survived through to the present... for (shift=MathMin(iBars(NULL, TimeFrame)-1, BackLimit); shift>IgnoreShift; shift--) { double atr = iATR(NULL, TimeFrame, 7, shift); double fu = atr/2 * zone_fuzzfactor; bool isWeak; bool touchOk = false; bool isBust = false; double close = iClose(NULL, TimeFrame, shift); double high = iHigh(NULL, TimeFrame, shift); double low = iLow(NULL, TimeFrame, shift); double hi_i; double lo_i; if (FastUpPts[shift] > 0.001) { // a zigzag high point isWeak = true; if (SlowUpPts[shift] > 0.001) isWeak = false; hival = high; if (zone_extend == true) hival += fu; loval = MathMax(MathMin(close, high-fu), high-fu*2); turned = false; hasturned = false; isBust = false; bustcount = 0; testcount = 0; for (i=shift-1; i>=0; i--) { hi_i = iHigh(NULL, TimeFrame, i); lo_i = iLow(NULL, TimeFrame, i); if ((turned == false && FastUpPts[i] >= loval && FastUpPts[i] <= hival) || (turned == true && FastDnPts[i] <= hival && FastDnPts[i] >= loval)) { // Potential touch, just make sure its been 10+candles since the prev one touchOk = true; for (j=i+1; j<i+11; j++) { if ((turned == false && FastUpPts[j] >= loval && FastUpPts[j] <= hival) || (turned == true && FastDnPts[j] <= hival && FastDnPts[j] >= loval)) { touchOk = false; break; } } if (touchOk == true) { // we have a touch. If its been busted once, remove bustcount // as we know this level is still valid & has just switched sides bustcount = 0; testcount++; } } if ((turned == false && hi_i > hival) || (turned == true && lo_i < loval)) { // this level has been busted at least once bustcount++; if (bustcount > 1 || isWeak == true) { // busted twice or more isBust = true; break; } if (turned == true) turned = false; else if (turned == false) turned = true; hasturned = true; // forget previous hits testcount = 0; } } if (isBust == false) { // level is still valid, add to our list temp_hi[temp_count] = hival; temp_lo[temp_count] = loval; temp_turn[temp_count] = hasturned; temp_hits[temp_count] = testcount; temp_start[temp_count] = shift; temp_merge[temp_count] = false; if (testcount > 3) temp_strength[temp_count] = ZONE_PROVEN; else if (testcount > 0) temp_strength[temp_count] = ZONE_VERIFIED; else if (hasturned == true) temp_strength[temp_count] = ZONE_TURNCOAT; else if (isWeak == false) temp_strength[temp_count] = ZONE_UNTESTED; else temp_strength[temp_count] = ZONE_WEAK; temp_count++; } } else if (FastDnPts[shift] > 0.001) { // a zigzag low point isWeak = true; if (SlowDnPts[shift] > 0.001) isWeak = false; loval = low; if (zone_extend == true) loval -= fu; hival = MathMin(MathMax(close, low+fu), low+fu*2); turned = false; hasturned = false; bustcount = 0; testcount = 0; isBust = false; for (i=shift-1; i>=0; i--) { hi_i = iHigh(NULL, TimeFrame, i); lo_i = iLow(NULL, TimeFrame, i); if ((turned == true && FastUpPts[i] >= loval && FastUpPts[i] <= hival) || (turned == false && FastDnPts[i] <= hival && FastDnPts[i] >= loval)) { // Potential touch, just make sure its been 10+candles since the prev one touchOk = true; for (j=i+1; j<i+11; j++) { if ((turned == true && FastUpPts[j] >= loval && FastUpPts[j] <= hival) || (turned == false && FastDnPts[j] <= hival && FastDnPts[j] >= loval)) { touchOk = false; break; } } if (touchOk == true) { // we have a touch. If its been busted once, remove bustcount // as we know this level is still valid & has just switched sides bustcount = 0; testcount++; } } if ((turned == true && hi_i > hival) || (turned == false && lo_i < loval)) { // this level has been busted at least once bustcount++; if (bustcount > 1 || isWeak == true) { // busted twice or more isBust = true; break; } if (turned == true) turned = false; else if (turned == false) turned = true; hasturned = true; // forget previous hits testcount = 0; } } if (isBust == false) { // level is still valid, add to our list temp_hi[temp_count] = hival; temp_lo[temp_count] = loval; temp_turn[temp_count] = hasturned; temp_hits[temp_count] = testcount; temp_start[temp_count] = shift; temp_merge[temp_count] = false; if (testcount > 3) temp_strength[temp_count] = ZONE_PROVEN; else if (testcount > 0) temp_strength[temp_count] = ZONE_VERIFIED; else if (hasturned == true) temp_strength[temp_count] = ZONE_TURNCOAT; else if (isWeak == false) temp_strength[temp_count] = ZONE_UNTESTED; else temp_strength[temp_count] = ZONE_WEAK; temp_count++; } } } // look for overlapping zones... if (zone_merge == true) { merge_count = 1; int iterations = 0; while (merge_count > 0 && iterations < 3) { merge_count = 0; iterations++; for (i = 0; i < temp_count; i++) temp_merge[i] = false; for (i = 0; i < temp_count-1; i++) { if (temp_hits[i] == -1 || temp_merge[j] == true) continue; for (j = i+1; j < temp_count; j++) { if (temp_hits[j] == -1 || temp_merge[j] == true) continue; if ((temp_hi[i] >= temp_lo[j] && temp_hi[i] <= temp_hi[j]) || (temp_lo[i] <= temp_hi[j] && temp_lo[i] >= temp_lo[j]) || (temp_hi[j] >= temp_lo[i] && temp_hi[j] <= temp_hi[i]) || (temp_lo[j] <= temp_hi[i] && temp_lo[j] >= temp_lo[i])) { merge1[merge_count] = i; merge2[merge_count] = j; temp_merge[i] = true; temp_merge[j] = true; merge_count++; } } } // ... and merge them ... for (i=0; i<merge_count; i++) { int target = merge1[i]; int source = merge2[i]; temp_hi[target] = MathMax(temp_hi[target], temp_hi[source]); temp_lo[target] = MathMin(temp_lo[target], temp_lo[source]); temp_hits[target] += temp_hits[source]; temp_start[target] = MathMax(temp_start[target], temp_start[source]); temp_strength[target] = MathMax(temp_strength[target], temp_strength[source]); if (temp_hits[target] > 3) temp_strength[target] = ZONE_PROVEN; if (temp_hits[target] == 0 && temp_turn[target] == false) { temp_hits[target] = 1; if (temp_strength[target] < ZONE_VERIFIED) temp_strength[target] = ZONE_VERIFIED; } if (temp_turn[target] == false || temp_turn[source] == false) temp_turn[target] = false; if (temp_turn[target] == true) temp_hits[target] = 0; temp_hits[source] = -1; } } } // copy the remaining list into our official zones arrays zone_count = 0; for (i=0; i<temp_count; i++) { if (temp_hits[i] >= 0 && zone_count < 1000) { zone_hi[zone_count] = temp_hi[i]; zone_lo[zone_count] = temp_lo[i]; zone_hits[zone_count] = temp_hits[i]; zone_turn[zone_count] = temp_turn[i]; zone_start[zone_count] = temp_start[i]; zone_strength[zone_count] = temp_strength[i]; if (zone_hi[zone_count] < Close[4]) zone_type[zone_count] = ZONE_SUPPORT; else if (zone_lo[zone_count] > Close[4]) zone_type[zone_count] = ZONE_RESIST; else { for (j=5; j<1000; j++) { if (iClose(NULL, TimeFrame, j) < zone_lo[zone_count]) { zone_type[zone_count] = ZONE_RESIST; break; } else if (iClose(NULL, TimeFrame, j) > zone_hi[zone_count]) { zone_type[zone_count] = ZONE_SUPPORT; break; } } if (j == 1000) zone_type[zone_count] = ZONE_SUPPORT; } zone_count++; } } }
Respondido
1
Classificação
Projetos
93
49%
Arbitragem
18
56%
/
17%
Expirado
38
41%
Livre
2
Classificação
Projetos
1123
43%
Arbitragem
47
49%
/
23%
Expirado
84
7%
Livre
3
Classificação
Projetos
2820
80%
Arbitragem
156
22%
/
43%
Expirado
487
17%
Livre
Pedidos semelhantes
Create The Profitunity System Trading
200 - 500 USD
For only developer who understand Chaos/ Profiunity trading system by Bill WIlliams, Create The Profitunity System Trading based on Bill Williams Chaos theory, Trade based on Trend Affirmation in Daily, entry in H4, using Williams Fractal, Williams Alligator, Awesome Oscillator, Accelerator Oscillator, Market Facilitation Index. Balance Line, entry on Reversal, add on while market show continuation sign. Please quote
Hi, I am looking for someone who has already developed a high-performance Gold EA that can outperform the one shown in my screenshot. If you have such an EA, please apply for this job. Please describe how the EA works (for example, whether it uses a grid system) and provide backtest results along with the set files. If the EA meets my expectations, you can make the necessary adjustments and I will use it as my own
Description I need an very low latency MT5 Expert Advisor (EA) developed in MQL5 to automate TradingView alerts into MT5 trades for alerts set up done on trading view. The EA must work on both DEMO and LIVE accounts whichever will be attached to MT5 (XM, IC Markets and similar MT5 brokers) and be suitable for fast 1-minute timeframe scalping.End to End solution. Functional Requirements 1. TradingView Integration
Project Overview I am looking for an experienced MQL5 developer to build a custom, prop-firm-compliant trend-following Expert Advisor (EA) for MetaTrader 5 . This EA will be used on prop firm accounts (e.g., FTMO-style rules), so strict risk control and rule compliance are mandatory . This is NOT a grid, martingale, scalping, or recovery EA. The goal is consistency, rule compliance, and capital preservation , not
I am looking for an experienced MQL5 developer to build a professional MT5 software (indicator or semi-automated EA) for metals and major forex pairs. 📌 PLATFORM & MARKETS Platform: MetaTrader 5 Instruments: XAUUSD (Gold vs USD) XAGUSD (Silver vs USD) EURUSD GBPUSD USDJPY Trading styles: Scalping Intraday / short-term swing 🎯 MAIN OBJECTIVE I do NOT want an aggressive fully automated robot. I want a
Tradingview indicator
30+ USD
I want to check if this indicator is repainting or not Whick mean the results of back testing is legit or not if anyone can help me to review it kindly to well to contact me i will be happy to work and go on long term work with anyone thanks
Development of an MQL5 Expert Advisor (Reverse Engineering)
1000 - 2000 USD
Specifications – Development of an MQL5 Expert Advisor (Reverse Engineering) Project context: I have access to a real trading history consisting of more than 500 trades executed over a period of approximately 3 years. These trades have been exported into a CSV file containing all available information, including date, time, symbol, order type, entry price, and exit price. Important: I do not have access to the
1.Sinyal Perdagangan : Sinyal beli: garis MACD utama memotong garis sinyal ke atas (macd_current>signal_current && macd_previous<signal_previous). Sinyal jual: garis MACD utama memotong garis sinyal ke bawah (macd_current<signal_current && macd_previous>signal_previous). Gambar di bawah menunjukkan kasus beli dan jual. 2. Posisi ditutup pada sinyal yang berlawanan: Posisi beli ditutup pada sinyal jual, dan posisi
Trading bot fully automated
30 - 299 USD
specification High-Frequency Candle Momentum Scalper 1. Strategy Overview Core Logic: The EA identifies the current color of the active candle (Bullish or Bearish). Entry Trigger: It opens positions only after a specific duration of the candle has passed (e.g., after 30 seconds on a 1-minute candle) to confirm the direction. 2. Entry Logic (The "Half-Candle" Rule) Timeframe: M1 (Default, but adjustable). Time Filter
Greeting Im in need of a programmer that can help me convert from TOS to trading view? The script is available with me, kindly bid if it is what you can do for me Thanks
Informações sobre o projeto
Orçamento
65+ USD
Prazo
para 5 dias
