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

 
如果你需要,我也会张贴jma。将指标名称改为JMA[i]。
附加的文件:
jmaxvib.mq4  11 kb
 
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;

你正在经历从当前时间 到过去时间的酒吧。

阵列被搜索,直到最后一个。

因此,所有的变量都会给出最近的情况(在这种情况下--很久以前)的数值。

因此,你需要做一个从过去到现在的查询。

for(i = limit; i >= 0; i--)
和变量
int fd, fu,Fd, Fu;

在顶层声明,即在Start和Init之前。

而且不需要在开始时将它们归零。只在你让他们归零的地方留下归零的痕迹

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;
 
rlx 谢谢你,Vce正在工作
 
PapaYozh:


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

其次,非正常化的价格被传递给OrderSend()。

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


谁能把实验1的修正版贴出来?
 

下午好!

感谢你们的答复--你们对我帮助很大 ))))

伙计们!专家顾问在这两根木线 交叉时进行交易。而当它们交叉回来时,它关闭交易并向相反方向打开,损失利润。

1.当线路刚刚开始汇合时,我怎么写它能完成交易呢?而且它不会在同一方向开启新的交易,而是会在他们向相反方向交叉时等待?

2.或者在买入时R.C.I.向下穿过80水平,卖出时向下穿过20水平时关闭交易。当关闭交易时,当条件得到满足时,它不会在同一方向上打开交易,而是等待它们向相反方向交叉?

如果论坛上有任何类似的主题,请给我一个链接!

事先非常感谢!

祝您交易愉快!

有利可图的交易!

 

大家好!

请告诉我这是什么意思。

订单买入 ...... 失败 [交易超时]

特别感兴趣的是这个超时是什么

 
smartemiy:

下午好!

感谢你们的答复--你们对我帮助很大 ))))

伙计们!专家顾问在这两根木线交叉时进行交易。而当它们交叉回来时,它关闭交易并向相反方向打开,损失利润。

1.当线路刚刚开始汇合时,我怎么写它能完成交易呢?而且它不会在同一方向上开启新的交易,而是等到他们在相反的方向上交叉?

2.或者在买入时R.C.I.向下穿过80水平,卖出时向下穿过20水平时关闭交易。当关闭交易时,当条件得到满足时,它不会在同一方向上打开交易,而是等待它们向相反方向交叉?

如果论坛上有任何类似的主题,请给我一个链接!

事先非常感谢!

祝您交易愉快!

有利可图的交易!


https://www.mql5.com/ru/code 有一仓库的类似产品
 
另一个问题:可以用什么函数来拉出每个工具点的成本?
 
PapaYozh:


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

然而,我不想成为一个麻烦的人。

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if(ObjectFind(NamePrice)==-1)
      {
        ObjectCreate(NamePrice,OBJ_HLINE,0,0,Ask);
        ObjectSet(NamePrice,OBJPROP_COLOR,LineColor);
      }
      double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
      double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
      double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
      double d= AccountEquity()-AccountBalance();                 
       if(ObjectFind(NamePrice1)==-1&&d>0)
      {       
        ObjectCreate(NamePrice1,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice1,OBJPROP_COLOR,LineColor1);
      }
      if(n+d*Point*10>p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d*Point*10);
      if(ObjectFind(NamePrice2)==-1&&n+d*Point*10<p1)
      {       
        ObjectCreate(NamePrice2,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice2,OBJPROP_COLOR,LineColor2);
      } 
      if(p2!=n+d*Point*10)ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d*Point*10);  
      if(nb+ns==2&&tral<20&&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod*Point/10)CloseALL(); 
      if(nb+ns==2&&tral>20&&p1-p2>=tral*Point&&p2>n)CloseALL();  
      }
//..........................................................................
    if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
       { 
     
      if( R==1&&zb==0&&C1>O1&&iVolume(Symbol(),TF,0)<2)
         {
         if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Green);
         }
         }
      
      }
    if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
        {      
      if(R==1&&zs==0&&C1<O1&&iVolume(Symbol(),TF,0)<2)
        {        
         if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Red);
         }
         }
      return(0);
     }
   

   
  }

向我解释一下,如果OrderTotal()为零,订单将如何打开。

谢谢你。

 

请告诉我应该在EA中写哪些代码来使EA每小时只交易一次。

例如,EA已经触发,一个订单被打开(对进一步感兴趣),我希望该订单不要在一小时时间框架的当前条上打开。

一切看起来像这样

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent() );
}

但我有无数的订单 未完成