[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 475

 
sammi61:

我很抱歉,也许这不是主题,为什么EA在策略测试器中工作,但却不能打开真实和模拟交易?

也许在真实交易甚至是模拟交易中使用它是有限制的。我想在策略测试器中使用它,只是为了熟悉一下)。
 
tol64:

也许对真实使用甚至是演示使用有限制。并在测试器中进行认识))。

我是免费下载的,但我怎么知道是否有限制?
 
sammi61:

我是免费下载的,但我怎么知道是否有限制?

粗略看了一下,没有演示/真实的限制
 
我甚至没有找到他应该何时开出第一笔订单的条件。
 
Roger:
我甚至还没有找到它应该打开第一个订单的条件。

OrderSend(...)。
 
abolk:

有OrderSend(...)。

但这是在订单已经存在的条件下。
 
Roger:

但这是在订单已经存在的条件下。


首先,OrderSend()出现了两次,而且都在你指定的条件之外。

第二,OrderSend()传递非正常化的价格。

第三,分析OrderSend() 返回的结果,在打开/修改/关闭订单时出现错误的情况下,将信息写入日志并分析日志。

 

我将进行挖掘)))。

 

对gi_RSI指标代码的帮助。

我需要在90级上加一个点。

如果DN[i]=70和dn[i]=60并且jma>Close[i]。即绿色从上到下越过80水平,绿色从上到下越过蓝色,收盘价低于jma。


我必须在10级上加一个点。

如果DN[i]=30和dn[i]=40并且jma<Close[i]。即绿色由下往上越过20级,并由下往上越过绿色蓝色,收盘价高于jma。

我无法将代码附在指标上。

int start()
  {
   int limit;
   double dMA;
   int fd, fu,Fd, Fu;
      
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)       return(-1);

   if(counted_bars > 0)    counted_bars--;
   limit = Bars - counted_bars;
   for(int i = 0; i < limit; i++)
       wBuffer[i] = iMA(NULL, TimeFrame, aLine, 0, aMethod, bPrice, i);
       
   for(i = 0; i < limit; i++)
     {
       dBuffer[i] = iMA(NULL, TimeFrame, aLine, 0, aMethod, bPrice, i) + 
                    iMA(NULL, TimeFrame, aLine, 0, aMethod, bPrice, i) - 
                    (-iRSIOnArray(wBuffer, 0, bLine,  i));
       rsi[i]=iRSI(NULL, TimeFrame, 14, 0, i);       
     }
    for(i = 0; i < limit; i++)
     {
       if(dBuffer[i+1]>80 && dBuffer[i]<80) DN[i] = 70; Fd=-1; Fu=0;               //пересекла 80   --> 1
       if(dBuffer[i+1]<20 && dBuffer[i]>20) UP[i] = 30; Fu=1;  Fd=0;               //пересекла 20   --> 1
       
       if(dBuffer[i+1]>rsi[i+1] && dBuffer[i]<rsi[i]) dn[i] = 60; fd=-1; fu=0;     //пересечение двух  -->  2
       if(dBuffer[i+1]<rsi[i+1] && dBuffer[i]>rsi[i]) up[i] = 40; fu=1;  fd=0;     //пересечение двух     -->  2
       
       if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;
 /*
  Надо поставить точку на уровне 90, если DN[i] = 70 и dn[i] = 60. То есть зеленая пересекла уровень 80 с верху в низ и пересекла зеленая синююю с верху в низ.
  Надо поставить точку на уровне 10, если DN[i] = 30 и dn[i] = 40. То есть зеленая пересекла уровень 20 с низу в верх и пересекла зеленая синююю с низу в верх.
*/      
       double jma=iCustom(NULL,0,"JMA[i]",Length,Phase,0,i);
         if(Fd==-1 && fd==-1 && jma>Close[i]) {dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;}
         if(Fu==1 && fu==1  && jma<Close[i])   {dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;}
     }          
           
//----
   return(0);
  }
 
完全搞不懂这个逻辑。它画了一个点,但在红色箭头上,而不是在白色箭头上。
附加的文件:
gi_rsi.mq4  7 kb