Работа завершена
Время выполнения 68 дней
Техническое задание
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++; } } }
Откликнулись
1
Оценка
Проекты
93
49%
Арбитраж
18
56%
/
17%
Просрочено
38
41%
Свободен
2
Оценка
Проекты
1029
39%
Арбитраж
47
49%
/
23%
Просрочено
84
8%
Свободен
3
Оценка
Проекты
2820
80%
Арбитраж
156
22%
/
43%
Просрочено
489
17%
Свободен
Похожие заказы
Pvi
30 - 200 USD
pips volume indicator between 1 to 10k counting indicator. on only specified periods of open close low hi with selected time period m1 m5 m15 etc etc with level can customize by users. changes color after each 25 percent of pips count means u set 1000 pips it must first change its color after 25 percent than 50 than 75 first the final color should be the signal of buy sell user can select the levels colors. i want to
Hi, Would it be possible to get a developer for my trading system based on the attached specification? EA DETAILS Indicators to use (1) Better RSI () (2) Dynamic Linear Regression Channel (DLRC) by Iravan on Tradingview.com () (3) Range filter Buy and Sell 5 min – guikroth version on Tradingview.com () (With Dynamic Linear Regression, the period/length is automatically adjusted making it much faster to trade
THIS JOB ONLY FOR DEVELOPER WITH MINIMUM 300 PROJECT FINISH! DONT APPLY IF YOU NOT QUALIFIED!
150+ USD
I need smart, professional, and fast programmer for doing this project quickly, that have experience in EA with minimum 300 projects finish, and have good review and reputation from their client Share your link review, if you not qualified, dont apply! I will bidding the programmer from experience, review, reputation, price, and days working My EA using Moving Average, Average True Range, and using consecutives
Hello I am looking for a developer to help me backtest my custom ninjatrader 8 strategy andake it work perfectly your expertise is highly need for this project kindly reach out to me and let proceed
Hello please I need a developer to help me fix errors on my Ninjatrader 8 strategy I and make it work perfectly your expertise is need for this project kindly reach out to me and let's proceed
Ea-Reynerie
30 - 200 USD
The ocean gets dry and you can be fate and you are my type and the one who texting first is to be hundred I would live in the world to get your matric results
Hi, i need a Expert Advisor, that can pass prop firm Challenges like FTMO / E8 / 1OF1FUNDING Profit 10% Max Drawdown (DD) 10% Max Daily Loss 4% All trades with SL NO trades during and after high impact news NO trades during Weekend Profitable backtest from 2010 to 2024 Trades Forex (If you already have a finished EA, send me the backtest) PLease contact me asap
Respected Madam I need an EA in Mql5 which can Buy at certain Increment of points like 100 then 50 then 50 then 25 then 25 then 25 then 25. Possibility of Grid increase. Buys at certain fixed level if the the Price drops like 100 points down then again 100 points down then again 100 points down like this in a grid system, Grid size I will declare. Grid order systems with stop loss and Multiple Reorders if the Stop
EA for GOLD trading
50+ USD
Trading Gold , tap in & join the ride of the trading platform and watch us grow as the days go on , we're looking forward to have you on board the journey
Hello! Same as title. I need a forex, crypto or stocks trading strategy that can be automated and also can compound profits that makes at least 100% return of investment per month. It should be backtested and provide good steady results and a relative/maximum low drawdown would be nice as well! The strategy should be able to be automated into a bot and run 24/7 on a vps if needed. The strategy can be one that you
Информация о проекте
Бюджет
65+ USD
Исполнителю
58.5
USD
Сроки выполнения
до 5 дн.