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

 
Sehen Sie sich an, was der Retcode nach dem Absenden der Bestellung sagt
 
Fast235 #:
sehen, was der Retcode sagt, nachdem die Bestellung abgesch ickt wurde

Ich danke Ihnen.

10018

TRADE_RETCODE_MARKET_CLOSED

Der Markt ist geschlossen.

Das bedeutet, dass es ein Problem mit dem Makler gibt.

 

Grüße, bitte treten Sie mich nicht zu sehr)
Ich habe eine EA. Ich möchte darin die Funktion implementieren, eine Position zu eröffnen, wenn bei mehreren Währungspaaren ein Balken mit dem Index 1 die gleiche Richtung hat (bullish oder bearish).
Ich versuche, dies mit iclose und iopen zu tun.

Все происходит в bool-ой функцие.
Хотел реализовать конструкцию следующего вида:
if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Но ничего не получилось, и открываются позиции при любой комбинации баров с индексом 1.


Но работает следующая конструкция.

if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;

Тут советник правильно находит комбинацию из баров. Но таким способом можно искать либо комбинации из бычьих баров, либо медвежьих.


Ибо код такого вида не работает.
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

И такого тоже)
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
   return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}


Wie kannmanalsonach Kombinationen aus bearishen und bullishen Balken suchen, die gleichzeitig auftreten? Noch einmal: Bitte nicht zu fest zuschlagen.)

 
Scarick #:

Grüße, bitte treten Sie mich nicht zu sehr)
Ich habe eine EA. Ich möchte darin die Funktion implementieren, eine Position zu eröffnen, wenn bei mehreren Währungspaaren ein Balken mit dem Index 1 die gleiche Richtung hat (bullish oder bearish).
Ich versuche, dies mit iclose und iopen zu tun.

if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Wie kannmanalsonach Kombinationen aus bearishen und bullishen Balken suchen, die gleichzeitig auftreten? Noch einmal: Bitte schlagen Sie mich nicht mit einem Schlag.)

Verwenden SieCopyRates, und kontrollieren Sie, wie viel Sie bestellt und wie viel Sie erhalten haben. Hier ist ein Beispiel:

   MqlRates rates_current[],rates_eurgbp[],rates_eurjpy[];
   ArraySetAsSeries(rates_current,true);
   ArraySetAsSeries(rates_eurgbp,true);
   ArraySetAsSeries(rates_eurjpy,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_current)!=count)
      return;
   if(CopyRates("EURGBP",Period(),start_pos,count,rates_eurgbp)!=count)
      return;
   if(CopyRates("EURJPY",Period(),start_pos,count,rates_eurjpy)!=count)
      return;
//---
   bool signal_buy=false,signal_sell=false;
   if((rates_current[1].open>rates_current[1].close) && (rates_eurgbp[1].open>rates_eurgbp[1].close) && (rates_eurjpy[1].open>rates_eurjpy[1].close))
     {
      signal_buy=true;
      signal_sell=false;
     }
   else
     {
      if((rates_current[1].open<rates_current[1].close) && (rates_eurgbp[1].open<rates_eurgbp[1].close) && (rates_eurjpy[1].open<rates_eurjpy[1].close))
        {
         signal_buy=false;
         signal_sell=true;
        }
     }
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Hallo zusammen!

Situation.

Der Expert Advisor ist, sagen wir mal, auf muwings geschrieben. Wenn Sie den Test im Prüfgerät beendet haben, erscheinen die verwendeten Manöver (mit den verwendeten Parametern) im Fenster. Das ist in Ordnung.

Frage.

Aber wenn dieser EA auch auf den Markt hochgeladen wird und ein Benutzer die Demo herunterlädt, wird er dann auch nach dem Ende des Tests angezeigt? Oder hat mql diesbezüglich eine Datenschutzpolitik?


Конечно, можно самому заморочиться и проверить. Но те кто, заливал продукты, поймут, что лучше просто спросить)  

 
Anton Iudakov #:

Hallo zusammen!

Situation.

Der Expert Advisor ist, sagen wir mal, auf muwings geschrieben. Wenn Sie die Prüfung im Prüfgerät beendet haben, erscheinen die verwendeten Manöver (mit den verwendeten Parametern) im Fenster. Das ist in Ordnung.

Frage.

Aber wenn dieser EA auch auf den Markt hochgeladen wird und ein Benutzer die Demo herunterlädt, wird er dann auch nach dem Ende des Tests angezeigt? Oder hat mql diesbezüglich eine Datenschutzpolitik?


Natürlich ist es einfacher, danach zu fragen, aber nicht jeder, der einen EA auf den Markt heruntergeladen hat, hat ihn anschließend überprüft.

Welchen Unterschied macht es eigentlich, woher die Akte des EA stammt? Es wird genauso funktionieren, egal ob es von einem Entwickler heruntergeladen oder auf dem Markt verschlüsselt wurde...

 
Anton Iudakov #:

Hallo zusammen!

Situation.

Der Expert Advisor ist, sagen wir mal, auf muwings geschrieben. Wenn Sie den Test im Prüfgerät beendet haben, erscheinen die verwendeten Manöver (mit den verwendeten Parametern) im Fenster. Das ist in Ordnung.

Frage.

Aber wenn dieser EA auch auf den Markt hochgeladen wird und ein Benutzer die Demo herunterlädt, wird er dann auch nach dem Ende des Tests angezeigt? Oder hat mql diesbezüglich eine Datenschutzpolitik?


TesterHideIndicators
 
Können Sie mir bitte sagen, wie nach demTesten eines EA in MQL5 zur Ausgabe einer meiner Statistiken in einem Pop-up-Fenster, wenn die Maus über die Pfeile ist?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

Helfen Sie mir, den Indikator zu reparieren. Sie zeichnet einen Preisschritt/ein Raster von einem bestimmten Wert aus. Das Problem ist, dass die Linien auf dem Diagramm bleiben, wenn ich sie entferne. Außerdem kann ich keinen zweiten Indikator in das Diagramm einfügen. Im Allgemeinen, wie man es vollständig aus dem Diagramm zu entfernen, so dass ich den gleichen Indikator auf dem Diagramm mit anderen Werten werfen kann.

#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots   0
//--- входные параметры 
input int count = 500;      //количество линий вверх вниз от цены
input int step  = 100;     //шаг линий 
input double pr = 1.1;  //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine(const string name="HLine",double price=0)
  {
//--- создадим горизонтальную линию 
   if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clrDodgerBlue);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
   return(true);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for(int i=0;i<=count;i++)
     {
      HLine("HLine"+(string)i,price+step*i*_Point);
      HLine("HLine"+(string)(i+count+1),price-step*i*_Point);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


 
Green handsome #:

Helfen Sie mir, den Indikator zu reparieren. Sie zeichnet einen Preisschritt/ein Raster von einem bestimmten Wert aus. Das Problem ist, dass die Linien auf dem Diagramm bleiben, wenn ich sie entferne. Außerdem kann ich keinen zweiten Indikator in das Diagramm einfügen. Im Allgemeinen, wie man es vollständig aus dem Diagramm zu löschen, so dass es möglich ist, den gleichen Indikator auf dem Diagramm mit verschiedenen Werten hinzuzufügen.

In OnDeinit müssen SieObjectsDeleteAll ausführen - Löschen nach Präfix (in Ihrem Fall ist das Präfix "HLine")

int  ObjectsDeleteAll(
   long           chart_id,   // идентификатор графика
   const string     prefix,   // префикс имени объекта
   int       sub_window=-1,   // индекс окна
   int      object_type=-1    // тип объекта для удаления
   );

Документация по MQL5: Графические объекты / ObjectsDeleteAll
Документация по MQL5: Графические объекты / ObjectsDeleteAll
  • www.mql5.com
ObjectsDeleteAll - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Grund der Beschwerde: