Questions des débutants MQL5 MT5 MetaTrader 5 - page 493

 
INGFX:

Vladimir, merci pour votre patience et votre aide !
J'ai vraiment fait une erreur dans le code ...
Je ferai plus attention à partir de maintenant.

Yay ! Je peux maintenant m'endormir en paix.
 

Bon après-midi.

Veuillez me conseiller sur la manière de résoudre ce problème. Lorsque vous essayez d'envoyer un fichier avec SendFTP(), vous obtenez une erreur 4014 - La fonction système n'est pas autorisée à être appelée.

Les paramètres FTP sont OK - les rapports et le fichier de test sont envoyés.

Merci d'avance.

 
Nikita Solodko:

Bon après-midi.

Veuillez me conseiller sur la manière de résoudre ce problème. Lorsque vous essayez d'envoyer un fichier avec SendFTP(), vous obtenez une erreur 4014 - La fonction système n'est pas autorisée à être appelée.

Les paramètres FTP sont OK - les rapports et le fichier de test sont envoyés.

Merci d'avance.

Essayez-vous d'envoyer à partir de l'indicateur par hasard ?
 
Karputov Vladimir:
Est-ce que, par hasard, vous essayez d'envoyer à partir d'un indicateur ?
Accidentellement, oui... Pourquoi ne le pouvez-vous pas ?
 
Nikita Solodko:
Accidentellement oui... Pourquoi ne le pouvez-vous pas ?
Vous ne pouvez pas car en cas de retard du réseau ftp, l'indicateur peut ralentir l'ensemble du terminal. Mais vous pouvez le faire à partir de l'EA.
 
Karputov Vladimir:
Impossible, car en cas de retard du réseau ftp, l'indicateur peut ralentir l'ensemble du terminal. Mais d'après l'EA, vous êtes le bienvenu.
Merci.
 

Bonjour à tous. Je suis en train d'écrire ma première EA et je suis confronté à un problème que je ne peux pas résoudre.

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

Mon EA devrait donner un signal d'achat et de vente si la barre précédente a été ouverte en dehors du canal"Enveloppes",si elle était au-dessus du canal, alors vendre, si elle était en dessous acheter, mais en fait il envoie toujours des ordres quand il le sent, il peut aller long à l'intérieur du canal et soudainement commencer à acheter des ordres, bien que toutes les autres conditions sont ok, si le signal de vente vend et achète, acheter.

Comment faire en sorte qu'il achète un ordre par barre, plutôt qu'en une seule fois le nombre d'ordres autorisés chaque seconde ?

 
Nickolay72:

Bonjour à tous. Je suis en train d'écrire ma première EA et je suis confronté à un problème que je ne peux pas résoudre.

Mon EA devrait donner un signal d'achat et de vente si la barre précédente a été ouverte en dehors du canal"Enveloppes",si elle était au-dessus du canal, alors vendre, si elle était en dessous acheter, mais en fait il envoie toujours des ordres quand il le sent, il peut aller long à l'intérieur du canal et soudainement commencer à acheter des ordres, bien que toutes les autres conditions sont ok, si le signal de vente-vente, acheter.

Comment faire en sorte qu'il achète un ordre par barre, plutôt qu'en une seule fois le nombre d'ordres autorisés chaque seconde ?

Bonne journée. Avant d'envoyer un ordre, vérifiez si vous avez déjà des positions ouvertes. S'il y en a, n'envoyez pas d'ordre d'ouverture, sinon envoyez-le. D'après ce que je comprends de votre code, cette fonction CountTrades() s'en occupe. Vérifiez donc les valeurs renvoyées par cette fonction.
 
Jusqu'à hier, j'avais un ordre chacun et le suivant n'était pas ouvert. Et comment faire pour que mon EA ouvre des ordres lorsque la barre précédente était au-dessus (en dessous) du canal ?
Dossiers :
Zmey.mq4  5 kb
 
Nickolay72:
Jusqu'à hier, j'avais une commande chacun, et tant qu'il y a une commande, la suivante ne s'ouvre pas.Comment faire pour que mon EA ouvre des ordres en fonction de l'ordre lorsque la barre précédente s'est ouverte au-dessus (au-dessous) du canal ? Actuellement, la plupart des commandes sont perdues, car elles ne sont pas ouvertes selon les conditions.
Si la barre ouverte 1 est supérieure/inférieure au canal.
Raison: