初学者的问题 MQL5 MT5 MetaTrader 5 - 页 493

 
INGFX:

弗拉基米尔,感谢你的耐心和帮助!你是谁?
真的在代码中犯了一个错误......
我以后会更加小心。

耶!我现在可以安然入睡了。
 

下午好。

请告知如何解决这个问题。当试图用SendFTP() 发送一个文件时,出现了4014错误--系统函数不允许被调用。

FTP设置是确定的--报告和测试文件被发送。

预先感谢你。

 
Nikita Solodko:

下午好。

请告知如何解决这个问题。当试图用SendFTP() 发送一个文件时,出现了4014错误--系统函数不允许被调用。

FTP设置是确定的--报告和测试文件被发送。

预先感谢你。

你是否试图从指标中发送?
 
Karputov Vladimir:
你是否试图从一个指标中发送?
意外地,是的...为什么你不能?
 
Nikita Solodko:
意外的是...为什么你不能?
你不能这样做,因为在ftp网络延迟的情况下,该指标可能会使整个终端的速度变慢。但你可以从EA做起。
 
Karputov Vladimir:
不可能,因为在ftp网络延迟的情况下,该指标可能会拖慢整个终端。但从EA来看,我们欢迎你这样做。
谢谢你。
 

大家好。我正在写我的第一个EA,我面临着一个我无法赢得的问题。

void OnTick()
{
 datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
 datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
 datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
 if (CurrTime < EaStartTime || CurrTime >= EaEndTime)
  return;                                         // если еще не время торговать - выход
{
 PriceLow=iEnvelopes(NULL,0,MA_Period,MA_Shift,MA_Method,Applied_Price,Deviation,0,1);
 PriceHigh =iEnvelopes(NULL,0,MA_Period,MA_Shift,MA_Method,Applied_Price,Deviation,1,1);
 MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,0);
 SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_SIGNAL,0);
 SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,PRICE_MEDIAN,1);
 SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,PRICE_MEDIAN,0);
 PriceCurrentOpen=iOpen(NULL,0,1);
 PriceCurrentClose=iClose(NULL,0,1);
  if (CountTrades()==0) CheckForOpen();
   else
  {
   if(CountTrades()<max_trades) CheckForOpen();
  }
 }
}  
void CheckForOpen()
{
//-----Ставим ордер на покупку.
 if(PriceCurrentOpen<PriceLow&&PriceCurrentOpen<PriceCurrentClose&&SignalCurrent<MacdCurrent&&SignalMAPrevious<SignalMAThis)
 {
  ticket=OrderSend(NULL,OP_BUY,Lots,Ask,slippage,0,0,"5",magic,0,Blue);
   if(ticket>0)
    return; 
 }
//-----Ставим ордер на продажу.
 if(PriceCurrentOpen>PriceLow&&PriceCurrentOpen>PriceCurrentClose&&SignalCurrent>MacdCurrent&&SignalMAPrevious>SignalMAThis)
 {
  ticket=OrderSend(NULL,OP_SELL,Lots,Bid,slippage,0,0,"5",magic,0,Red);
   if(ticket>0)
    return; 
 }
}

我的EA应该给出一个买入和卖出的信号,如果前一个柱子是在通道"包络 " 之外打开的,如果是在通道之上,则卖出,如果是在通道之下,则买入,但事实上,它总是在它觉得合适的时候发送订单,它可能在通道内做多,突然开始买入订单,尽管其他条件都很好,如果卖出信号,则买入。

如何让他每条街买一个订单,而不是一下子允许每秒钟的订单数量

 
Nickolay72:

大家好。我正在写我的第一个EA,我面临着一个我无法赢得的问题。

我的EA应该给出一个买入和卖出的信号,如果前一个柱子是在通道"包络 " 之外打开的,如果是在通道之上,则卖出,如果是在通道之下,则买入,但事实上,它总是在它觉得合适的时候发送订单,它可能在通道内做多,突然开始买入订单,尽管其他条件都很好,如果卖出信号,则买入。

如何让他每条街买一个订单,而不是一下子允许每秒钟的订单数量

日子过得不错。在发送订单之前,请检查您是否已经有未结头寸。 如果有,请不要发送开仓订单,否则请发送。就我对你的代码的理解,这个函数CountTrades()是处理它的。因此,请检查该函数返回的值。
 
直到昨天,一个订单已经打开,下一个订单才会打开,但如何使我的EA在前一个条形图高于(低于)通道时打开订单?
附加的文件:
Zmey.mq4  5 kb
 
Nickolay72:
直到昨天,我每个人都有一个订单,虽然有一个订单,但下一个订单不会打开。如何使我的EA在前一个条形图在通道上方(下方)打开时,根据订单打开?现 在,大多数订单都在流失,因为它们没有按照条件打开。
如果Open Bar 1比通道高/低。
原因: