[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 477

 
是啊...对。
 
这是不可行的。啊,我会把狗在新的EA中一块一块地编出来的
 
Dimka-novitsek:
不起作用。啊,我会在新的EA中一块一块地编排狗的。


这就是我在这种情况下的做法。

- 我把函数的所有文字都注释出来。

- 我把评论分门别类地记下来,编译后等待错误的出现。

 
   if (strela1>strela2&&BUY==0&&SELL==0)    {    
            
           OrderSend( Symbol( ), OP_BUY, lot, Ask, 3, NormalizeDouble( Bid- (stoplos*Point),Digits),  
          NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE); 

 
            Print(
          "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError()  ,"  Ask ",Ask,
     "   NormalizeDouble( Bid- (stoplos*Point),Digits)  ", NormalizeDouble( Bid- (stoplos*Point),Digits),  
     "    NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }

那么

   for( int A=0; A<100 ; A++)
   {
       double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, A);
       double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, A);
            
       int BUY=0,SELL=0;int ticket; 
       Print ( A,  "  strela1 " , strela1 , "    strela2  " , strela2 ); 
           
       for(int i=1; i<=OrdersTotal(); i++)
       {  
         if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
         {                                       // Анализ ордеров:
            if (OrderSymbol()!=Symbol( ) )continue;      // Не наш фин. инструм
            if (OrderMagicNumber( ) !=magicnumber)continue;
            if (OrderType()==0){ BUY++; ticket=OrderTicket( );}
            if (OrderType()==1) {SELL++;ticket=OrderTicket( );}
         }
       }
    }

像这样

      if (strela1<strela2&&BUY==0&&SELL==0)
      {  

         OrderSend( Symbol( ), OP_SELL, lot, Bid, 3, NormalizeDouble( Ask- (stoplos*Point),Digits),  
         NormalizeDouble( Bid+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
         Print( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError()  ,"  Bid ",Bid,
         "   NormalizeDouble( Ask- (stoplos*Point),Digits)  ", NormalizeDouble( Ask- (stoplos*Point),Digits),
         "    NormalizeDouble( Bid+( takeprofit*Point),Digits) ", NormalizeDouble( Bid+( takeprofit*Point),Digits));
      }

以此类推

    Print (   "  Конец " );      

提示1:用缩进的方式构造你的程序

提示2:在搜索此类错误以及其他许多错误时,使用代码部分的注释/* */ - 语法错误很快就会被发现。

 
Dimka-novitsek:
谢谢你!!!。我最好看一下代码...我还在一张纸上画了括号--平衡!!!。

零敲碎打并不意味着正确 - 必须遵循嵌套规则

 
Dimka-novitsek:
分支点在哪里?还是我很笨...我的意思是,我们只是在条件下开了一个订单!
if运算符是一个分支运算符,但你的代码中缺少第二个分支(else)。
 

谢谢你!!!。

你知道,没有这一行,它也能编译。

Print( "strela1<strela2&&BUY==0&&SELL==   " ,   GetLastError(),    "  Bid ",  Bid,  "   NormalizeDouble( Ask- (stoplos*Point),Digits)  ", 
 NormalizeDouble( Ask- (stoplos*Point),Digits),  "    NormalizeDouble( Bid+( takeprofit*Point),Digits) ",  NormalizeDouble( Bid+( takeprofit*Point),Digits);

而且我不认为这是犯罪!!!。我是把整个EA分成若干部分,分别进行编译,直到找到根基为止,可以说是把整个EA转移到了这里。

 
Dimka-novitsek:

谢谢你!!!。

你知道,没有这一行,它也能编译。

而且我不认为这有什么不对!!。可以说,是我把整个EA分成若干部分,分别进行编译,直到找到根基。

缺少打印 的结尾括号

Print( "strela1<strela2&&BUY==0&&SELL==   " ,   GetLastError(),    "  Bid ",  Bid,  "   NormalizeDouble( Ask- (stoplos*Point),Digits)  ", 
 NormalizeDouble( Ask- (stoplos*Point),Digits),  "    NormalizeDouble( Bid+( takeprofit*Point),Digits) ",  NormalizeDouble( Bid+( takeprofit*Point),Digits));
 

下午好...我已经写了一个简单的指标(见附件)。

简而言之,该指标的本质:该指标由3条线组成。

1条线 显示了两个MAs在Close上的差值,其中ab 的周期 (有条件的)。

第2 行显示了两个MAs在Close上的差异,其中cd 的周期 (有条件的);a≠b≠c≠d

第3行 显示线1和线2之差的MA,即某一时期的MA(线1-线2)。

问题:为什么线3(黑色)在图中显示为一条直线?


图片说明:上图显示的是期望的结果,下图显示的是我创建的指标

:如果有人能找到更多的错误,我将非常感谢你的提示。

P.S. 为了不在论坛上乱扔垃圾,提前感谢您的反馈意见

附加的文件:
aom3.mq4  12 kb
 

首先,尝试将第四个不可显示的缓冲区ExtMapBuffer4与指示器缓冲区连接起来

SetIndexBuffer(3,ExtMapBuffer4);

因为你写

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

在开始时,你描述了3条线/缓冲区

顺便说一下,那么你就不需要把它声明为一个时间序列,并对它进行检查。