初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1228

 
Vladimir Karputov:

那么这已经是正确的了。

如果它未能关闭,请查看日志文件。 可能 有一百万个理由:重新定向,交易禁令,没有价格,接近停止水平......。

谢谢你。然后是这样的):


void CloseSellPositions()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
	{
          if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            {
             if(m_position.PositionType()==POSITION_TYPE_SELL)
                m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
            }
	}


  }

只是加了括号。这样,新手就不会感到困惑了。

 

你好。我经常在程序中使用这样的字符串,将日志写到不同的文件中。

StringConcatenate(M,"Начинаем проверять время работы модулей. i=",i); Log.write(M,__FILE__,__LINE__);

你能告诉我如何缩短这一行吗?事实上,这里只改变了输出字符串本身和我输出的变量的名称。

我试图使用定义

#define  LOG(LogPerem,StrMes) StringConcatenate(M,StrMes,""); LogPerem.write(M,__FILE__,__LINE__);

但如果我这样称呼它,它就不能再工作了。

LOG(Log,"i=",i);
 
pivomoe:

你好。我经常在程序中使用这样的字符串,将日志写到不同的文件中。

你能告诉我如何缩短这一行吗?事实上,这里只改变了输出字符串本身和我输出的变量的名称。

我试图使用定义

但这样叫就不灵了。

你对预处理程序有了解吗?

你的

LOG("i=",i);
展现在
StringConcatenate(M,i,""); "i=".write(M,__FILE__,__LINE__);;

而这就是被送入编译器的内容。

这一点都不好笑。处方一:阅读独木舟,最好不要是本地的,本地的已经意味着对术语的一些理解。

试试这个,可能有帮助: https://metanit.com/cpp/c/3.1.php

С | Препроцессор
  • metanit.com
Препроцессор является обязательным компонентом компилятора языка Си. Препроцессор обрабатывает исходный текст программы до ее непосредственной компиляции. Результатом работы препроцессора является полный текст программы, который передается на компиляцию в исполняемый файл. Для управления препроцессором применяются директивы, каждая из которых...
 
Vladimir Simakov:

这一点都不好笑。口诀只有一个:抽码头,最好不要抽本地的,因为本地的已经意味着对术语的一些理解。

试试这个,如果有帮助的话:https://metanit.com/cpp/c/3.1.php

你说的突然是什么意思?它对你有帮助吗?你能用定义缩短我的线路吗?


我修改了问题中的一行代码

LOG("i=",i);

到 。

LOG(Log,"i=",i);
 
pivomoe:

你好。我经常在程序中使用这样的字符串,将日志写到不同的文件中。

你能告诉我如何缩短这一行吗?事实上,这里只改变了输出字符串本身和我输出的变量的名称。

我试图使用定义

但如果我这样称呼它,它就不再工作了。

我通过使用这样的函数表解决了我的问题。

template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7,typename T8,typename T9,typename T10>
void Write(T1 var1,T2 var2,T3 var3,T4 var4,T5 var5,T6 var6,T7 var7,T8 var8,T9 var9,T10 var10,string ffile,int line)
  {
   string Str;
   StringConcatenate(Str,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10);
   write(Str,ffile,line);
  }; 

现在我在我的程序中调用以下内容

   Log.Write("Test1",__FILE__,__LINE__);  
 
pivomoe:

你说的突然是什么意思?它对你有用吗?你能用define来缩短我的线路吗?


我修改了问题中的一行代码

我可以。 LOG("Text"); 我给出了一个如何实现的例子--在论坛的某个地方搜索一下。
 

下午好,问题是:我有一个调用自定义指标 显示数据的EA,在策略测试器中一切正常,但在真实交易模式下,当我启动EA时,指标没有显示。在日志中写道自定义指标加载成功, 它似乎在沙沙作响,发送文本信息,但在图表的指标列表中它也没有。同时,如果我把它拖到图表上,它就会接收到数据,一切都会正常显示。该指标位于指标文件夹中,在iCustom(NULL,0, "指标名称",Count)函数中。我还试着添加#resource "\\Indicators\\indicator name.ex5", iCustom(NULL,0,"::Indicators\\indicator name.ex5",Count)但没有区别。原因是什么?

 

是否有一个设置可以删除指标缓冲区的 当前值?


 
与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。
 

尊敬的专业人士,请您告诉我们是否有可能在顾问的代码中获得一周时间框架的RSI值,但要计算一周的值,这不是从星期一开始,而是从星期三开始(即从星期三到下星期三的一周)。据我所知,它不能用iRSI做?

到目前为止,我只能看到一个自己编写计算代码的方法。是否有更简单的解决方案或现成的解决方案?

原因: