[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 598

 
alsu:

把指标的逻辑完全拆开。

先把它换掉。

还有。

如果没有其他原因,则先执行第一个块,然后再执行第二个。与其他--要么是第一个,要么是第二个。



ooo!逻辑是缺失的!)我很快就会改变它!是的,在飞行中:如果我在文本中的任何地方不是用第四个而是用第三个来写,像这样。
iFractals(Symbol(),PERIOD_H1,MODE_UPPER,3);

我没有交易,虽然到3号的条子似乎足够一切工作,但问题是什么?

而至于指标的逻辑,我有点糊涂了。我知道指标是如何工作的,我只是需要算法来确保ifractals不等于零,而你提供给我的是删除这个条件,它是多余的吗? 为什么我写了两次?

 
alsu:

把指标的逻辑完全拆开。

先把它换掉。

此外。

如果没有其他原因,则先执行第一个块,然后再执行第二个。与其他--要么是第一个,要么是第二个。



我更换了所有的东西,但不知道为什么还是以同样的方式跳过...((((((。
 
Vinin:

有可能打起来,EA的工作也会被打断。我们只是需要改变方法。


如何?

在代码的开头,翻阅所有未结订单,找到并为订单分配票值,还是有其他方法?

 
Cruc:


在代码的开头,翻阅所有未结订单,找到并为订单分配票值,还是有其他方法?


如果EA开了一个或两个头寸,你可以这样做。
 
谁知道是什么原因导致EA在测试器中停止工作?
 
Vinin:

你可以这样做,只要顾问打开一个或两个位置。

EA是多币种的,所以简单的操作似乎不一定能一次解决()。而且没有任何经验。
 
Cruc:

我的专家顾问是多币种的,简单的操作似乎并不总是一次就能解决的(()。而且没有任何经验。


你只需要正确地进行订单核算。有很多的例子。

还有经验。经验是与时俱进的。它不会去任何地方。

 
Vinin:


你只需确保订单被正确记录。有很多的例子。

还有经验。经验是与时俱进的。它哪里都不会去。


谢谢你的回答,我将翻阅档案。
 
skyjet:

晚上好,我在为一个多货币MACD专家顾问寻求帮助。EA正确地遵循了开仓标准,但 "在条件下 "的平仓并不成功。我当然已经开始使用追踪止损,但正确的收盘并不能让我安心。

这就是主要部分的模样

而这是收尾的部分。请帮助我找到这个错误!


对不起,我重复了一遍,但无论我怎么挣扎,都找不到错误!"。

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);



Так выглядит оснавная часть, а это злопалучный блок закрытия



 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.
 
Qwertee:
我更换了所有的东西,但不知道为什么还是以同样的方式跳过...((((((。
写下你得到的信息和你输出到日志的信息。