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

 

大家好,我写了一个EA!在测试器中,一切正常,但在真实账户中,它拒绝开立头寸!请注意,他关闭手动打开的位置非常好,但是,正是为了打开,不希望......。该怎么做?


代码。


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 | |
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#财产版权"DOKSTER@YANDEX.RU"
#属性链接 "DOKSTER@YANDEX.RU"

外置双数LOT = 0.01; // LOTS
外来的双倍KOF = 2;
外来的双数SAF=5。
外来的int FRC = 21;

int start()

{


int CNT。

int 总数。
int SPREAD;

双SPR。
双SPRW。

双FRCU。
双重FRCU;双重FRCD。

双重EMAH。
双重EMAM;。
双重EMAL;双重EMAL。

双重开放。
双关。

双重DFB。
双重DFS。

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1)。
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1)。
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1)。

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU=High[iHighest(NULL,0,MODE_HIGH,FRC,1)]。
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)] 。

dfb = (close-frcd);
dfs=(frcu-close)。

SPR = MarketInfo(Symbol(),MODE_SPREAD)。
SPRW=(SPR*Point)。

TOTAL = OrdersTotal();

如果(TOTAL<1)

{

{ 如果(OPEN<EMAH&&CLOSE>EMAH)。

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF), "DOKTRADE",15775,0,Green);


如果(OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF), "DOKTRADE",15885,0,Red);

return(0);

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES)。

{

如果(OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

如果(OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)。

return(0);

}

如果(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

如果(OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue)。

return(0);

}

}

}

}
 

下午好!

伙计们,请帮助我找出我的错误之处。我有Aroon Up&dn指标。

我正试图把它放入我的专家顾问中...它不想打开订单。

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
附加的文件:
 
7sintez:

大家好,我写了一个EA!在测试器中,一切正常,但在真实账户中,它拒绝开立头寸!请注意,他关闭手动打开的位置非常好,但是,正是为了打开,不希望......我应该怎么做?


首先,看一下日志中的错误...对于发送订单 时的价格参数,强烈推荐使用NormalizeDouble。

 
splxgf:

首先,看一下日志中的错误...对于发送订单时的价格参数,强烈推荐使用NormalizeDouble。

谢谢你的提示,但如果你能更具体一点...在我的日志中看不到任何东西,除了同步化!"。请告知,可能有什么地方需要补充?是的,而且正常关闭...即在关闭时,一切都在工作...!
 
还有一个问题--任何其他脚本的操作都会影响这个EA的运行吗?
 
完成了NormalizeDouble...没有反应!我应该在设置中改变什么?
 
splxgf:

你可以去https://docs.mql4.com/ru/array/ArrayMaximum

在一个High的阵列上。

如果你能说得更具体些,我也想不出来。我需要找到High[i]和High[1]之间的最高值。谢谢你!
 
93408:

下午好!

伙计们,请帮助我找出我的错误之处。我有Aroon Up&dn指标。

我正试图把它放入我的专家顾问中...它不想打开订单。


我认为因为这个

如果(Volume[0]>1)返回。

 
7sintez:
谢谢你的提示,但如果你能更具体一点...因为日志中除了同步之外,没有显示任何东西!请告知,可能有什么地方需要补充?是的,而且正常关闭...即在关闭时一切正常......!

实际上,向专家作家提出这样的问题是无稽之谈 :)所以,你还不够成熟,如果你想检查检查头寸和限价是否接近开盘价,你可能会学到一两点中文语法。
 
Roger:


我想这就是原因。

如果(Volume[0]>1)返回。

不,不是这样的。

谢谢大家,我已经知道了。它的作用