任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 535

 
Leo59:
请解释一下如何将表(*.csv)中的数据解压成三维静态数组。表格的第一列包含数组第一维的索引, 第二列包含数组第二维的索引, 第三列和更多列包含数组第三维的数值本身。



忘记你接下来写了什么。在全局变量 级别声明一个适当类型的数组arr[][][3],并自己定义第二维。

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

嗯,是这样的。而且你可能需要将字符串索引转换为整数。

 
AlexeyVik:

忘记你接下来写了什么。在全局变量级别声明一个适当类型的数组arr[][][3],并自己定义第二维。

嗯,是这样的。而且你可能需要将字符串索引转换为整数。


非常感谢您!!!!当一个人的大脑沸腾时,他就会变得 "盲目",看不到简单而明显的东西。最有趣的是,你知道解决方案很简单,"就像三个戈比",但是,可惜的是,它在你眼前是模糊的。
再次感谢!!!!!
 
artmedia70:
你不需要给出愚蠢的建议。这个命令将从图表中完全删除所有对象。

我不同意你的观点!

有一个问题。

如何删除所有 像 OBJ_ARROW_RIGHT_PRICE 这样的对象?

解决方案。

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

这个解决方案怎么会是愚蠢的呢?

 
isn-88:

我不同意你的观点!

有一个问题。

解决方案。

而为什么这个决定是愚蠢的呢?

通过这一事实,它将删除所有对象。甚至那些不属于EA/指标的人。如果一个人长期以来一直在图表上标注自己的代码怎么办?然后他在一个第三方指标中运行这个代码?如何,然后他又会对这个好代码的作者说些什么?
 
artmedia70:
如何,他又是如何评价这个好法典的作者的?


人们是善良的。他们会说任何他们认为的东西。
 
Vinin:

人们是善良的。他们会说他们的想法。
是的,Vitya...现在的人都很刻薄...这很可悲。
 
isn-88:

我不同意你的观点!

有一个问题。

解决方案。

而为什么这个解决方案是愚蠢的呢?

实际上这一切都始于命令:ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE)

然后另一个变体尝试ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)

亲爱的先生,请阅读帮助 :)

我不明白为什么我的索引在Alpha-Forex中能正常工作,但在盛宝银行的对象却不能被删除。

然后我开始尝试使用该脚本,该脚本不再删除所有终端中的对象。

 

向所有的人致敬!

观察到测试器的这种怪异现象。

在关闭订单152、153、158和159后,利润不正确(就像测试员计算不正确一样)。如表所示,这些订单已经 "挂 "了好几个月了。此外,缩减量在表格中显示正确,但在图表中却因某种原因而不可见。

这可能是什么?


欧元兑美元(欧元对美元)

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

















1000.00



传播

当前 (12)

1418.73

利润总额

2045.28

全部损失

-626.55

3.26

预期报酬率

2.41



419.34

最大缩水

834.91 (58.98%)

相对缩减

58.98% (834.91)


















测试

时间

类型

秩序

卷宗

价格

S / L

T / P

盈利

平衡

372

2012.04.30 11:00

购买

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

购买

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

购买

153

0.01

1.31711

0.00000

1.32237


379

2012.05.02 08:45

修改

152

0.01

1.32262

0.00000

1.32237


380

2012.05.02 15:15

出售

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

出售

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

出售

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

出售

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

购买

158

0.02

1.30997

0.00000

1.31742


389

2012.05.04 16:15

修改

152

0.01

1.32262

0.00000

1.31742


390

2012.05.04 16:15

修改

153

0.01

1.31711

0.00000

1.31742


391

2012.05.06 23:15

购买

159

0.04

1.29845

0.00000

1.30918


392

2012.05.06 23:15

修改

152

0.01

1.32262

0.00000

1.30918


393

2012.05.06 23:15

修改

153

0.01

1.31711

0.00000

1.30918


394

2012.05.06 23:15

修改

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:

实际上这一切都始于命令:ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE)

然后我尝试了另一种变体:ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)

亲爱的先生,请阅读帮助 :)

我不明白为什么我的索引在Alpha-Forex中能正常工作,但在盛宝银行的对象却不能被删除。

然后我开始尝试使用该脚本,该脚本不再删除所有终端中的对象。

第一个是在主图表窗口看,第二个是在所有的窗口看。结论 - 1) 使用窗口索引来减少函数为寻找要删除的对象而经历的对象数量。2) 如果你通过名字(名字的一部分,因为一个mql程序通常用一些个人的前缀来命名对象)来删除,那么使用搜索循环从最后一个(按创建时间较长)对象开始。

虽然确实存在删除对象的问题,但如果有很多对象,而且从0到ObjectTotal()-1,那么有些对象就不会被删除。向开发人员提问,也许没有分配足够的缓冲区内存。

例子。

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)   и т.д. 
 
你能告诉我Win8是否与MT4和MT5兼容?我问这个问题是因为我有一台mac,想知道买一台PC用哪种操作系统。一个人甚至给我看了一张MT4在8上运行的截图。但由于有些同志声称没有完全兼容,我必须澄清......谢谢。