[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 59

 
xrust писал(а)>>
你可以,把详细报告的名称改为正常报告,你就会很高兴。

如果不难的话,你能告诉我,这个名字到底在哪里可以更改?用户帮助中根本没有提到这一点。

 
呃......你让我很困惑.... 你从来没有重命名过一个文件?
 
亲爱的专家,请不要忽视我的问题。

是否有一个统计波动率的指标,比如说每天。但不是那个,它给出了一个未定义的数字,如0.34。但它应该计算出每天的烛台数,并将其除以一个给定的周期(天数),这样指标就能知道平均值。例如:开盘100,收盘200;第二天--开盘200,收盘250。这2天的平均波动率=((200-100)+(250-200))/2天=(100+50)/2=75
如果有的话在哪里下载。
 
xrust писал(а)>>
呃......你把我难住了....>> 你从来没有重命名过一个文件吗?

终端应该每20分钟自动生成一份报告,并将其发送到ftp服务器。该函数默认保存一份常规报告。终端的这一功能默认保存的是普通报告,而我希望得到一份带有附加信息和图表的分项报告。你可以手动保存详细的报告,没有任何问题,并选择你想要的历史时期。

首先你把我难住了--我应该手动 重命名什么和什么地方,以组织自动 功能?这一点都不清楚。

 

重复一个来自https://forum.mql4.com/ru/10422 的帖子,也许我自己的问题在这里更合适。


下面是example.ini 中的一些代码。

[common]
numCross=3

[cross1]
name=EURUSD

[cross2]
name=GBPUSD

[cross3]
name=USDJPY


读取数据对的数量,然后将数据对的名称逐一保存在字符串数组中。

#include <IniFiles.mqh>

extern string config_path = "C:\Program Files\MetaTrader - MetaQuotes\experts\example.ini";

string CrossName[];
int numCross=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
string sectionName = "common";

numCross = ReadIniInteger(config_path, sectionName, "numCross", 0);
ArrayResize(CrossName, numCross);

for (int i=0; i<numCross; i++)
{
sectionName = StringConcatenate("cross", i+1);
CrossName[i] = ReadIniString(config_path, sectionName, "name", "-");
Print("init.1: CrossName[", (i+1), "]=", CrossName[i]);
}
Print("init.1: read complete");

for (i=0; i<numCross; i++)
{
Print("init.2: CrossName[", (i+1), "]=", CrossName[i]);
}


Print("-------------------------------");
for (i=0; i<numCross; i++)
{
sectionName = StringConcatenate("cross", i+1);
CrossName[i] = StringSubstr(ReadIniString(config_path, sectionName, "name", "-"), 0, 0);
Print("init.3: CrossName[", (i+1), "]=", CrossName[i]);
}
Print("init.3: read complete");

for (i=0; i<numCross; i++)
{
Print("init.4: CrossName[", (i+1), "]=", CrossName[i]);
}

return(0);
}


这似乎很简单,在阅读了ini之后,我们应该得到一个配对名称的数组。

但结果是,在从ini中读取另一个参数并为数组的 另一个元素 赋值后。

所有其他先前分配的元素得到相同的值。

2009.04.09 02:17:06 example GBPUSD,H4: init.4: CrossName[3]=USDJPY
2009.04.09 02:17:06 example GBPUSD,H4: init.4: CrossName[2]=GBPUSD
2009.04.09 02:17:06 example GBPUSD,H4: init.4: CrossName[1]=EURUSD
2009.04.09 02:17:06 example GBPUSD,H4: init.3: read complete
2009.04.09 02:17:06 example GBPUSD,H4: init.3: CrossName[3]=USDJPY
2009.04.09 02:17:06 example GBPUSD,H4: init.3: CrossName[2]=GBPUSD
2009.04.09 02:17:06 example GBPUSD,H4: init.3: CrossName[1]=EURUSD
2009.04.09 02:17:06 example GBPUSD,H4: -------------------------------
2009.04.09 02:17:06 example GBPUSD,H4: init.2: CrossName[3]=USDJPY
2009.04.09 02:17:06 example GBPUSD,H4: init.2: CrossName[2]=USDJPY
2009.04.09 02:17:06 example GBPUSD,H4: init.2: CrossName[1]=USDJPY

