Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 493

 
INGFX:

Vladimir, grazie per la tua pazienza e il tuo aiuto!
Davvero fatto un errore nel codice ...
Starò più attento d'ora in poi.

Evviva! Ora posso andare a dormire in pace.
 

Buon pomeriggio.

Si prega di consigliare come risolvere il problema. Quando si cerca di inviare un file con SendFTP() si verifica un errore 4014 - La funzione di sistema non può essere chiamata.

Le impostazioni FTP sono OK - i rapporti e il file di prova vengono inviati.

Grazie in anticipo.

 
Nikita Solodko:

Buon pomeriggio.

Si prega di consigliare come risolvere il problema. Quando si cerca di inviare un file con SendFTP() si verifica un errore 4014 - La funzione di sistema non può essere chiamata.

Le impostazioni FTP sono OK - i rapporti e il file di prova vengono inviati.

Grazie in anticipo.

Stai cercando di inviare dall'indicatore per caso?
 
Karputov Vladimir:
Stai per caso cercando di inviare da un indicatore?
Accidentalmente, sì... Perché non puoi?
 
Nikita Solodko:
Accidentalmente sì... Perché non puoi?
Non si può perché in caso di ritardi della rete ftp, l'indicatore potrebbe rallentare tutto il terminale. Ma potete farlo dall'EA.
 
Karputov Vladimir:
Non è possibile a causa del fatto che in caso di ritardi della rete ftp, l'indicatore può rallentare l'intero terminale. Ma da parte dell'EA, siete i benvenuti.
Grazie.
 

Ciao a tutti. Sto scrivendo il mio primo EA e sto affrontando un problema che non posso vincere.

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; 
 }
}

Il mio EA dovrebbe dare un segnale di acquisto e di vendita se la barra precedente è stata aperta al di fuori del canale"Envelopes",se era sopra il canale, allora vendere, se era sotto comprare, ma in realtà invia sempre ordini quando si sente come, può andare lungo all'interno del canale e improvvisamente ordine di acquisto, anche se tutte le altre condizioni sono ok, se segnale di vendita, vendere, comprare, comprare.

Come fargli comprare un ordine per barra, piuttosto che tutti insieme il numero di ordini consentito ogni secondo?

 
Nickolay72:

Ciao a tutti. Sto scrivendo il mio primo EA e sto affrontando un problema che non posso vincere.

Il mio EA dovrebbe dare un segnale di acquisto e vendita se la barra precedente è stata aperta al di fuori del canale"Envelopes",se era sopra il canale, allora vendere, se era sotto comprare, ma in realtà invia sempre ordini quando si sente, può andare lungo all'interno del canale e improvvisamente iniziare a comprare ordini, anche se tutte le altre condizioni sono ok, se il segnale di vendita, comprare.

Come fargli comprare un ordine per barra, piuttosto che tutti insieme il numero di ordini consentito ogni secondo?

Buona giornata. Prima di inviare un ordine, controlla se hai già posizioni aperte. Se ce ne sono, non inviare un ordine di apertura, altrimenti invialo. Per quanto ho capito il tuo codice, questa funzione CountTrades() se ne occupa. Quindi, controllate i valori restituiti da questa funzione.
 
Fino a ieri avevo un ordine ciascuno e il successivo non è stato aperto. E come fare in modo che il mio EA apra gli ordini quando la barra precedente era sopra (sotto) il canale?
File:
Zmey.mq4  5 kb
 
Nickolay72:
Fino a ieri avevo un ordine ciascuno, e mentre c'è un ordine, quello successivo non si apre.Come fare in modo che il mio EA apra gli ordini secondo l'ordine quando la barra precedente si è aperta sopra (sotto) il canale? In questo momento, la maggior parte degli ordini sta perdendo, perché non sono aperti secondo le condizioni.
Se Open Bar 1 è più alto/basso del canale.