新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 432

 
WinProject:

谢谢你!),变量Cena=FileReadString(handle);我插入函数Separator=StringReplace(Sepa,",",".");它写入错误 "从数字到字符串的隐式转换" -

不想把带有分隔符","(1,22426)的值读成字符串,而且StringReplace也不起作用。还是我做错了?


请复制你所拥有的这部分代码,从读取文件开始,指定CENA变量的类型

 
Vladislav Andruschenko:

请复制你手中的这部分代码,从读取文件开始,指定CENA变量的类型


空白的MyFunc()

{

handle=FileOpen('Data.csv',FILE_CSV|FILE_READ,';')。

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",".")。

如果(FileIsEnding(handle)==true)

突破。

}

FileClose(handle)。

}

 
WinProject:

空白的MyFunc()

{

handle=FileOpen('Data.csv',FILE_CSV|FILE_READ,';')。

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",".")。

如果(FileIsEnding(handle)==true)

突破。

}

FileClose(handle)。

}

请阅读这个函数返回的内容。你是想把结果串起来。但这个函数只是将一个字符替换为一个字符串。你可以继续使用塞纳,并进行修改
 
Vladislav Andruschenko:
请阅读这个函数返回的内容。你是想把结果串起来。但这个函数只是用一个字符替换了一个字符。你可以继续使用塞纳已经的变化
我发现了我的错误,(字符串Separ=在这里是多余的),并且成功了。

谢谢你,谢谢你!)

 

帮助,我需要从上一个蜡烛的高点到它上面的200p点画一个矩形,并提前一个柱子计时。

我写了代码,但我不明白为什么矩形的左点不移动?而右边的则滑到了海哥的后面。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   //ObjectDelete(0,"Name");
   ArraySetAsSeries(high,true);
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,TimeCurrent(),high[0],TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:

帮助,我需要从上一个蜡烛的高点到它上面的200p点画一个矩形,并提前一个柱子计时。

我写了代码,但我不明白为什么矩形的左点不移动?而右边的则滑到了海哥的后面。


也许你正试图创建一个已经在图表上的对象?


而前一栏是1而不是0。

high[0] - это ХАЙ текущего бара
 
Vladislav Andruschenko:

也许你正试图创建一个已经在图表上的对象? 检查一下图表上是否已经有对象可能会更好。


是的,而且前一栏是1而不是0。


这是正确的,已经固定了指数。

改了名字,看了名单,什么都没变,一切都一样,一个点挂在一个地方,另一个点跟着海。

 
Roman Sharanov 这是正确的,已经固定了指数。

改了名字,看了名单,没有什么变化,还是一样,一个点挂在一个地方,另一个点跟着海。

   ObjectDelete(0,"Name");
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,
                TimeCurrent()-_Period*60,high[1],
                TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
   return(rates_total);

它正在移动。


 
STARIJ:
这非常简单。你需要设置7个参数来计算iMA。第一个参数,即符号的名称,是很明显的。作为第二个,时间框架,设置为M1。第三个参数--周期--根据需要设置多少次,多少天是超过一分钟的。第四个参数 - shift = 0。接下来的两个参数--平均数的方法和价格类型--你知道。最后一个是栏位号,如果你知道你需要的时间,请计算栏位号。就这样吧!通过对M5和M15的时间框架进行计算,对其进行反复检查。也许甚至是为了M30。

STARIJ, 谢谢你的帮助,经检查,不幸的是,与原版的匹配度很差,随着TF的增加(如从30分钟到每周),匹配度明显下降了。这种方法聊胜于无,但没有多少准确性。还有其他的变体吗?

 
Boss11:

STARIJ, 谢谢你的帮助,经检查,不幸的是,与原版的匹配度很差,随着TF的增加(如从30分钟到每周),匹配度明显下降了。这种方法聊胜于无,但没有多少准确性。还有其他的变体吗?

是的,我们应该使用M1,和M5,...- 来检查。也许我们应该使用内插法? MT5有一个tick历史。如果你让我知道利润在哪里,我会再看一下。