任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 224

 
Integer:


你能告诉我为什么人们不写 "it "而写 "ito "吗?

1.难道你不知道 "它 "是用 "e "拼的,而不是用 "e "拼的?

2.你是不是懒得把手移到字母 "e "上,按 "e "更容易?

3.键盘上没有 "e "键吗?如果没有,为什么没有?

4.它是某种特殊的庞然大物吗?

5.其他一些未知的原因。它是什么?


我不是俄罗斯人,键盘上也没有俄罗斯字母。我使用拼音键盘(这是我使用的那种软件)。我按下 "p",但它说 "p"。字母 "e "也在那里。我必须按"( )"。

有语法错误,因为语法早已被遗忘。我只能在论坛上用俄语写作,而且是在多年后。

我对这些错误表示歉意。不要踢我太多。

 
artmedia70:

这一行可以删除,因为iFractals()返回的是没有分形的零,而不是 "空值"(EMPTY_VALUE)。

我的问题如下:你是否想做一个能寻找两个连续分形的指标?还是你在你的EA中搜索最接近当前条形的两个连续分形?这个问题并不是空穴来风,因为指标和专家顾问的搜索方法是不同的--指标是从结束到开始计算的--从过去到现在,而专家顾问则是从现在到过去看条形图。相应地,在专家顾问和指标中,搜索方向也是不同的。

还有最后一个问题:输出应该是什么?



iFractals() 的返回结果不感兴趣(直到现在也没必要知道)。如果它真的是0--是的,对不起,我撒谎了,EMPTY_VALUE 不需要被检查。

我想出了这个表述,作为一个很好的理由--我们考虑的是EMPTY_VALUE的一般情况,而不是有0返回的局部情况。

但我很惭愧,也很自嘲,我不知道这么简单的事情。

我知道这段代码是针对一个指标的--artmedia70 是对的,对于专家顾问来说,方法是不同的

我没有时间 - 我将在晚上回家后做,因为我们 没有很好地理解对方(在找到两个分形的条件后,事件应该被处理),但一切 都很好。

//----
   БЛОК ПРОВЕРКИ НОВОГО БАРА;                //проверить наличие нового бара 

   int   a1=0,                               //преведущий фрактал (-1 ->нижний, 1 -> верхний)
         a2,                                 //нынешний фрактал  (-1 ->нижний, 1 -> верхний)
         a3,                                 //сума преведущий + нынешний
         kilkict,                            //была введена с мыслю уменьшить перерасчет после глобального расчета (идея просто еще не реализована)
         frac,                               //frac - флаг существования фракталов,
         frac1=0,                            //frac1- счетчик фракталов (+1 или 0 за цикл)сейчас просто выполняет роль фильтра, надо найти сперва 2 фрактала чтобы приступить к их сравнению.
         i;
     
   kilkict=Bars;                            

   for (i=3; i<kilkict;i++){                 // 3
      a2=0;
      frac=0;
      if(iFractals(NULL, 0, MODE_UPPER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals()данной проверки условий
            a2+=1;                           //к числу фракталов добавляем 1
            frac=1;                          //флаг - фрактал есть
            frac1++;                         //счетчик увеличиваем на 1
         }
      }
      if(iFractals(NULL, 0, MODE_LOWER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals() данной проверки условий
            if(a2==0){              
               frac1++;                      //счетчик увеличиваем на 1 
               frac=1;                       //флаг - фрактал есть
            }
            a2+=-1;                          //к числу фракталов добавляем -1(т. е. уменшаем)
         }
      } 
      if (frac==0){continue;}                // если флага нет (фрактал не найден)
      if (frac1==1){                         //если счетчик равен 1,
         a1=a2; 
         continue;
      }          
      a3=a1+a2;
      if(a3<0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вниз  подряд найдено// 
      if(a3>0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вверх подряд найдено //
      if(a3==0 && a1==0) { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; }// Два фрактала подряд вверх и два фрактала подряд вниз найдено //
   } 

 
gince:


...

我为这些错误表示歉意。不要对我太苛刻。


只是想知道,这是个有趣的现象。
 
Integer:

只是想知道,这是个有趣的现象。

谢谢你的更正。
 
if(!SL==0)
   {
  dollarsPerPip = lot/SL;
   }

谁会这样做?

if(SL>0) dollarsPerPip = lot/SL;

为什么要为大量的{ }而烦恼呢?而放慢进程......

或者是...

if(SL) dollarsPerPip = lot/SL;
 
gince:


指标中的搜索方法和专家顾问中的搜索方法是不同的--指标从结束到开始计算--从过去到现在,而专家顾问则从现在到过去查看条形图

for (i=kilkict;i>0;i--)

结果 - 两个高点 -> 卖出(箭头向下),两个低点 -> 买入(箭头向上)。信号将在分形的右边出现+2条。这就是我希望在开始时在历史上看到的视觉效果。可能我们还需要一个过滤器。

那么问题来了:如果你只是想看看历史,为什么要让自己疲于写这个指标?你得到了一个指向Articulus指标的链接。它所做的正是你想要的。

//+------------------------------------------------------------------+
//|                                                    iFractals.mq4 |
//|                             Copyright © 2010, EGEN Software LTD. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "Copyright © 2010, EGEN Software LTD."
#property link        "http://www.metaquotes.net"

#property indicator_chart_window

#property indicator_buffers   2
#property indicator_color1    Lime
#property indicator_color2    Red
#property indicator_width1    2
#property indicator_width2    2

datetime TIME; double F,F1,F2;

double WAVE.0[];
double WAVE.1[];

bool EQ(int value1, int value2)
{
   return(value1==value2);
}

bool ZERO(int value)
{
   return(EQ(value,0));
}

int MathSign(double value1, double value2)
{
   if(value1<0)
      if(value2<0) return(-1);
   if(value1>0)
      if(value2>0) return(1);
   return(0);
}

bool TOTAL(int index)
{
   return(index<Bars);
}

double FRACTALS(int mode, int shift)
{
  return(iFractals(NULL,0,mode,shift));
}

double UPPER(int shift)
{
   return(FRACTALS(MODE_UPPER,shift));
}

double LOWER(int shift)
{
   return(FRACTALS(MODE_LOWER,shift));   
}

int PEAK(int shift)
{
   int peak=0;
   double F1=UPPER(shift); 
   if(F1>0) peak++;
   double F2=LOWER(shift); 
   if(F2>0) peak--;
   F=F1+F2; 
   return(peak);
}

void init()
{
   IndicatorBuffers(2);
   SetIndexBuffer(0,WAVE.0);
   SetIndexStyle(0,DRAW_ARROW,EMPTY);  
   SetIndexArrow(0,236);    
   SetIndexBuffer(1,WAVE.1);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);      
   SetIndexArrow(1,238);
   IndicatorDigits(Digits);
   IndicatorShortName("iFractals");  
}

bool F1(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F1=F*peak;
   return(true);
}

int WAVE.1(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F1(i)) break; 
   return(i);
}

bool F2(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F2=F*peak;
   return(true);
}

int WAVE.2(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F2(i)) break; 
   return(i);
}

void WAVE(int shift)
{
   WAVE.0[shift]=EMPTY_VALUE;
   WAVE.1[shift]=EMPTY_VALUE;
   shift=WAVE.1(shift); 
   int index=shift; shift++;
   shift=WAVE.2(shift);
   int wave=MathSign(F1,F2);
   F1=MathAbs(F1);
   F2=MathAbs(F2);
   if(wave<0) 
      if(F1<F2) WAVE.1[index]=F1; else WAVE.0[index]=F1;                  
   if(wave>0) 
      if(F1>F2) WAVE.0[index]=F1; else WAVE.1[index]=F1;       
}   

void CheckWave()
{
   for(int i=3; TOTAL(i); i++) WAVE(i);
}   

void start()
{
   CheckWave();
}

汇编并查看这些故事。然后得出结论。

还是 "站在吊床上 "更舒服?

 
artmedia70:

那么问题来了:如果你只是想看看这些故事,为什么要通过写这个指标来折磨自己呢?你得到了一个指向Articulus指标的链接。它所做的正是你想做的。

编译它,看一下历史。然后得出结论。

还是 "站在吊床上 "更舒服?



和你追踪火鸡的逻辑))。

你不需要20个函数来弄清楚,对吗?

 
VOLDEMAR:

谁会这样做?

为什么要为大量的{ }而烦恼呢?而放慢进程......

或者是...


有趣,我不知道,我得去看看。
 
ALXIMIKS:


和你追踪火鸡的逻辑))。

你对20种功能不感到厌烦吗?

那里的每个函数都返回一个一目了然的结果。我不会一目了然地陷入困境。这就像白天一样清楚。此外,他需要什么呢?他需要看的是故事,而不是代码。
 
VOLDEMAR:

谁会这样做?

为什么要为大量的{ }而烦恼呢?而放慢进程......

这也是一种方法。

谢谢你的更正。

我有这个愚蠢的习惯

当写一个条件语句时。

要马上放括号