2009.04.09 02:17:06 example GBPUSD,H4: init.1: read complete
2009.04.09 02:17:06 example GBPUSD,H4: init.1: CrossName[3]=USDJPY
2009.04.09 02:17:06 example GBPUSD,H4: init.1: CrossName[2]=GBPUSD
2009.04.09 02:17:06 example GBPUSD,H4: init.1: CrossName[1]=EURUSD

事实证明,当把一个字符串数组赋值给一个变量时,实际上是把

参考,而不是价值。我找遍了所有可用的文档和论坛,但没有找到任何答案,为什么会这样?

我通过使用StringSubstr 找到了出路,但有些东西告诉我这是不太正确的。


向知道的人提问:如何正确地将其他变量 的值分配给字符串阵列的元素

 
Yug >> :

重复一个来自https://forum.mql4.com/ru/10422 的帖子,也许我自己的问题在这里更合适。


我想起来了!字符串实施的特殊性。在数组被调整大小后,它应该被传递并被清零。

ArrayResize( CrossName, numCross);

for (int i=0; i< numCross; i++)
{
   CrossName[ i] = "";
}
我可能是错的,但它应该有帮助。
 
XinoXano писал(а)>>

终端应该每20分钟自动生成一份报告,并将其发送到ftp服务器。该函数默认保存一份常规报告。终端的这一功能默认保存的是普通报告,而我希望得到一份带有附加信息和图表的分项报告。你可以手动保存详细的报告,没有任何问题,并选择你想要的历史时期。

首先你把我难住了--为了组织自动 功能,我应该手动 重命名什么和哪里?这一点都不清楚。

报告模板statement.htm 和详细报告StatementDetailed.htm 位于terminal/templates/ 文件夹中。默认情况下,终端会发送普通的Statement.htm 报告,你需要StatementDetailed.htm,我建议你在俄罗斯将windows 环境下的StatementDetailed.htm 文件重命名为statement.htm。或者也可以写出关于重命名的说明?

 

亲爱的专家们。

请帮助我解决LOKING交易问题

更多细节和代码在这里。帮助我处理 "职位空缺 "的问题。

总是恭敬地。

 
xrust писал(а)>>

报告模板statement.htm 和详细报告StatementDetailed.htm 位于terminal/templates/ 文件夹中。默认情况下,终端发送的是常规报告statement.htm,但你需要详细的statementDetailed.htm,我在俄语中建议你将windows 中的StatementDetailed.htm 文件重命名为statement.htm。或者也写出重命名的说明?

没有重命名我自己就可以了,但要把一个模板替换成另一个,我没有想到......。

非常感谢您!现在一切都很清楚,一切都在运作!!!!

 
Everlost >> :

很简单--当信号Cls_S或Cls_B到来时,我们就会忘记最后打开的位置(将Last_Position变量的值重置为-1)。

if ((Cls_S==true || Cls_B==true) && Last_Position>=0) Last_Position=-1;

我在理论上看到了它,但现在专家顾问完全停止了交易(

我是这样想的。

//Учет ордеров истории
int ORDtime=0;
double ORDprofit=0.01;
int ORDtype=-1;
for (int j=OrdersHistoryTotal()-1; j>=0; j--) 
{
  if (OrderSelect( j, SELECT_BY_POS, MODE_HISTORY)) 
  {
    if (OrderSymbol()==Symbol()) 
    {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) 
      {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}
...
//Торговые критерии на открытие и экстренное закрытие ордеров
if (( ORDtype==-1)&&(...))
   {
    Opn_B=true;
   }
if (( ORDtype==-1)&&(...))    
   {
    Cls_B=true;
   }
if (...)
   {
    Opn_S=true;
   }
if (...)    
   {
   Cls_S=true;
   }
// Дополнительные условия к открытию
if (( Cls_B==true|| Cls_S==true)&&( ORDtype>=0)) ORDtype=-1;       //ДОПИСАТЬ УСЛОВИЕ ИСТОРИЧЕСКИХ ОРДЕРОВ


是否有某种错误?
原因: