Работа завершена
Время выполнения 4 дня
Отзыв от заказчика
Excellent programmer! Very fast and responsive!
Отзыв от исполнителя
Great Customer!
I hope for further cooperation!
Техническое задание
Hello,
I would like to convert an MT4 indicator to MT5. Screenshot and code is below. The name of the indicator is "3 Level ZZ Semafor." I mainly use the 3rd level as you can see from the screenshot below. I need the indicator to perform the same way it plots the dots in MT5 as it does in MT4. The main level I use is the yellow #3 but I still want it to be able to plot levels 1 & 2 if I ever need it to. Basically just make it function in MT5 as it does in MT4.
//+------------------------------------------------------------------+ //| 3_Level_ZZ_Semafor.mq4 | //+------------------------------------------------------------------+ #property copyright "asystem2000" #property link "asystem2000@yandex.ru" // В основу расчета зигзага взят алгоритм klot@mail.ru // За что ему огромное спасибо #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Chocolate #property indicator_color2 Chocolate #property indicator_color3 MediumVioletRed #property indicator_color4 MediumVioletRed #property indicator_color5 Yellow #property indicator_color6 Yellow //---- input parameters extern double Period1=5; extern double Period2=13; extern double Period3=34; extern string Dev_Step_1="1,3"; extern string Dev_Step_2="8,5"; extern string Dev_Step_3="21,12"; extern int Symbol_1_Kod=140; extern int Symbol_2_Kod=141; extern int Symbol_3_Kod=142; //---- buffers double FP_BuferUp[]; double FP_BuferDn[]; double NP_BuferUp[]; double NP_BuferDn[]; double HP_BuferUp[]; double HP_BuferDn[]; int F_Period; int N_Period; int H_Period; int Dev1; int Stp1; int Dev2; int Stp2; int Dev3; int Stp3; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { // --------- Корректируем периоды для построения ЗигЗагов if (Period1>0) F_Period=MathCeil(Period1*Period()); else F_Period=0; if (Period2>0) N_Period=MathCeil(Period2*Period()); else N_Period=0; if (Period3>0) H_Period=MathCeil(Period3*Period()); else H_Period=0; //---- Обрабатываем 1 буфер if (Period1>0) { SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexArrow(0,Symbol_1_Kod); SetIndexBuffer(0,FP_BuferUp); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexArrow(1,Symbol_1_Kod); SetIndexBuffer(1,FP_BuferDn); SetIndexEmptyValue(1,0.0); } //---- Обрабатываем 2 буфер if (Period2>0) { SetIndexStyle(2,DRAW_ARROW,0,2); SetIndexArrow(2,Symbol_2_Kod); SetIndexBuffer(2,NP_BuferUp); SetIndexEmptyValue(2,0.0); SetIndexStyle(3,DRAW_ARROW,0,2); SetIndexArrow(3,Symbol_2_Kod); SetIndexBuffer(3,NP_BuferDn); SetIndexEmptyValue(3,0.0); } //---- Обрабатываем 3 буфер if (Period3>0) { SetIndexStyle(4,DRAW_ARROW,0,4); SetIndexArrow(4,Symbol_3_Kod); SetIndexBuffer(4,HP_BuferUp); SetIndexEmptyValue(4,0.0); SetIndexStyle(5,DRAW_ARROW,0,4); SetIndexArrow(5,Symbol_3_Kod); SetIndexBuffer(5,HP_BuferDn); SetIndexEmptyValue(5,0.0); } // Обрабатываем значения девиаций и шагов int CDev=0; int CSt=0; int Mass[]; int C=0; if (IntFromStr(Dev_Step_1,C, Mass)==1) { Stp1=Mass[1]; Dev1=Mass[0]; } if (IntFromStr(Dev_Step_2,C, Mass)==1) { Stp2=Mass[1]; Dev2=Mass[0]; } if (IntFromStr(Dev_Step_3,C, Mass)==1) { Stp3=Mass[1]; Dev3=Mass[0]; } return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { if (Period1>0) CountZZ(FP_BuferUp,FP_BuferDn,Period1,Dev1,Stp1); if (Period2>0) CountZZ(NP_BuferUp,NP_BuferDn,Period2,Dev2,Stp2); if (Period3>0) CountZZ(HP_BuferUp,HP_BuferDn,Period3,Dev3,Stp3); return(0); } //+------------------------------------------------------------------+ // дополнительные функции //int Take //+------------------------------------------------------------------+ //| Функц формирования ЗигЗага | //+------------------------------------------------------------------+ int CountZZ( double& ExtMapBuffer[], double& ExtMapBuffer2[], int ExtDepth, int ExtDeviation, int ExtBackstep ) { int shift, back,lasthighpos,lastlowpos; double val,res; double curlow,curhigh,lasthigh,lastlow; for(shift=Bars-ExtDepth; shift>=0; shift--) { val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer[shift+back]; if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; } } } ExtMapBuffer[shift]=val; //--- high val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=ExtMapBuffer2[shift+back]; if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; } } } ExtMapBuffer2[shift]=val; } // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlow=ExtMapBuffer[shift]; curhigh=ExtMapBuffer2[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0; else ExtMapBuffer2[shift]=0; } //--- if(lasthigh<curhigh || lasthigh<0) { lasthigh=curhigh; lasthighpos=shift; } lastlow=-1; } //---- if(curlow!=0) { if(lastlow>0) { if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0; else ExtMapBuffer[shift]=0; } //--- if((curlow<lastlow)||(lastlow<0)) { lastlow=curlow; lastlowpos=shift; } lasthigh=-1; } } for(shift=Bars-1; shift>=0; shift--) { if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0; else { res=ExtMapBuffer2[shift]; if(res!=0.0) ExtMapBuffer2[shift]=res; } } } int Str2Massive(string VStr, int& M_Count, int& VMass[]) { int val=StrToInteger( VStr); if (val>0) { M_Count++; int mc=ArrayResize(VMass,M_Count); if (mc==0)return(-1); VMass[M_Count-1]=val; return(1); } else return(0); } int IntFromStr(string ValStr,int& M_Count, int& VMass[]) { if (StringLen(ValStr)==0) return(-1); string SS=ValStr; int NP=0; string CS; M_Count=0; ArrayResize(VMass,M_Count); while (StringLen(SS)>0) { NP=StringFind(SS,","); if (NP>0) { CS=StringSubstr(SS,0,NP); SS=StringSubstr(SS,NP+1,StringLen(SS)); } else { if (StringLen(SS)>0) { CS=SS; SS=""; } } if (Str2Massive(CS,M_Count,VMass)==0) { return(-2); } } return(1); }
Откликнулись
1
Оценка
Проекты
629
72%
Арбитраж
14
43%
/
7%
Просрочено
28
4%
Свободен
Опубликовал: 9 примеров
2
Оценка
Проекты
1462
63%
Арбитраж
21
57%
/
10%
Просрочено
43
3%
Свободен
3
Оценка
Проекты
485
40%
Арбитраж
82
11%
/
63%
Просрочено
77
16%
Свободен
Опубликовал: 1 пример
4
Оценка
Проекты
36
17%
Арбитраж
5
20%
/
40%
Просрочено
17
47%
Свободен
Опубликовал: 5 примеров
5
Оценка
Проекты
624
38%
Арбитраж
40
23%
/
65%
Просрочено
93
15%
Свободен
Опубликовал: 4 статьи, 19 примеров
6
Оценка
Проекты
108
68%
Арбитраж
3
33%
/
33%
Просрочено
40
37%
Свободен
7
Оценка
Проекты
182
55%
Арбитраж
31
45%
/
16%
Просрочено
103
57%
Свободен
8
Оценка
Проекты
210
40%
Арбитраж
90
20%
/
43%
Просрочено
85
40%
Свободен
Похожие заказы
Create a new mt5 EA
30+ USD
martingale base on each position close. eg: open a position with TP set at $100 and trail SL . if this position hit trail SL i lose $50 then the next position will open target at $150 profit. entry price base on from lower and up by XXX% then can open position i want to choose only buy or sell position. example this chart i only want buy position
Copy trades from Telegram and adjust to my strategy
50 - 100 USD
I have a specific channel need to copy and modify signal from that channel. It will buy and sell from signal and modify based on signal. I’ll add few more functions in the ea
Automatic Level Detection Group]
30 - 100 USD
[Automatic Level Detection Group] - Enable Auto Detection: Yes/No - Number of Levels Required: (Number) 3-5 - Lookback Bars: (Number) 100-200 - Minimum Touches for Strong Level: (Number) 2 - Use Zig Zag Algorithm: Yes/No - Use Level Clustering: Yes/No - Max Cluster Distance (points): (Number) [Display and Drawing Group] - Resistance Line Color: (Color) - Support Line Color: (Color) - Show Info Labels: Yes/No - Lines
Hello, I am searching a good programmed to convert EA from mql5 into pinescript and DX TRADE made automatisation. Source of code required. Budget is negotiable. Thanks for attention and have a nice day
Profitable EA for sell
200 - 1000 USD
I am having 2 very proven and profitable EA which will give you profit and at the end of week you are always in profit. 1 This bot is safe bot and it generates handsome amount of profit with very less drawdown and high accuracy of 75-85%. 2. This bot is very aggressive and will suggest to go with only when you are having big capital and wanted to take more risk. It can make your account multiple fold
Marketing executives needed
30 - 100 USD
Looking for a Marketing Partner for my EAs! I am a developer looking for an experienced partner to help promote and market my Expert Advisors (MT4/MT5). How it works: > * I handle the coding, updates, and technical support. You handle the marketing, outreach, and bringing in traders. Compensation: We work on a Revenue Share / Profit Split basis. If you have an audience of traders or know how to market forex tools
Money wizard
30 - 200 USD
I Malwande Linda require a trading bot that would for me because I don't usually get ft time to seat and analyze the chat. I want a robot that would analyze the market and take trades for me. I want a robot that will make money weekly because I'm a student so Fridays are not busy days for me I want a robot that I can trust. I also would appreciate some indicators on my live account so that even when I'm not using a
EA based on CSV
50+ USD
Hello Developers, I need some consultation to help narrow down an idea and develop an EA. I have a csv file that stores data like this: Date portfolio portfolio_value 18/11/2025 ['EURNZD', 'EURCAD', 'EURJPY', 'EURCHF', 'AUDNZD', 'AUDCAD', 'AUDJPY', 'AUDCHF', 'USDNZD', 'USDCAD', 'USDJPY', 'USDCHF', 'GBPNZD', 'GBPCAD', 'GBPJPY', 'GBPCHF'] 1.7970698812202368 19/11/2025 ['CHFAUD', 'CHFNZD', 'CHFGBP', 'CHFJPY', 'EURAUD'
* For Buy - Time = greater than _______ and Less than ______ Remove SL , Time = greater than _______ Replace SL At _______ and also Spread= Less than ( points) ________ ( Same condition for sell side also ) at opposite direction . * For Buy - Time = greater than ______ and price is Below _______ and spread is lower than ( points) _____ cut loss . ( Same condition for sell side also) At opposite direction
Trading can take us to the top but trading robots would take us to the sky with trades, money and more. Trading is about learning how to make money and become successful without pressure. I need an excellent trading robot with excellent skills and knowledge
Информация о проекте
Бюджет
25 - 125 USD
Сроки выполнения
от 3 до 10 дн.