Valeriy Yastremskiy gli array multidimensionali possono essere inizializzati con la funzione
ArrayInitialize(array,EMPTY_VALUE); Come questo double msArr[10][4][500]; Oppure può essere fatto solo in loop in MKL4.
Ci sono anche ArrayFill e ZeroMemory
L'array multidimensionale quando viene elaborato con ArrayFill() appare come monodimensionale, per esempio, array[2][4] viene elaborato come array[8], quindi quando si lavora con questo array è accettabile specificare l'indice dell'elemento iniziale uguale a 5. Quindi, chiamare ArrayFill(array, 5, 2, 3.14) per array[2][4] riempirà array[1][1] e array[1][2] con il valore 3.14.
E tu sei un burlone. E il problema in realtà è, e ci sono argomenti su che il comando Print stampa due volte nella scheda Experts e anche Allert viene due volte, solo che non c'è una risposta ahimè come risolvere il problema. E per il futuro, se non si sa, si può solo mantenere il silenzio e passare, ma per guadagnare rating se stessi risposte non professionali è stupido. Sì, a proposito, le sue risposte sono davvero molto deboli.
Sei un burlone. Ma il problema è reale, e ci sono argomenti sul fatto che il comando Print stampa due volte nella scheda Experts e anche Allert viene due volte, solo che non c'è una risposta ahimè come risolvere il problema. E per il futuro, se non si sa, si può solo mantenere il silenzio e passare, ma per guadagnare rating se stessi risposte non professionali è stupido. Sì, a proposito, le sue risposte sono davvero molto deboli.
Non hai capito il mio link...
Print non stampa più di una volta, se lo fa, c'è un errore nel codice...ecco perché ti ho mandato dai telepati, visto che non hai postato il codice)
Cari utenti del forum, ho bisogno di aiuto. Ho scritto uno script in MQL4 che disegna una linea con una formula da tre punti dati su un grafico. Ci vogliono 130 linee, compresi i rientri e gli spazi. Ho recentemente deciso di portarlo a MQL5 e mi sono reso conto che la mia scarsa conoscenza della programmazione non mi aiuterà, ho bisogno di studiare di nuovo.
Sarò grato se qualcuno è pronto a portare lo script a MQL5. Sarei felice se qualcuno volesse portare questo script su MQL5.
#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);
}}
Leggi le regole. L'EA dovrebbe funzionare senza restrizioni sia sugli strumenti che sui TF.
Grazie! Ci sono stati molti altri errori nel processo)
ArrayInitialize(array,EMPTY_VALUE);
Come questo double msArr[10][4][500];
Oppure può essere fatto solo in loop in MKL4.
ArrayInitialize(array,EMPTY_VALUE);
Come questo double msArr[10][4][500];
Oppure può essere fatto solo in loop in MKL4.
Ci sono anche ArrayFill e ZeroMemory
L'array multidimensionale quando viene elaborato con ArrayFill() appare come monodimensionale, per esempio, array[2][4] viene elaborato come array[8], quindi quando si lavora con questo array è accettabile specificare l'indice dell'elemento iniziale uguale a 5. Quindi, chiamare ArrayFill(array, 5, 2, 3.14) per array[2][4] riempirà array[1][1] e array[1][2] con il valore 3.14.
c'è anche ArrayFill e ZeroMemory
Da questa parte!
E tu sei un burlone. E il problema in realtà è, e ci sono argomenti su che il comando Print stampa due volte nella scheda Experts e anche Allert viene due volte, solo che non c'è una risposta ahimè come risolvere il problema. E per il futuro, se non si sa, si può solo mantenere il silenzio e passare, ma per guadagnare rating se stessi risposte non professionali è stupido. Sì, a proposito, le sue risposte sono davvero molto deboli.
Sei un burlone. Ma il problema è reale, e ci sono argomenti sul fatto che il comando Print stampa due volte nella scheda Experts e anche Allert viene due volte, solo che non c'è una risposta ahimè come risolvere il problema. E per il futuro, se non si sa, si può solo mantenere il silenzio e passare, ma per guadagnare rating se stessi risposte non professionali è stupido. Sì, a proposito, le sue risposte sono davvero molto deboli.
Non hai capito il mio link...
Print non stampa più di una volta, se lo fa, c'è un errore nel codice...ecco perché ti ho mandato dai telepati, visto che non hai postato il codice)
Buona notte!
Cari utenti del forum, ho bisogno di aiuto. Ho scritto uno script in MQL4 che disegna una linea con una formula da tre punti dati su un grafico. Ci vogliono 130 linee, compresi i rientri e gli spazi. Ho recentemente deciso di portarlo a MQL5 e mi sono reso conto che la mia scarsa conoscenza della programmazione non mi aiuterà, ho bisogno di studiare di nuovo.
Sarò grato se qualcuno è pronto a portare lo script a MQL5. Sarei felice se qualcuno volesse portare questo script su MQL5.
Sarei felice se qualcuno lo facesse gratis (con).
Butta il codice qui, forse qualcuno lo farà gratis (c), succede