Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 535

 
Leo59:
Per favore, spiega come decomprimere i dati da una tabella (*.csv) in un array statico tridimensionale.
La prima colonna della tabella contiene l'indice per la prima dimensione dell'array,
La seconda colonna contiene l'indice per la seconda dimensione dell'array,
La terza e l'ulteriore colonna contengono i valori stessi per la terza dimensione dell'array.

Dimentica quello che hai scritto dopo. Dichiarare un array di tipo appropriato a livello di variabile globale arr[][][3] e definire la seconda dimensione da soli.

void AAA()
   {
    int       Handle;                                          // Файловый описатель
    string    File_Name = "AAA.csv";                           // Имя открываемого файла

    string    str_1 = "";                                      //  1 Номер индекса по первому измерению
    string    str_2 = "";                                      //  2 Номер индекса по второму измерению
    string    str_3 = "";                                      //  3 Значение
    string    str_4 = "";                                      //  4 Значение
    string    str_5 = "";                                      //  5 Значение

    Handle=FileOpen(File_Name, FILE_READ, ";");                // Открытие файла
    
    while(FileIsEnding(Handle)==false)                         // До тех пор, пока файловый...
        {                                                      // ...указатель не в конце файла
         // Чтение данных из строки до файлового разделителя
         str_1 = FileReadString(Handle);                       //  1 Номер индекса по первому измерению
         str_2 = FileReadString(Handle);                       //  2 Номер индекса по второму измерению
         str_3 = FileReadString(Handle);                       //  3 Значение
         str_4 = FileReadString(Handle);                       //  4 Значение
         str_5 = FileReadString(Handle);                       //  5 Значение
         
// А здесь заполнение массива
arr[str_1][str_2][0] = str_3;
arr[str_1][str_2][1] = str_3;
arr[str_1][str_2][2] = str_4;

         if(FileIsEnding(Handle)==true)                        // Файловый указатель в конце файла
              break;                                           // Выход из цикла чтения

         ????????????????????????????????????????????????????
        }
    FileClose(Handle);                                         // Закрываем файл
    return;                                                    // Выход из функции
   }

Beh, è così. E probabilmente avrete bisogno di convertire gli indici delle stringhe in interi.

 
AlexeyVik:

Dimentica quello che hai scritto dopo. Dichiarare un array di tipo appropriato a livello di variabile globale arr[][][3] e definire la seconda dimensione da soli.

Beh, è così. E probabilmente avrete bisogno di convertire gli indici delle stringhe in interi.


GRAZIE MILLE!!!! Quando il cervello bolle, si diventa "ciechi" e non si vedono le cose semplici e ovvie. La cosa più interessante è che sai che la soluzione è semplice, "come tre copechi", ma, ahimè, è una macchia davanti ai tuoi occhi.
Grazie ancora !!!!!
 
artmedia70:
Non c'è bisogno di dare consigli stupidi. Questo comando rimuoverà tutti gli oggetti dal grafico.

Non sono d'accordo con te!

C'era una domanda:

Come cancellare tutti gli oggetti come OBJ_ARROW_RIGHT_PRICE?

Soluzione:

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE); //удалить все объекты типа "Правая ценовая метка" в главном окне графика

In che modo la soluzione è stupida?

 
isn-88:

Non sono d'accordo con te!

C'era una domanda:

Soluzione:

E perché la decisione è stupida?

Per il fatto che rimuoverà TUTTI gli oggetti. Anche quelli che NON appartengono all'EA/indicatore. Cosa succede se una persona ha marcato il proprio codice su un grafico per molto tempo? E poi ha eseguito questo codice in un indicatore di terze parti? Come, e cosa direbbe poi dell'autore di questo buon codice?
 
artmedia70:
Come, e cosa dice poi dell'autore di questo buon codice?


Le persone sono gentili. Diranno tutto quello che pensano.
 
Vinin:

Le persone sono gentili. Diranno quello che pensano.
Sì, Vitya... la gente è cattiva di questi tempi... È triste.
 
isn-88:

Non sono d'accordo con te!

C'era una domanda:

Soluzione:

E perché la soluzione è stupida?

In realtà tutto è iniziato con il comando: ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

e poi un'altra variante ha provato ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Caro signore, leggi l'aiuto :)

Non capisco perché il mio indice con i comandi menzionati funziona correttamente in Alpha-Forex, ma in Saxo Bank gli oggetti non vengono più cancellati.

Poi ho iniziato a sperimentare con lo script e lo script ha smesso di cancellare oggetti in tutti i terminali.

 

Salud a tutti!

Si osserva una tale stranezza del tester.

Dopo aver chiuso gli ordini 152, 153, 158 e 159 il profitto non è corretto (come se il tester avesse calcolato male). Gli ordini sono stati "appesi" per diversi mesi come mostrato nella tabella. Inoltre, il drawdown è mostrato correttamente nella tabella ma non è visibile sul grafico per qualche motivo.

Cosa può essere?


EURUSD (Euro contro Dollaro USA)

15 minuti (M15) 2012.01.01 23:00 - 2014.03.07 22:59 (2012.01.01 - 2014.03.08)

















1000.00



Spread

Corrente (12)

1418.73

Profitto totale

2045.28

Perdita totale

-626.55

3.26

Payoff previsto

2.41



419.34

Massimo prelievo

834.91 (58.98%)

Prelievo relativo

58.98% (834.91)


















prova

Tempo

Tipo

Ordina

Volume

Prezzo

S / L

T / P

Profitto

Equilibrio

372

2012.04.30 11:00

comprare

151

0.01

1.32193

0.00000

1.32472


373

2012.05.01 04:45

t/p

151

0.01

1.3247234

0.00000

1.32472

2.75

1402.41

374

2012.05.01 15:00

comprare

152

0.01

1.32262

0.00000

1.32713


375

2012.05.02 07:45

t/p

142

0.01

1.31949

0.00000

1.31949

-4.40

1398.00

376

2012.05.02 07:45

t/p

143

0.01

1.31949

0.00000

1.31949

0.95

1398.96

377

2012.05.02 07:45

t/p

149

0.02

1.31949

0.00000

1.31949

12.49

1411.44

378

2012.05.02 08:45

comprare

153

0.01

1.31711

0.00000

1.32237


379

2012.05.02 08:45

modificare

152

0.01

1.32262

0.00000

1.32237


380

2012.05.02 15:15

vendere

154

0.01

1.31483

0.00000

1.31352


381

2012.05.03 07:00

t/p

154

0.01

1.3135174

0.00000

1.31352

1.18

1412.63

382

2012.05.03 08:45

vendere

155

0.01

1.31454

0.00000

1.31425


383

2012.05.03 09:00

t/p

155

0.01

1.3142483

0.00000

1.31425

0.29

1412.92

384

2012.05.03 13:45

vendere

156

0.01

1.31671

0.00000

1.31256


385

2012.05.04 10:45

t/p

156

0.01

1.3125581

0.00000

1.31256

4.11

1417.02

386

2012.05.04 14:15

vendere

157

0.01

1.31527

0.00000

1.31293


387

2012.05.04 14:45

t/p

157

0.01

1.3129331

0.00000

1.31293

2.34

1419.36

388

2012.05.04 16:15

comprare

158

0.02

1.30997

0.00000

1.31742


389

2012.05.04 16:15

modificare

152

0.01

1.32262

0.00000

1.31742


390

2012.05.04 16:15

modificare

153

0.01

1.31711

0.00000

1.31742


391

2012.05.06 23:15

comprare

159

0.04

1.29845

0.00000

1.30918


392

2012.05.06 23:15

modificare

152

0.01

1.32262

0.00000

1.30918


393

2012.05.06 23:15

modificare

153

0.01

1.31711

0.00000

1.30918


394

2012.05.06 23:15

modificare

158

0.02

1.30997

0.00000

1.30918


395

2012.09.14 10:45

t/p

152

0.01

1.30918

0.00000

1.30918

-18.67

1400.70

396

2012.09.14 10:45

t/p

153

0.01

1.30918

0.00000

1.30918

-13.12

1387.58

397

2012.09.14 10:45

t/p

158

0.02

1.30918

0.00000

1.30918

-11.65

1375.93

398

2012.09.14 10:45

t/p

159

0.04

1.30918

0.00000

1.30918

22.77

1398.70

 
VoDyaMon:

In realtà tutto è iniziato con il comando: ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

e poi ho provato un'altra variante: ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Caro signore, leggi l'aiuto :)

Non capisco perché il mio indice con i comandi menzionati funziona correttamente in Alpha-Forex, ma in Saxo Bank gli oggetti non vengono più cancellati.

Poi ho iniziato a sperimentare con lo script e lo script ha smesso di cancellare gli oggetti in tutti i terminali.

Il primo guarda nella finestra principale del grafico, il secondo in tutto. Conclusione - 1) Usare l'indice delle finestre per ridurre il numero di oggetti che la funzione attraversa per trovare quelli da cancellare. 2) Se cancelli per nome (parte del nome, perché un programma mql di solito nomina gli oggetti con qualche prefisso personale), allora usa il ciclo di ricerca dall'ultimo (più vecchio per tempo di creazione) oggetto.

Anche se c'è effettivamente un problema con la cancellazione degli oggetti, se ce ne sono molti e si passa da 0 a ObjectTotal()-1, allora alcuni degli oggetti non vengono cancellati. Domanda agli sviluppatori, forse non c'è abbastanza memoria buffer allocata.

Esempio:

void DeleteObjects(int chartID, string prefix_obj_name) {
   string obj_nm="";
   int obj=ObjectsTotal();
 //  for(int k=0; k<obj; k++){  // неправильный вариант
   for(int k=obj-1; k>=0; k--){
      obj_nm = ObjectName(k);
      if(StringFind(obj_nm,prefix_obj_name)>=0) 
      { 
         ResetLastError();
         if(!ObjectDelete(chartID,obj_nm))
         {
            Print(__FUNCTION__,
            ": не удалось удалить объект ",obj_nm," Код ошибки = ",GetLastError());
         }
      }
   }
}
// prefix_obj_name = "Obj_MQLname_";   Имена объектов создаваемых программой "Obj_MQLname_Close_"+DoubleToStr(Close[0],Digits), "Obj_MQLname_Open_"+DoubleToStr(Open[0],Digits)   и т.д. 
 
Potete dirmi se Win 8 è compatibile con MT 4 e MT 5? Lo chiedo perché ho un mac e mi sto chiedendo con quale sistema operativo comprare un PC. Un tizio mi ha persino mostrato uno screenshot di MT 4 che gira su 8. Ma poiché alcuni compagni sostengono che non c'è piena compatibilità, devo chiarire... Grazie.