[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 410

 
Integer:


幻想的程度让我印象深刻。为什么在市场审查中,只有某些角色的数据(还没有打开),而不是所有角色的数据?RefreshRates()函数是如何知道有些符号应该被更新,有些不应该被更新?

顺子,别再胡说八道了。


德米特里,我们不要互相争吵了。最好是互相帮助,因为你和瓦迪姆最近有太多的分歧。我无聊地想了几天,没有访问这个主题,然后像往常一样,我去看了所有的东西。说实话,这本书读起来很有趣,真的很有趣!有这样的短兵相接,有这样的讨论和大会,我只是想知道:)偶尔会有一些深奥的短语和词汇,但实际上完全是废话。我不会评判任何人,虽然我离高级思维还很远,自己还在学习学习(在一些地方游泳),然后理解并清楚地看到,辩论已经达到了完全荒谬的程度。

这似乎是一个专业人员的聚会,否则我就不说了。我不能对你说别的,因为我可以看到每个人都明白自己在做什么。但有趣的是,当职业选手不想承认自己的错误时,就会容易出现失误。但我们要从错误中学习!没 有什么可羞愧的。因此,如果有人犯了错误,你不需要偏离主题,而是要忏悔。对于几十页的程序员的垃圾变成了个性,这在某种程度上不是一种选择。至少这个分支或论坛的目的不是为了从头到脚地互相拉屎,而是为了在编程中变得更好,分享我们对这个问题的想法。因此,让我们一起生活。争吵够了。

 
hoz:

嗯,这就对了。你逐行 "阅读 "函数,了解它是如何工作的,如果你太无聊了,无法自己写,一切都会水到渠成......

你有一个函数参数。

是最后一天的开仓时间,也就是说,所有在当日开仓前平仓的头寸都会被计算出来,并进行加总!这有意义吗?所以要设定另一个标准,这是必须的,或者说是什么。但你必须自己去看。


对不起,仍然不能工作。

我想让这个函数返回今天的总利润,而不是今天的。

而无论我如何努力......它都不起作用。 结果只是整个故事。

如果你从整个历史中减去今天的BEFORE,你会得到今天的总数。

double tm1=GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_D1, 0));  
double tm2=GetProfitFromDateInCurrency (Symbol(), -1, -1, TimeCurrent());  

Print(  m2-m1 );

printts nil .....

 
对一个傻瓜来说,向一个聪明人证明自己是傻瓜总是比反过来容易,因为聪明人本来就容易怀疑。
 
lottamer:


在理论上,如果你从整个故事中减去今天之前发生的事情,你就会得到今天发生的事情。

打印 "零",看在上帝的份上.....


我们的想法是要理解这个函数的作用。而要理解它,你必须把它逐行完整地分解开来。我已经告诉过你了。这都是初级的。而且,帮助也没有意义,因为你是否理解一个简单函数的代码,取决于你自己。

我在上面描述了它。

 
hoz:


瓦迪姆,我在一个终端上运行了你的脚本,在这个终端上,除了主力和与日元的交叉盘之外,我从未打开过任何工具。总之,这里有一张截图。

从评论来看,没有任何东西被抽走,因为市场数据阵列是空的。

1.你是如何运行的?你必须先在没有刷新的情况下运行它。即:IsRefreshRates = false。数据将不会被更新。

2.那么你必须在IsRefreshRates = true的情况下运行它。数据将被更新。

这里有一张截图1。屏幕截图2。

注意酒吧的时间。你也可以看到,MarketInfo()从市场概览中获取数据

这里是专家顾问。我稍微纠正了一下。我已经纠正了一下。

extern string Tool           = "AUDNZD"; // Имя инструмента.
extern bool   IsRefreshRates = true;     // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
  string sTool = Tool; // Имя инструмента.
  if (Tool == "") sTool = Symbol();
  while (!IsStopped())
   {
    if (IsRefreshRates) RefreshRates();
    string sComment = StringConcatenate("MarketInfo() (", sTool, ")\n",
                                        TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(MarketInfo(sTool, MODE_BID), Digits), "  ", DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits),
                                        "\n\nПредопределенные переменные (", Symbol(), ")\n",
                                        TimeToStr(Time[0], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n",
                                        DoubleToStr(Bid, Digits), "  ", DoubleToStr(Ask, Digits),
                                        "\n\nМассивы-таймсерии (", sTool, ")\n");
    for (int i = 0; i < 10; i++)
     {
      sComment = sComment + StringConcatenate(TimeToStr(iTime(sTool, 0, i), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "  ",
                                              DoubleToStr(iOpen(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iLow(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iHigh(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iClose(sTool, 0, i), Digits), "  ",
                                              DoubleToStr(iVolume(sTool, 0, i), 0), "\n");
     }
    Comment(sComment);
    Sleep(300);
   }
 } 
hoz:


迪米特里,我们不要争吵了。最好是互相帮助,因为你和瓦迪姆最近有太多的分歧。有一次,我在脑子里呆了几天,没有去支部,然后像往常一样,去搜罗一切。说实话,这本书读起来很有趣,真的很有趣!有这样的短兵相接,有这样的讨论和大会,我只是想知道:)偶尔会有一些深奥的短语和词汇,但实际上完全是废话。我不会评判任何人,虽然我离高级思维还很远,自己还在学习学习(在一些地方游泳),然后理解并清楚地看到,辩论已经达到了完全荒谬的程度。

我想我们已经聚集了专业人士。否则我不会说你什么,因为我看到每个人都明白他或她在做什么。但有趣的是,当职业选手不想承认自己的错误时,有时就容易出现失误。但我们要从错误中学习!没 有什么可羞愧的。因此,如果有人犯了错误,你不需要偏离主题,而是要忏悔。对于几十页的程序员的垃圾变成了个性,这在某种程度上不是一种选择。至少这个分支或论坛的目的不是为了从头到脚地互相拉屎,而是为了在编程中变得更好,分享我们对这个问题的想法。因此,让我们一起生活。争吵够了。

维克多,不要注意。有的人不知道如何形成一种思想,不知道如何建立一个有道理的演讲。对他们来说,最令人信服的理由是亵渎。

而且这样的人不容易接受任何新事物。Dmitri仍然不明白,如果不组织队列,你怎么能用流来工作。他甚至没有举出一个例子,说明这种排队是必要的。

现在他又开始争论了。而不是检查和论证他的立场。

 
Zhunko:

维克多,你没有注意到。有一些人不能形成一种思想,不知道如何建立一个有理由的演讲。对他们来说,最有力的论据是脏话。

而且这样的人不容易接受任何新事物。Dmitri仍然不明白,如果不组织队列,你怎么能用流来工作。他甚至没有举出一个例子,说明这种排队是必要的。

现在他又开始争论了。而不是检查和论证他的立场。


顺子,你反应过激了。这里写的一切都直接适用于你。你不明白关于流的问题,你不明白为什么数据会更新,等等,但你却假装是个专家,这都是废话。而你却装作很正义的样子。
 
Integer:


想象力的水平令人印象深刻。为什么数据只出现在某些符号上(没有打开),而不是在市场审查中的所有符号上?RefreshRates()函数是如何知道有些符号应该被更新,有些不应该被更新?

顺子,别再胡说八道了。

RefreshRates()只更新专家顾问工作的那些值。这就是它发现的方式。来自专家顾问。很久以前,Metakvot的某人写了关于它的文章。
 
hoz:


我们的想法是要理解这个函数的作用。为了理解它,你必须把它逐行拆开。我已经告诉过你了。这都是初级的。而且,帮助也没有意义,因为你是否理解一个简单函数的代码,取决于你自己。

我在上面描述了它。


我想明白了。

一般来说,该函数返回总利润,但只是你在 "历史 "选项卡中设置的时期,如果你在 "历史 "选项卡中改变时期,它就会立即改变。

我不需要它。

我需要它为一个给定的参数设置周期。

我正试图改变功能本身...

double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=iTime (NULL, PERIOD_D1, 0)   )
{
  double p=0;
  int    i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(p);
}

但编译器抱怨说

'iTime' - 预期的初始化

我应该添加什么?

 
Zhunko:
RefreshRates()只更新专家顾问正在处理的内容。这就是它发现的方式。来自专家顾问。很久以前,Metakvot的某人写过这样的文章。 。

不要给编程语言函数 一些神秘的功能和属性,它们并不具备这些功能。

 
在上一页的最后,我写了关于什么是更新数据。