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

 
alsu:

不,从我周期前的一个变量来看。撰写

同于

   int cnt,i;
for (cnt = 0, i = index + g_center - 1; i >= 0 && cnt < g_center; i--) 

现在我明白了。谢谢你。我在寻找......没有参考点。现在是0


嗯,比如说,索引 被传递为1。让我们看一下这段代码。

 int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return (false);                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   

到达时将是:cnt = 0,i = index + g_center - 1 = 1(索引值) +2(g_center) - 1 = 2

但根据循环的条件,它将继续下去,直到i 等于0。这将如何发生?

该条件说,如果i 的值从2(如果索引=1),到i>=0,并且cnt 的值从0,到cnt<g_center,那么嵌套条件就得到满足。

事实证明,如果这里的变量是1,我们将在循环中只有1次 迭代,对吗?

 
alsu:

解释 "限制在0bar "的概念
换句话说,我需要画一条穿过2个分形的线(不是射线),但它必须在0条上结束。
 
beginner:
换句话说,我需要画一条穿过2个分形的线(不是射线),但它应该在0栏结束


该算法如下。

1.让分形坐标为(i1; p1)和(i2; p2),其中i1<i2(即第一个分形比第二个分形更接近0条)。

2.通过这些分形的直线的方程式 p = (p1-p2)/(i1-i2) * i + (p2*i1 - p1*i2)/(i1-i2)

3.因此,我们需要画一条端点坐标如下的线段:(0;(p2*i1-p1*i2)/(i1-i2))和(i2;p2)。

4.对象 创建(...)

5.???

6.利润!!!。

 
Vinin:

它应该在新的一天的第一个刻度上工作。

谢谢你的答复!的确,在我在指标开始时插入之前,它从未工作过。

if(Hour() == 0 && Minute() == 0 && Seconds() == 0) { DeleteObject() 等。

}

if(Hour() >= 0 && Minute() >= 0 && Seconds() >= 1) { 指标代码 ...

最近这个也不灵了!我不知道该怎么做。你能提供什么建议?谢谢你!

现在才设法写出来,我周六要为生活工作。

 
hoz:


是的,鲍里斯,顺便说一句,这非常好!。非常感谢你。这就是我想要的。我扭曲了它......我扭曲了它......。我没有搞清楚。我还没有太多的经验,我的大脑也没有像专业人士那样思考。这有点像一个死胡同,不是吗?:(

我不想马上问,但我不得不问。因为我自己也做不到这一点。

我很高兴它对你有用处!我自己和你一样,两年前就开始了,但从小我就习惯于自己来做每一件事,因为从技巧上的知识不能形成一个系统。而我只有在绝对必要的时候才会问,当我已经做了所有的事情,到处寻找却没有得到。这里的许多新人都想快速焊接和泵送面团。经验会教会他们。我以前告诉过你,与其做一些复杂的、你不理解的事情,不如做一些简单的、你清楚的事情,在你弄清楚之前最好避免这种情况。代码可以用不同的方式来完成,但逻辑必须对你来说清楚如二。这就是为什么我避免使用我还不了解的东西。代码是你的工具,你应该了解并完美地掌握它,这样你就可以轻松地及时调整它。我祝愿你成功!
 
hoz:

现在我明白了。谢谢你。我在寻找......没有参考点。现在是0


嗯,比如说,索引 被传递为1。让我们看一下这段代码。

到达时将是:cnt = 0,i = index + g_center - 1 = 1(索引值) +2(g_center) - 1 = 2

但根据循环的条件,它将继续下去,直到i 等于0。这将如何发生?

该条件说,如果i 的值从2(如果索引=1),到i>=0,并且cnt 的值从0,到cnt<g_center,那么嵌套条件就得到满足。

事实证明,如果这里的变量是1,那么我们在循环中就只有1次 迭代,对吗?


当写在for()操作符 第二位的条件不再被满足时,即在本例中,当i变得小于0,或cnt变得大于或等于g_center时,循环结束。两个变量的初始值都是在循环之前分配的,并在循环执行过程中发生变化:变量i是i--(for语句的第三部分,每次循环到达结束括号}时都会执行),变量cnt是cnt++的结果。
 

你好。

试图将我的交易从我的模拟账户导出为HTML。(Alpari,最新版本)。我按下保存为报告,一个文件夹选择窗口打开,我按下保存,什么也没发生。模拟账户也是这样吗?还有一件事,我的MT4安装在我的桌面上。这有什么关系吗?

 
borilunad:
谁知道,是否可以通过制作Hour()、Minute()和Seconds()全局变量,来控制DailyPivotPoints指标在午夜(0.00)的变化,以达到新的PP水平和EA的其他线路? 我曾经直接在指标中使用Hour()、Minute()和Seconds(),而且不用每天晚上编译就可以工作。但最近它停止了自我改变,也许是因为改变了图片?谢谢!


:)为什么不把这一点作为一个新的酒吧 功能来实现?你需要它每天重新计算一次,即从0点开始计算。所以我们做得很简单。当然是在开始的时候。

if (lastBarTime == время с ТФ Д1)
    return(0);
// что-то тут ещё
// что-то тут ещё
// что-то тут ещё
if (lastBarTime != время с ТФ Д1)
{
    пересчитывает уровни пивотов...
    lastBarTime = время с ТФ Д1;
}
我认为这是最正确的方法,尽管它是原始的!"。
 
alsu:

当写在for()操作符第二位的条件不再被满足时,即在本例中,当i变得小于0或cnt变得大于或等于g_center时,循环结束。


但这不是两者之一,而是AND, && 符号也在那里。

我理解这一切。但这里的重点是这个。

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

一般情况下,代码中的变量指数 有值Bar - IndicatorCounted()

也就是说,在当前条上是1,在新条上是2。

它进入IsUpFractal()函数的值是1,或者是1,如果条形图还不是新的,对吗?

所以,i 变量将有一个固定的值,因为输入参数的索引 也是固定的。因此,循环在第一次迭代后总是会中断。那么这个循环的意义何在?

 

你能不能告诉我为什么不显示...

double IN[111];
double PERI=33;
double KRIT;
int z;      
ArraySetAsSeries(IN,true);

   for(z=0; z<=PERI; z++)  {
IN[z]=     iClose(Symbol1.Name,0,iBarShift(Symbol1.Name,0,Time[z],false)); }

   for(z=0; z<=PERI; z++)  {
KRIT=IN[z]-iMAOnArray(IN,0,PERI,0,MODE_SMA,iBarShift(IN,0,Time[z],false)); }

Print(KRIT);
return;