Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1341

 
ver o que diz o código retcode após o envio da encomenda
 
Fast235 #:
ver o que diz o código retcode após o envio da encomenda

Obrigado.

10018

TRADE_RETCODE_MARKET_CLOSED

O mercado está fechado.

Isto significa que existe um problema com o corretor.

 

Saudações, por favor não me dêem muitos pontapés)
Eu tenho um EA. Quero implementar nela a função de abrir uma posição, se em vários pares de moedas, uma barra com índice 1, tiver a mesma direcção (em alta ou em baixa).
Estou a tentar fazê-lo com 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;
}


Então, qual éa formacorrecta de procurar combinações de barras em baixa e em alta ao mesmo tempo? Mais uma vez, por favor, não lhe batam com muita força).

 
Scarick #:

Saudações, por favor não me dêem muitos pontapés)
Eu tenho um EA. Quero implementar nela a função de abrir uma posição, se em vários pares de moedas, uma barra com índice 1, tiver a mesma direcção (em alta ou em baixa).
Estou a tentar fazê-lo com 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;

Então, qual éa formacorrecta de procurar combinações de barras em baixa e em alta ao mesmo tempo? Mais uma vez, por favor, não me batam com um murro).

UseCopyRates, e certifique-se de que controla quanto encomendou e quanto recebeu. Aqui está um exemplo:

   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
 

Olá a todos!

Situação.

O Expert Advisor está escrito, digamos, sobre os muwings. Quando se termina de o testar no aparelho de ensaio, os aparelhos utilizados (com parâmetros utilizados) aparecem na janela. Não há problema.

Pergunta.

Mas quando esta EA também é carregada no Mercado e um utilizador descarrega a demonstração, irá também aparecer após o final do teste? Ou será que a mql tem uma política de privacidade a este respeito?


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

 
Anton Iudakov #:

Olá a todos!

Situação.

O Expert Advisor está escrito, digamos, sobre os muwings. Quando se termina de o testar no aparelho de ensaio, os aparelhos utilizados (com parâmetros utilizados) aparecem na janela. Não há problema.

Pergunta.

Mas quando carrego o mesmo AE para o Mercado e um utilizador descarrega a demonstração, estes dados também aparecerão no final do teste? Ou será que a mql tem uma política de privacidade a este respeito?


É claro que é mais fácil perguntar, mas nem todos os que descarregaram um EA para o mercado o verificaram posteriormente.

Na verdade, que diferença faz de onde foi obtido o ficheiro da EA? Funcionará da mesma forma quer tenha sido descarregado de um programador ou codificado a partir do mercado...

 
Anton Iudakov #:

Olá a todos!

Situação.

O Expert Advisor está escrito, digamos, sobre os muwings. Quando se termina de o testar no aparelho de ensaio, os aparelhos utilizados (com parâmetros utilizados) aparecem na janela. Não há problema.

Pergunta.

Mas quando esta EA também é carregada no Mercado e um utilizador descarrega a demonstração, irá também aparecer após o final do teste? Ou será que a mql tem uma política de privacidade a este respeito?


TesterHideIndicators
 
Pode dizer-me como é que, depois detestar uma EA em MQL5, pode emitir qualquer uma das minhas estatísticas numa janela pop-up quando o rato está por cima das setas?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

Ajude-me a fixar o indicador. Extrai uma etapa/grande de preço a partir de um valor especificado. O problema é que quando o retiro, as linhas permanecem na tabela. Além disso, não posso acrescentar um segundo indicador como este ao gráfico. Em geral, como posso fazê-lo remover completamente do gráfico para que o mesmo indicador possa ser atirado para o gráfico com outros valores.

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

Ajude-me a fixar o indicador. Extrai uma etapa/grande de preço a partir de um valor especificado. O problema é que quando o retiro, as linhas permanecem na tabela. Além disso, não posso acrescentar um segundo indicador como este ao gráfico. Em geral, como fazê-lo apagar completamente do gráfico, de modo a que seja possível adicionar o mesmo indicador no gráfico com valores diferentes.

No OnDeinit precisa de fazerObjectsDeleteAll- apagar por prefixo (no seu caso o prefixo é "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
Razão: