Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 493

 
INGFX:

Vladimir, ich danke Ihnen für Ihre Geduld und Ihre Hilfe!
Ich habe wirklich einen Fehler im Code gemacht ...
Von nun an werde ich vorsichtiger sein.

Juhu! Jetzt kann ich in Ruhe einschlafen.
 

Guten Tag.

Bitte beraten Sie mich, wie ich das Problem lösen kann. Beim Versuch, eine Datei mit SendFTP() zu senden, tritt ein Fehler 4014 auf - Systemfunktion darf nicht aufgerufen werden.

Die FTP-Einstellungen sind OK - Berichte und Testdatei werden gesendet.

Ich danke Ihnen im Voraus.

 
Nikita Solodko:

Guten Tag.

Bitte beraten Sie mich, wie ich das Problem lösen kann. Beim Versuch, eine Datei mit SendFTP() zu senden, tritt ein Fehler 4014 auf - Systemfunktion darf nicht aufgerufen werden.

Die FTP-Einstellungen sind OK - Berichte und Testdatei werden gesendet.

Ich danke Ihnen im Voraus.

Versuchen Sie zufällig, vom Indikator aus zu senden?
 
Karputov Vladimir:
Versuchen Sie zufällig, von einem Indikator aus zu senden?
Aus Versehen, ja... Warum können Sie das nicht?
 
Nikita Solodko:
Versehentlich ja... Warum können Sie das nicht?
Das geht nicht, denn bei Verzögerungen im FTP-Netzwerk kann der Indikator das gesamte Terminal verlangsamen. Aber Sie können es vom EA aus tun.
 
Karputov Vladimir:
Nicht möglich, da der Indikator bei Verzögerungen im FTP-Netzwerk das gesamte Terminal verlangsamen kann. Aber bei der EA können Sie das gerne tun.
Ich danke Ihnen.
 

Hallo zusammen. Ich schreibe gerade meinen ersten EA und stehe vor einem Problem, das ich nicht lösen kann.

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

Mein EA sollte ein Kauf- und Verkaufssignal geben, wenn der vorherige Balken außerhalb des Kanals"Umschläge" geöffnet wurde,wenn es über dem Kanal war, dann verkaufen, wenn es unter kaufen war, aber in der Tat sendet es immer Aufträge, wenn es fühlt sich wie, es kann lange innerhalb des Kanals gehen und plötzlich beginnen Kaufaufträge, obwohl alle anderen Bedingungen sind ok, wenn das Verkaufssignal verkauft und kaufen, kaufen.

Wie kann man ihn dazu bringen, einen Auftrag pro Balken zu kaufen, anstatt alle auf einmal erlaubte Anzahl von Aufträgen pro Sekunde?

 
Nickolay72:

Hallo zusammen. Ich schreibe gerade meinen ersten EA und stehe vor einem Problem, das ich nicht lösen kann.

Mein EA sollte ein Kauf- und Verkaufssignal geben, wenn der vorherige Balken außerhalb des Kanals"Umschläge" geöffnet wurde,wenn es über dem Kanal war, dann verkaufen, wenn es unter kaufen war, aber in der Tat sendet es immer Aufträge, wenn es fühlt sich wie, es kann lange innerhalb des Kanals gehen und plötzlich beginnen Kaufaufträge, obwohl alle anderen Bedingungen sind ok, wenn das Verkaufssignal verkauft und kaufen, kaufen.

Wie kann man ihn dazu bringen, einen Auftrag pro Balken zu kaufen, anstatt alle auf einmal erlaubte Anzahl von Aufträgen pro Sekunde?

Guten Tag. Prüfen Sie vor dem Absenden eines Auftrags, ob Sie bereits offene Positionen haben. Falls ja, senden Sie keinen Auftrag zur Eröffnung, andernfalls senden Sie ihn. Soweit ich Ihren Code verstehe, befasst sich diese Funktion CountTrades() damit. Überprüfen Sie also die von dieser Funktion zurückgegebenen Werte.
 
Bis gestern wurde eine Bestellung geöffnet und die nächste wird nicht öffnen, bis die nächste Bestellung geöffnet ist, aber wie mein EA die Aufträge öffnen, wenn der vorherige Bar über (unter) den Kanal war?
Dateien:
Zmey.mq4  5 kb
 
Nickolay72:
Bis gestern hatte ich jeweils eine Bestellung, und während es eine Bestellung gibt, wird die nächste nicht geöffnet.Wie kann ich meinen EA dazu bringen, Orders zu öffnen, wenn der vorherige Balken oberhalb (unterhalb) des Kanals geöffnet hat? Im Moment gehen die meisten Aufträge verloren, weil sie nicht gemäß den Bedingungen geöffnet werden.
Wenn Open Bar 1 höher/niedriger als der Kanal ist.
Grund der Beschwerde: