Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1341

 
vedere cosa dice il retcode dopo l'invio dell'ordine
 
Fast235 #:
vedere cosa dice il retcode dopo l'invio dell'ordine

Grazie.

10018

TRADE_RETCODE_MARKET_CLOSED

Il mercato è chiuso.

Significa che c'è un problema con il broker.

 

Saluti, per favore non prendetemi troppo a calci)
Ho un EA. Voglio implementare in esso la funzione di aprire una posizione, se su diverse coppie di valute, una barra con indice 1, ha la stessa direzione (rialzista o ribassista).
Sto cercando di farlo con iclose e iopen.

Все происходит в 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;
}


Quindi qualè il modogiusto percercare combinazioni di barre ribassiste e rialziste allo stesso tempo? Ancora una volta, per favore non colpire troppo forte).

 
Scarick #:

Saluti, per favore non prendetemi troppo a calci)
Ho un EA. Voglio implementare in esso la funzione di aprire una posizione, se su diverse coppie di valute, una barra con indice 1, ha la stessa direzione (rialzista o ribassista).
Sto cercando di farlo con iclose e iopen.

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;

Quindi qualè il modogiusto percercare combinazioni di barre ribassiste e rialziste allo stesso tempo? Ancora una volta, per favore non colpitemi con una botta).

UsaCopyRates e assicurati di controllare quanto hai ordinato e quanto hai ricevuto. Ecco un esempio:

   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
 

Ciao a tutti!

Situazione.

L'Expert Advisor è scritto, diciamo, su muwings. Quando finisci di testarlo nel tester, le muvings usate (con i parametri usati) appaiono nella finestra. Questo va bene.

Domanda.

Ma quando questo EA è anche caricato sul mercato e un utente scarica la demo, apparirà anche dopo la fine del test? O la mql ha una politica sulla privacy a questo proposito?


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

 
Anton Iudakov #:

Ciao a tutti!

Situazione.

L'Expert Advisor è scritto, diciamo, su muwings. Quando finisci di testarlo nel tester, le muvings usate (con i parametri usati) appaiono nella finestra. Questo va bene.

Domanda.

Ma quando carico lo stesso EA sul mercato e un utente scarica la demo, questi dati appariranno anche alla fine del test? O la mql ha una politica sulla privacy a questo proposito?


Certo, è più facile chiedere, ma non tutti quelli che hanno scaricato un EA sul mercato lo hanno controllato dopo.

In effetti, che differenza fa da dove è stato ottenuto il file dell'EA? Funzionerà allo stesso modo sia che sia stato scaricato da uno sviluppatore o criptato dal mercato...

 
Anton Iudakov #:

Ciao a tutti!

Situazione.

L'Expert Advisor è scritto, diciamo, su muwings. Quando finisci di testarlo nel tester, le muvings usate (con i parametri usati) appaiono nella finestra. Questo va bene.

Domanda.

Ma quando carico lo stesso EA sul mercato e un utente scarica la demo, questi dati appariranno anche alla fine del test? O la mql ha una politica sulla privacy a questo proposito?


TesterHideIndicators
 
Potete per favore dirmi come dopo avertestato un EA in MQL5 per emettere una qualsiasi delle mie statistiche in una finestra pop-up quando il mouse è sopra le frecce?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

Aiutami a riparare l'indicatore. Disegna un passo/griglia di prezzo a partire da un valore specificato. Il problema è che quando lo rimuovo, le linee rimangono sul grafico. Inoltre, non posso aggiungere un secondo indicatore come questo al grafico. In generale, come farlo rimuovere completamente dal grafico in modo che io possa lanciare lo stesso indicatore sul grafico con altri valori.

#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 #:

Aiutami a riparare l'indicatore. Disegna un passo/griglia di prezzo a partire da un valore specificato. Il problema è che quando lo rimuovo, le linee rimangono sul grafico. Inoltre, non posso aggiungere un secondo indicatore come questo al grafico. In generale, come farlo cancellare completamente dal grafico, in modo che sia possibile aggiungere lo stesso indicatore sul grafico con valori diversi.

In OnDeinit dovete fareObjectsDeleteAll- cancellare per prefisso (nel vostro caso il prefisso è "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