指标问题 - 页 8

 
heelflip43:

我认为你的问题在于你没有重置val1和val2。所以一旦你找到了高点和最后的低点,你就需要重置它们。

希望这能有所帮助。
啊,我今天晚些时候启动到WINDOWS后再试试,谢谢

我想如果第一个if(语句)为真,那么它就会再次重启start(),并从代码的顶部重置,从而再次重置val1和val2

嗯,我想的方式是 - if(第一个语句)为真,然后打印,然后转到文本,下一个if(第二个)可能为假,然后再次回到start的顶部,重置val1和val2

我得到正确的打印和值,但只是连续打印。

现在我想起来了,我真的没有弄清楚任何if(语句)的问题,即使是最简单的EMA交叉产生连续的打印

我将测试你发布的代码,但如果我添加打印 语句来打印这些变量,而它没有连续打印,我会感到惊讶

我今天晚些时候会试一下

谢谢
 
好的,重设val1和val2会让我回到A高位,但仍然连续打印所有东西,不像以前那么多。
我确信我必须对currentTime和iTime做一些处理才能解决这个问题,我必须再审查一下。

似乎代码库中应该已经有一个ABCD方案可以借鉴,但这似乎是没有的,除了基于ZigZag的方案,我现在正在审查,看看这是否能给我提供任何线索。但这也是一个指标

,无论如何,如果我添加&&macd 或其他东西,它只打印一次,这真的让我很不爽。
 
我想我找到了,在对它进行了更多的思考和更多的工作之后

这样如何。

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+


      

这只打印一次,当添加

if(val1 > 0 && traded == false && val2==0)


if(val2 > 0 && traded == true && val1 == 0)


所以,我已经有点接近了,我可以再评估一下。

谢谢大家的帮助,这是一个巨大的帮助,因为它为我提供了解决这个问题的思路,也扩大了我对重设事物的认识。
我必须把它放在我的口袋里。

谢谢

 

我在大多数时候都没有遇到这个问题。似乎只有在同一个条形中出现上分形 和下分形时才会出现这种情况,这在不确定的市场中有时会发生。解决这个问题的唯一方法是每条街只运行一次计算。

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

这应该意味着它不会在分形的两边出现错误的交易。

 
现在我可以开始研究它的其余部分了,我只是希望我有足够的经验来理解iCustom指标 到EA的转换,那么我可能早就已经解决了这个问题了。

我现在做的方式会更复杂,因为我仍然要在我的代码逻辑边上添加iCustom指标;还有所有的铃铛和口哨,而不是使用已经工作的iCustomer指标作为我的代码逻辑。

无论如何,再次感谢今天的好消息。
 
或者你的解决方案也可以,我正在测试我的理论,没有看到你的帖子。
 
heelflip43:

我在大多数时候都没有遇到这个问题。似乎只有在同一个条形中出现上分形和下分形时才会出现这种情况,这在不确定的市场中有时会发生。解决这个问题的唯一方法是每条街只运行一次计算。

这应该意味着它不会在分形的两边出现错误的交易。

我需要更好地学习这部分的工作原理,我以前见过,也见过其他类似的版本,但只是部分地理解。

我需要再研究一下这个问题。这可能是我在测试时由于连续打印语句而丢失了大部分代码的地方。

我相信有其他的方法可以解决这个问题,但我确实打算为此创建一个指标,并从AtoB等处画线。

我将再研究一下
 
以下是我目前取得的一些进展

也许有人能很好地利用它,我相信大师可以把它修改得更好。

总之,它正在打印我想要的东西,而且我为fibo级别添加了一些外部值,所以用户可以选择他们可能想要的级别。

我第一次在论坛上贡献代码,大笑

谁有更好的方法来完成这项任务,我已经预料到了,由于添加了iCustom指标 来显示我的代码正在做什么,所以代码会加倍,但这意味着对数组缓冲器等进行双重编码,然后使用iCustom。

总之,这是我得到的东西

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
以我有限的知识和经验,这是我能想到的ABCD方案的全部内容

我将对它进行更多的研究,允许用户将A和B的水平改为不违反以前的A和B的水平,以便真正保持在一个趋势内等。

希望有人能使用它,或者能用一些更好的想法对它进行补充。

现在,我将研究蜡烛形态和指标,以添加到它或其他东西,以及弹出警报,也许声音和一些弹出视频可能会很有趣。

谢谢大家的帮助。

 

我们在这里为您提供了一个新的机会。

基金会将在23日举行的会议上,为您提供一个新的机会。

在这里,我们可以看到,在我们的工作中,有很多人都在为我们的工作而努力,有很多人都在为我们的工作而努力,有很多人都在为我们的工作而努力。谈到这个问题,我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:

 
GERICH:

我们在这里为您提供了一个新的机会。

基金会将在23日举行的会议上,为您提供关于 "Iнстафорекс "的信息。

在这里,我们可以看到,在我们的工作中,有很多人都在为我们的工作而努力,有很多人都在为我们的工作而努力,有很多人都在为我们的工作而努力。谈到这个问题,我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:"我想说的是:

老兄,我对InstaForex公司不感兴趣,如果你想要一个网格脚本,请在编码员雇用部分发布项目
,并且请用英语发布

,祝你交易愉快。