[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 425

 

我必须将止损点改为前一个蜡烛图的止损。

这里是代码,如何把它放在这里。

谢谢你的提示。

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
附加的文件:
 

亲们,请指教:我通过一个网站买了一个EA(300美元),并按照卖家的说明安装了它,但当我在账户历史上测试它时,它要么显示零盈亏,要么表示有问题(尽管我再次严格按照说明安装了它)。顺便说一下,安装 后,专家顾问 在其免费的顾问中是灰色的,好像它是不活跃的。所有其他人都是彩色的:黄色的脸,戴着蓝色的帽子。我把专家顾问移到了一个模拟账户。一切都是应该的:微笑的脸,开着电脑。我向卖家投诉,他给我写道:"1)灰色是封闭代码,不是源代码 2)我的专家顾问不经常交易,所以只需等待信号"。你们能告诉我,我是否应该等待?这到底有没有可能,还是说这是一个愚蠢的骗局?

 
vpogarcev:

我向卖家投诉,他给我写信。"1)灰色是封闭的代码,不是源代码 2)专家顾问不经常交易,所以只要等待信号"。你们能告诉我,我是否应该等待?这到底有没有可能,还是说这是一个愚蠢的骗局?


1) 是的,该EA是灰色的,因为没有源代码。

谁知道它是否值得等待?通灵师们都在度假。

 
vpogarcev:

亲们,请指教:我通过一个网站买了一个EA(300美元),并按照卖家的说明安装了它,但当我在账户历史上测试它时,它要么显示零盈亏,要么表示有问题(尽管我再次严格按照说明安装了它)。顺便说一下,安装后,专家顾问在其免费的顾问中是灰色的,好像它是不活跃的。所有其他人都是彩色的:黄色的脸,戴着蓝色的帽子。我把专家顾问移到了一个模拟账户。一切都是应该的:微笑的脸,开着电脑。我向卖家投诉,他给我写道:"1)灰色是封闭代码,不是源代码 2)我的专家顾问不经常交易,所以只需等待信号"。你们能告诉我,我是否应该等待?这到底有没有可能,还是说这是一个愚蠢的骗局?


最好的情况是,你可能被卖给了一个 很快就会停止赚钱的EA。
 
FAQ:


对,在这种情况下,当你删除例如18号对象时,19号成为它的位置,19=>18,即你自动得到一个反向迭代。也用这个来下订单。

另外,由于对象和订单的列表在形式上是由=0开始的数组,最大的索引将比数组的大小少一个。

你的最后一个想法使我产生了以下考虑......假设我们有一个deinit()函数,其形式如下。

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

假设客户终端中只有3个对象,其中第1个和第2个符合deinit()函数中定义的删除条件。相应地,它们将被相应地索引为0和1。那么在第一次迭代时,变量k将取值为0,ObjectDelete(0)函数 将删除相应的对象。此外,由于对象列表在形式上是一个数组,在删除其中一个对象后,剩余的对象将被重新索引(类似于形成一个新的条形图并重新索引当前存在于客户终端的所有条形图):那么索引为1号的对象(按照惯例也必须被删除的对象)将获得索引0,而索引为2的对象将获得索引1。在第1次迭代中删除编号为0的对象后,控制权将被赋予字符串

for(int k=0; k<Quant_Objects; k++)

来执行表达式k++。k变量的值为1,由于Quant_Objects变量的值为3,for (k<Quant_Objects)运算符的条件为真,第二轮迭代将被执行。但是在这个迭代中,不会有对象被删除,因为索引为1(以前为2)的对象不符合删除的条件。但事实证明,由于对象的重新索引发生在第一个对象被删除之后,第二个对象(根据条件也应该被删除)"跳过 "了删除操作,因为在变量k等于1的时候,该对象的索引被重新索引,变成了0。这就是"另外注意,你不能在第一个for循环中删除对象,因为在这种情况下,每次删除后,对象的总数和它们的编号都会改变,所以有些对象的名称会被 跳过 "这句话的意思。

我的想法是否正确,还是有什么错误?

注意:deinit()函数指的是"另外注意,我们不能在第一个for循环中删除对象,因为在这种情况下,每次删除后,对象的总数和它们的编号都会改变,所以有些对象的名称会被跳过"。

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

P.S. 提前感谢您的回答。

 
7777877:

你的最后一个想法使我产生了以下考虑......假设我们有一个以下类型的deinit()函数。

我的推理是否正确,还是在某处出了差错?


你说对了。

一般来说,你最好在发生删除的循环中使用索引减少。

int deinit()                           // Спец. функция deinit()
  {
   for(int k=ObjectsTotal()-1; k>=0; k--)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
         ObjectDelete(Obj_Name);
     }
   return;                             // Выход из deinit()
  }
 
 

先生们,使用OrderSelect(),你可以很容易找到一个订单的开盘价。我们能否利用图表上的报价来了解此时是否有某一价格的订单或没有订单?翻阅图表中每个报价的所有订单(特别是如果有很多订单),以找出是否有这个价格的东西,这是非常烦人的。如果有的话,你能把代码扔给我吗?

 
rosomah:

先生们,使用OrderSelect(),你可以很容易找到一个订单的开盘价。我们能否利用图表上的报价来了解此时是否有某一价格的订单或没有订单?翻阅图表中每个报价的所有订单(特别是如果有很多订单),以找出是否有这个价格的东西,这是非常烦人的。如果有的话,你能把代码扔给我吗?

把裤子套在头上很不舒服©人们说。

不是你在走过场,而是算法在走过场。如果你很穷,你可以把所有这些东西做成一个单一的函数,按需给你提供你需要的结果。但在函数的主体 中,你仍然必须编写代码,逐一搜索位置。

 
Reshetov:

没有办法。只有通过OrderSelect() 一个一个地循环。

你能告诉我如何通过使用OrderSelect() 循环查看每个订单来计算所有订单(手数)的总成交量吗?