Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 535

 
Leo59:
Veuillez expliquer comment décompresser les données d'un tableau (*.csv) dans un tableau statique tridimensionnel.
La première colonne du tableau contient l'indice de la première dimension du tableau,
. La deuxième colonne contient l'indice de la deuxième dimension du tableau,
. La troisième et les autres colonnes contiennent les valeurs elles-mêmes de la troisième dimension du tableau.
.

Oubliez ce que vous avez écrit ensuite. Déclarez un tableau de type approprié au niveau de la variable globale arr[][][3] et définissez vous-même la deuxième dimension.

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;                                                    // Выход из функции
   }

Eh bien, c'est comme ça. Et vous aurez probablement besoin de convertir les index de chaînes de caractères en nombres entiers.

 
AlexeyVik:

Oubliez ce que vous avez écrit ensuite. Déclarez un tableau de type approprié au niveau de la variable globale arr[][][3] et définissez vous-même la deuxième dimension.

Eh bien, c'est comme ça. Et vous aurez probablement besoin de convertir les index de chaînes de caractères en nombres entiers.


MERCI BEAUCOUP !!!! Lorsque le cerveau bouillonne, on devient "aveugle" et on ne voit pas les choses simples et évidentes. Le plus intéressant est que vous savez que la solution est simple, "comme trois kopecks", mais, hélas, c'est un flou devant vos yeux.
Merci encore ! !!!!
 
artmedia70:
Tu n'as pas besoin de donner des conseils stupides. Cette commande permet de supprimer complètement tous les objets du graphique.

Je ne suis pas d'accord avec vous !

Il y avait une question :

Comment supprimer tous les objets tels que OBJ_ARROW_RIGHT_PRICE ?

Solution :

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

En quoi la solution est-elle stupide ?

 
isn-88:

Je ne suis pas d'accord avec vous !

Il y avait une question :

Solution :

Et pourquoi cette décision est-elle stupide ?

Par le fait qu'il va supprimer TOUS les objets. Même ceux qui n'appartiennent PAS à l'EA/indicateur. Que se passe-t-il si une personne marque son propre code sur un tableau depuis longtemps ? Et ensuite il a exécuté ce code dans un indicateur tiers ? Comment, et que dirait-il alors de l'auteur de ce bon code ?
 
artmedia70:
Comment, et que dit-il alors de l'auteur de ce bon code ?


Les gens sont gentils. Ils diront ce qu'ils pensent.
 
Vinin:

Les gens sont gentils. Ils diront ce qu'ils pensent.
Ouais, Vitya... Les gens sont méchants de nos jours... C'est triste.
 
isn-88:

Je ne suis pas d'accord avec vous !

Il y avait une question :

Solution :

Et pourquoi la solution est-elle stupide ?

En fait, tout a commencé avec la commande : ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

puis une autre variante a essayé ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Cher Monsieur, lisez l'aide :)

Je ne comprends pas pourquoi mon index avec les commandes mentionnées fonctionne correctement dans Alpha-Forex, mais dans Saxo Bank les objets ne sont plus supprimés.

Puis j'ai commencé à expérimenter avec le script et celui-ci a cessé de supprimer les objets dans tous les terminaux.

 

Salud à tous !

Une telle bizarrerie du testeur est observée.

Après la clôture des ordres 152, 153, 158 et 159, le bénéfice n'est pas correct (comme si le testeur avait mal calculé). Les commandes sont "suspendues" depuis plusieurs mois, comme le montre le tableau. En outre, le drawdown est correctement affiché dans le tableau mais n'est pas visible sur le graphique pour une raison quelconque.

Qu'est-ce que cela peut être ?


EURUSD (Euro contre Dollar US)

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

















1000.00



Écartement

Actuel (12)

1418.73

Bénéfice total

2045.28

Perte totale

-626.55

3.26

Gain attendu

2.41



419.34

Abaissement maximal

834.91 (58.98%)

Abattement relatif

58.98% (834.91)


















test

Temps

Type

Commandez

Volume

Prix

S / L

T / P

Profit

Balance

372

2012.04.30 11:00

acheter

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

acheter

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

acheter

153

0.01

1.31711

0.00000

1.32237


379

2012.05.02 08:45

modifier

152

0.01

1.32262

0.00000

1.32237


380

2012.05.02 15:15

vendre

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

vendre

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

vendre

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

vendre

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

acheter

158

0.02

1.30997

0.00000

1.31742


389

2012.05.04 16:15

modifier

152

0.01

1.32262

0.00000

1.31742


390

2012.05.04 16:15

modifier

153

0.01

1.31711

0.00000

1.31742


391

2012.05.06 23:15

acheter

159

0.04

1.29845

0.00000

1.30918


392

2012.05.06 23:15

modifier

152

0.01

1.32262

0.00000

1.30918


393

2012.05.06 23:15

modifier

153

0.01

1.31711

0.00000

1.30918


394

2012.05.06 23:15

modifier

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:

En fait, tout a commencé avec la commande : ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

puis j'ai essayé une autre variante : ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Cher Monsieur, lisez l'aide :)

Je ne comprends pas pourquoi mon index avec les commandes mentionnées fonctionne correctement dans Alpha-Forex, mais dans Saxo Bank les objets ne sont plus supprimés.

Puis j'ai commencé à expérimenter avec le script et celui-ci a cessé de supprimer les objets dans tous les terminaux.

Le premier regarde dans la fenêtre principale du graphique, le second dans toutes les fenêtres. Conclusion - 1) Utiliser l'index de la fenêtre pour réduire le nombre d'objets que la fonction parcourt pour trouver ceux qui doivent être supprimés. 2) Si vous supprimez par nom (une partie du nom, parce qu'un programme mql nomme généralement les objets avec un préfixe personnel), alors utilisez la boucle de recherche à partir du dernier objet (plus ancien par le temps de création).

Bien qu'il y ait effectivement un problème avec la suppression des objets, s'il y en a beaucoup et qu'il passe de 0 à ObjectTotal()-1, alors certains des objets ne sont pas supprimés. Question aux développeurs, peut-être qu'il n'y a pas assez de mémoire tampon allouée.

Exemple :

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)   и т.д. 
 
Pouvez-vous me dire si Win 8 est compatible avec MT 4 et MT 5 ? Je pose la question parce que j'ai un Mac et je me demande quel système d'exploitation choisir pour acheter un PC. Une personne m'a même montré une capture d'écran de MT 4 fonctionnant sur 8. Mais comme certains camarades prétendent qu'il n'y a pas de compatibilité totale, je me dois de clarifier... Merci.