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

 

Ich schreibe einen Roboter, der Ctrade verbindet. Zuerst möchte ich mit einer Logik beginnen, bei der er zu Beginn jeder Stunde ein Kaufgeschäft zum Marktpreis tätigt und nach einer halben Stunde alles zu einem neuen Marktpreis verkauft. Wenn ich es im Tester teste, erhalte ich die Fehlermeldung Ungültiger Auftragstyp.

Mein Instrument ist SBER, mein Kunde ist Otkritie. Meine Bestellung ist im manuellen Modus, meine Bestellung wird weder im Real- noch im Demokonto weitergeleitet.

Worin könnte der Fehler liegen? Stimmt es, dass an der Börse nicht zum Marktpreis gehandelt werden darf?

 
post_ek:

Ich schreibe einen Roboter, der Ctrade verbindet. Zuerst möchte ich mit einer Logik beginnen, bei der er zu Beginn jeder Stunde ein Kaufgeschäft zum Marktpreis tätigt und nach einer halben Stunde alles zu einem neuen Marktpreis verkauft. Wenn ich es im Tester teste, erhalte ich die Fehlermeldung Ungültiger Auftragstyp.

Mein Instrument ist SBER, mein Kunde ist Otkritie. Meine Bestellung ist im manuellen Modus, meine Bestellung wird weder im Real- noch im Demokonto weitergeleitet.

Worin könnte der Fehler liegen? Stimmt es, dass an der Börse nicht zum Marktpreis gehandelt werden darf?

Ich kann nicht verstehen, was Sie ohne Ihren Code geschrieben haben und warum es bei Ihnen nicht funktioniert.
 
Hallo. Wenn der EA auf einem Laptop läuft und dieser sich im Ruhezustand befindet, funktioniert dann der eingesteckte EA?
 
Movlat Baghiyev:
Guten Tag, wenn der EA auf einem Laptop läuft und dieser in den Ruhezustand gegangen ist, funktioniert dann der verbundene EA?
Und Sie werden den Drucker im Protokoll für alle Werte aktivieren und Sie werden es herausfinden. Wenn er nicht gedruckt wird, funktioniert er nicht.
 
Vitalie Postolache:
Und Sie werden den Ausdruck in das Protokoll aller Werte aufnehmen und herausfinden. Wenn sie nicht gedruckt wird, funktioniert sie nicht.
Das ist klar ... Ich dachte, jemand könnte seine Erfahrungen mit einem Neuling teilen
 
Movlat Baghiyev:
Guten Tag, wenn der EA auf einem Laptop läuft und dieser in den Schlafmodus gegangen ist, funktioniert dann der angeschlossene EA?

Der Ruhezustand ist normalerweise derjenige, der das Laufwerk herunterfährt,

Ich habe kürzlich einen Server installiert, und erst am dritten Tag habe ich gesehen, dass der Computer schlief, d.h. nicht funktionierte, d.h. alle EAs funktionierten nicht,

Ich habe den Ruhezustand deaktiviert und alles ist in Ordnung.

 
Movlat Baghiyev:
Das ist klar ... Ich habe mich gefragt, ob jemand seine Erfahrungen mit einem Neuling teilen kann.
Meiner Erfahrung nach funktioniert im Ruhezustand nicht viel, nur einige Systemdienste.
 
Movlat Baghiyev:
Hallo, wenn der Advisor auf einem Laptop läuft und dieser sich im Ruhezustand befindet, funktioniert dann der angeschlossene Advisor?

Nein. Es wird nicht funktionieren. Stellen Sie in den Energieeinstellungen die Stromversorgung ein:

NEIN zum Schlafmodus!

 
Sergey Gritsay:
Ohne Ihren Code ist es schwer zu verstehen, was Sie geschrieben haben und warum es nicht funktioniert.
//+------------------------------------------------------------------+
//|                                                         Gear.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade/Trade.mqh>
CTrade  trade;

bool TimeFlag, FLG;
int TimeScale=50, TimeInMemory, TimeNow;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
  //---Блок получения информации с биржи    
  MqlTick oCurrentTick;
  SymbolInfoTick(Symbol(), oCurrentTick);
//---Блок определения начала нового временного интервала
   TimeFlag=false;
   datetime tm=TimeCurrent();
   MqlDateTime stm;
   TimeToStruct(tm,stm);
   if(MathMod(StringToInteger((string)stm.min),TimeScale)==0)
     {
      TimeNow=StringToInteger((string)stm.min);
     }
   if(TimeNow != TimeInMemory)
     {
      TimeInMemory=TimeNow;
      TimeFlag=true;
      //Print(_Symbol);
     }
    
     if(TimeFlag)
       {
       if(FLG)
         {
   if(!trade.Buy(1,_Symbol))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }
         FLG=false;
         }
       else
         {
         trade.Sell(1);
         FLG=true;
         }
       }
  }
//+------------------------------------------------------------------+
 
post_ek:

Das ist nicht der richtige Weg:

bool TimeFlag,FLG;
int TimeScale=50,TimeInMemory,TimeNow;

oder besser gesagt, nach einer solchen Deklaration müssen Sie diese Variablen in OnInit() explizit initialisieren(ihnen Werte zuweisen).

Die Sell-Methode muss ebenfalls von Prüfungen umgeben sein, wie z. B.

trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");

Und es kann auch einen Haken geben - morgens, bei der Eröffnung des Handels, beginnt die Auktion nicht sofort, nicht von der ersten Sekunde an - dann sind Fehler möglich.