Ein mehrdimensionales Array erscheint bei der Verarbeitung mit ArrayFill() als eindimensional, z.B. array[2][4] wird als array[8] verarbeitet, so dass es bei der Arbeit mit diesem Array akzeptabel ist, den Index des ersten Elements mit 5 anzugeben. Der Aufruf ArrayFill(array, 5, 2, 3.14) für array[2][4] füllt also array[1][1] und array[1][2] mit dem Wert 3.14.
Und Sie sind ein Witzbold. Und das Problem ist wirklich, und es gibt Themen darüber, dass der Befehl Print zweimal in der Registerkarte Experts gedruckt wird und Allert auch zweimal kommt, nur gibt es leider keine Antwort, wie man das beheben kann. Und für die Zukunft, wenn Sie nicht wissen, können Sie einfach schweigen und vorbei, aber zu gewinnen Bewertung selbst unprofessionelle Antworten ist dumm. Ja, übrigens, Ihre Antworten sind wirklich sehr schwach.
Du bist ein Witzbold. Aber das Problem ist real, und es gibt Themen darüber, dass der Befehl Print zweimal in der Registerkarte Experts gedruckt wird und Allert auch zweimal kommt, nur gibt es leider keine Antwort, wie man das beheben kann. Und für die Zukunft, wenn Sie nicht wissen, können Sie einfach schweigen und vorbei, aber zu gewinnen Bewertung selbst unprofessionelle Antworten ist dumm. Ja, übrigens, Ihre Antworten sind wirklich sehr schwach.
Sie haben meinen Link nicht verstanden...
Print druckt nicht mehr als einmal, falls doch, liegt ein Fehler im Code vor...deshalb habe ich dich zu den Telepathen geschickt, da du den Code nicht gepostet hast)
Liebe Forumsnutzer, ich brauche Hilfe. Ich habe ein Skript in MQL4 geschrieben, das eine Linie durch eine Formel auf der Grundlage von drei gegebenen Punkten in einem Diagramm zeichnet. Er benötigt 130 Zeilen, einschließlich Einzüge und Leerzeichen. Ich habe vor kurzem beschlossen, es auf MQL5 zu portieren, und habe festgestellt, dass meine geringen Programmierkenntnisse mir nicht helfen werden, ich muss wieder lernen.
Ich wäre dankbar, wenn jemand bereit ist, das Skript auf MQL5 zu portieren. Ich würde mich freuen, wenn jemand dieses Skript auf MQL5 portieren möchte.
#property copyright"ExpoMe"#property link"http://www.metaquotes.net"#property indicator_chart_window#property indicator_buffers1#property indicator_color1 Blue
#property indicator_width12#property indicator_style10double 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);
}}
Lesen Sie die Regeln. Der EA sollte ohne Einschränkungen sowohl für Instrumente als auch für TFs funktionieren.
Ich danke Ihnen! Es gab noch eine Menge anderer Fehler in diesem Prozess)
ArrayInitialize(array,EMPTY_VALUE);
So double msArr[10][4][500];
Oder es kann nur in einer Schleife in MKL4 gemacht werden.
ArrayInitialize(array,EMPTY_VALUE);
So double msArr[10][4][500];
Oder es kann nur in einer Schleife in MKL4 gemacht werden.
Es gibt auch ArrayFill und ZeroMemory
Ein mehrdimensionales Array erscheint bei der Verarbeitung mit ArrayFill() als eindimensional, z.B. array[2][4] wird als array[8] verarbeitet, so dass es bei der Arbeit mit diesem Array akzeptabel ist, den Index des ersten Elements mit 5 anzugeben. Der Aufruf ArrayFill(array, 5, 2, 3.14) für array[2][4] füllt also array[1][1] und array[1][2] mit dem Wert 3.14.
es gibt auch ArrayFill und ZeroMemory
Hier geht's lang!
Und Sie sind ein Witzbold. Und das Problem ist wirklich, und es gibt Themen darüber, dass der Befehl Print zweimal in der Registerkarte Experts gedruckt wird und Allert auch zweimal kommt, nur gibt es leider keine Antwort, wie man das beheben kann. Und für die Zukunft, wenn Sie nicht wissen, können Sie einfach schweigen und vorbei, aber zu gewinnen Bewertung selbst unprofessionelle Antworten ist dumm. Ja, übrigens, Ihre Antworten sind wirklich sehr schwach.
Du bist ein Witzbold. Aber das Problem ist real, und es gibt Themen darüber, dass der Befehl Print zweimal in der Registerkarte Experts gedruckt wird und Allert auch zweimal kommt, nur gibt es leider keine Antwort, wie man das beheben kann. Und für die Zukunft, wenn Sie nicht wissen, können Sie einfach schweigen und vorbei, aber zu gewinnen Bewertung selbst unprofessionelle Antworten ist dumm. Ja, übrigens, Ihre Antworten sind wirklich sehr schwach.
Sie haben meinen Link nicht verstanden...
Print druckt nicht mehr als einmal, falls doch, liegt ein Fehler im Code vor...deshalb habe ich dich zu den Telepathen geschickt, da du den Code nicht gepostet hast)
Gute Nacht!
Liebe Forumsnutzer, ich brauche Hilfe. Ich habe ein Skript in MQL4 geschrieben, das eine Linie durch eine Formel auf der Grundlage von drei gegebenen Punkten in einem Diagramm zeichnet. Er benötigt 130 Zeilen, einschließlich Einzüge und Leerzeichen. Ich habe vor kurzem beschlossen, es auf MQL5 zu portieren, und habe festgestellt, dass meine geringen Programmierkenntnisse mir nicht helfen werden, ich muss wieder lernen.
Ich wäre dankbar, wenn jemand bereit ist, das Skript auf MQL5 zu portieren. Ich würde mich freuen, wenn jemand dieses Skript auf MQL5 portieren möchte.
Ich würde mich freuen, wenn es jemand kostenlos machen würde (c), das kommt vor.
Geben Sie den Code hier ein, vielleicht macht jemand einen Pro-Bono(c), so etwas gibt es