Auftrag beendet
Ausführungszeit 4 Tage
Bewertung des Kunden
Отличная работа
Spezifikation
Добрый день! Нужно сконвертировать скрипт, написанный на MQL4, в MQL5. Скрипт выполняет следующий функционал:
- Пользовать самостоятельно ставит на графике 3 вертикальные линии, которые соответственно проходят каждая через свою свечу. На основании координат хаев этих свечей рассчитывается формула кривой (парабола), которая бы проходила через все три вершины.
- На графике строится кривая, по рассчитанной формуле. Исходит из крайнего левого хая (крайняя левая вертикальная линия), проходит последовательно через два остальных хая и строится дальше вправо.
- После удаления вертикальных линий, кривая остается на графике, привязанная к свечам, на базе которых была построена.
Длина кода на MQL4 - 150 строк, включая пробелы.
#property copyright "ExpoMe" #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Blue #property indicator_width1 2 #property indicator_style1 0 double Buffer1[]; //+------------------------------------------------------------------+ //| Объявляем внешние переменные | //+------------------------------------------------------------------+ datetime point_1; datetime point_2; datetime point_3; datetime LastBarTime; string line_name[10]; int gg=1; int x1; int x2; int x3; int xx1; // В эту переменную сохраняется значение номера бара вершины перед прогоном при появлении нового бара. int xx2; // Если линии стоят, значит при поялвении нового бара номер бара вершины должен увеличиться на 1. int xx3; // Если этого не произошло и xx1=x1 после прогона, значит увеличиваем вручную. int max; int maxx; double y1; double y2; double y3; double y11; double y22; double y33; double x11; double x22; double x33; double y; double a1; double a2; double a3; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() {SetIndexBuffer(0,Buffer1); SetIndexStyle(0,DRAW_LINE); //---- indicators //---- return(0); } int start() { // Пересчитываем инликатор только при появлении нового бара if(LastBarTime == iTime(Symbol(), 0, 0)) return(0); LastBarTime = iTime(Symbol(), 0, 0); // Присваиваем значения переменных времени int obj_total=ObjectsTotal(); for(int ii=0;ii<100;ii++) {string name = ObjectName(ii); if(ObjectType(name)!=OBJ_VLINE) continue; line_name[gg] = ObjectName(ii); gg=gg+1; } point_1=ObjectGet(line_name[1], OBJPROP_TIME1); point_2=ObjectGet(line_name[2], OBJPROP_TIME1); point_3=ObjectGet(line_name[3], OBJPROP_TIME1); // Запоминаем текущий номер бара вершины xx1=x1; //Определяем номера баров ключевых точек for (int j=0;j<Bars; j++) { if (Time[j]==point_1) x1=j;} // Если после прогона сдвиг по вершине не произошел, значит линий нет, добавляем +1 вручную. if (x1==xx1) x1=x1+1; xx2=x2; for (int k=0;k<Bars; k++) {if (Time[k]==point_2) x2=k; } if (x2==xx2) x2=x2+1; xx3=x3; for (int l=0;l<Bars; l++) {if (Time[l]==point_3) x3=l; } if (x3==xx3) x3=x3+1; // Comment ("n1=", j," n2=", k, " n3=", l); //Находим "высоту" вершин { y1=High[x1]; y2=High[x2]; y3=High[x3]; //Comment ("y1=", y1," x1=", x1, " y2=", y2, "x2=", x2," y3=", y3, " x3=", x3); //Принимаем первую из них за начало координат a1=(y3-(x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1))/(x3*(x3-x1-x2)+x1*x2); a2=((y2-y1)/(x2-x1))-a1*(x1+x2); a3=((x2*y1-x1*y2)/(x2-x1))+a1*x1*x2; max=MathMax(x1,x2); maxx=MathMax(max,x3); for (int i=maxx; i>=0; i--) { y=a1*i*i+a2*i+a3; Buffer1[i]=y;} return(0); }}
Bewerbungen
1
Bewertung
Projekte
588
36%
Schlichtung
31
45%
/
3%
Frist nicht eingehalten
16
3%
Frei
2
Bewertung
Projekte
777
46%
Schlichtung
23
39%
/
13%
Frist nicht eingehalten
63
8%
Arbeitet
3
Bewertung
Projekte
105
30%
Schlichtung
8
25%
/
50%
Frist nicht eingehalten
40
38%
Frei
4
Bewertung
Projekte
112
56%
Schlichtung
2
50%
/
0%
Frist nicht eingehalten
3
3%
Frei
5
Bewertung
Projekte
573
36%
Schlichtung
64
20%
/
58%
Frist nicht eingehalten
147
26%
Frei
6
Bewertung
Projekte
168
34%
Schlichtung
4
25%
/
25%
Frist nicht eingehalten
3
2%
Arbeitet
7
Bewertung
Projekte
41
12%
Schlichtung
4
50%
/
25%
Frist nicht eingehalten
1
2%
Arbeitet
8
Bewertung
Projekte
422
35%
Schlichtung
2
100%
/
0%
Frist nicht eingehalten
0
Arbeitet
Projektdetails
Budget
30+ USD
Für die Entwickler
27
USD
Ausführungsfristen
bis 3 Tag(e)