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

 
Aleksey Vyazmikin #:

Na base de código, há Expert Advisors e indicadores que foram originalmente escritos no MT4 e depois reescritos no MT5 - você pode usá-los para treinamento.

Em muitos aspectos, as linguagens são semelhantes. Defina a tarefa de reescrever o código que você entende no MT5 e use ativamente a pesquisa nas instruções e no portal - você sempre encontrará a resposta, inclusive nos artigos.

Muito obrigado por seu valioso conselho. Se não se importar, envie-me um link para o Expert Advisor (não o indicador) que estava no 4 e depois passou a estar no 5 (se for possível no mais simples), ou o próprio EA no 4 e depois o mesmo no 5
Comecei a estudar. Percebi que as operações de negociação para um iniciante são mais fáceis de abrir na classe de negociação STrade e até consegui abrir ordens e negócios com a ajuda dessa classe
Mas assim que condicionei a abertura de uma ordem, as ordens pararam de abrir. Aqui está o código que abria as ordens quando não havia condições.

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

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

Ainda não entendi esse ponto.... Quando as ordens BAY eram abertas, elas eram fechadas, pelo que entendi, por ordens contrárias CEL. E não entendo de onde o código tirou a informação sobre quantos pips para fechar as ordens, porque não especifiquei o tamanho do SL e do TP em lugar algum e não especifiquei a função de fechamento de ordens. Suspeito que essas informações estejam escritas em algum lugar de algum arquivo anexado, ou seja, em alguma classe ou estrutura. Se for esse o caso, como encontrar esse local para fazer alterações nos parâmetros da ordem aberta?

Mais uma vez, obrigado por sua ajuda

 
ANDREY #:

Muito obrigado por seu valioso conselho. Se não se importar, por favor, me envie um link de um Expert Advisor (não um indicador) que estava no 4 e depois passou a estar no 5 (se puder no mais simples), ou o próprio Expert Advisor no 4 e depois o mesmo no 5
Comecei a estudar. Percebi que as operações de negociação para um iniciante são mais fáceis de abrir na classe de negociação STrade e até consegui abrir ordens e negócios com a ajuda dessa classe
Mas assim que condicionei a abertura de uma ordem, as ordens pararam de abrir, por favor, me diga o que fiz de errado. Aqui está o código que abria as ordens quando não havia condições.

Ainda não entendi esse ponto.... Quando as ordens BAY eram abertas, elas eram fechadas, pelo que entendi, por ordens contrárias CEL. E não entendo de onde o código tirou a informação sobre quantos pips para fechar as ordens, porque não especifiquei o tamanho do SL e do TP em lugar algum e não especifiquei a função de fechamento de ordens. Suspeito que essas informações estejam escritas em algum lugar de algum arquivo anexado, ou seja, em alguma classe ou estrutura. Se for esse o caso, como encontrar esse local para fazer alterações nos parâmetros da ordem aberta?

Mais uma vez, obrigado por sua ajuda

Só posso dar conselhos - nasci no país dos soviéticos...

Procure-o - aqui está uma opção.

Eu mesmo ainda não aprendi todas as nuances das operações comerciais - encomendei uma aula de autônomo há muitos anos e a utilizo com pequenas modificações.

 
Aleksey Vyazmikin #:

Só posso dar um conselho - nasci na terra dos soviéticos....

Você pode pesquisar, essa é uma opção.

Eu mesmo ainda não aprendi todas as nuances das operações comerciais - encomendei um curso de autônomo há muitos anos e o utilizo com pequenas modificações.

Entendi. Obrigado por suas valiosas informações

 
ANDREY #:

Muito obrigado por seu valioso conselho. Se não se importar, envie-me um link para um Expert Advisor (não um indicador) que estava no 4 e depois passou a estar no 5 (se puder, no mais simples), ou o próprio EA no 4 e depois o mesmo no 5.

Aqui está o mais simples. Ele é chamado assim. Ele tem tanto o código MQL5 quanto o MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Aqui está o mais simples. Esse é o seu nome. Ele contém códigos MQL5 e MQL4.

Obrigado por sua ajuda.

 
ANDREY #:

Mas assim que condicionei a abertura de uma ordem, as ordens pararam de abrir. Aqui está o código que abria as ordens quando não havia condições.

Ainda não entendi esse ponto.... Quando as ordens BAY eram abertas, elas eram fechadas, pelo que entendi, por ordens contrárias CEL. E não entendo de onde o código tirou a informação sobre quantos pips para fechar as ordens, porque não especifiquei o tamanho do SL e do TP em lugar algum e não especifiquei a função de fechamento de ordens. Suspeito que essas informações estejam escritas em algum lugar de algum arquivo anexado, ou seja, em alguma classe ou estrutura. Se for esse o caso, como encontrar esse local para fazer alterações nos parâmetros da ordem aberta?

Mais uma vez, obrigado por sua ajuda

Você declarou a estrutura MqlDateTime, mas não a inicializou; agora ela está vazia ou não serve para nada.

É assim que ele abrirá posições de compra em cada tick a partir das 10:00 horas, por um minuto. Depois, às 11:00, começará a abrir posições de compra por mais um minuto.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Esse código não pode fechar posições, pois não há nada parecido com isso dentro da classe CTrade.
 
Aleksandr Slavskii #:

Você declarou a estrutura MqlDateTime , mas não a inicializou; agora ela está vazia ou é um lixo.

É assim que ele abrirá posições de compra em cada tick a partir das 10:00 horas, por um minuto. Depois, às 11:00, começará a abrir mais posições de compra por um minuto.

Esse código não pode fechar posições, pois não há nada parecido com isso dentro da classe CTrade.

Muito obrigado.... Você me deixou muito mais avançado no domínio do 5. Você diz que esse código não pode fechar posições. Mas se você remover todas as condições, as posições serão abertas e fechadas por ordens de contador CEL...., pelo que entendi. Então, qual comando de código é usado para fechar as ordens? De onde o programa obtém os dados para fechar as ordens exatamente após um determinado número de pontos ou na ocorrência de algum evento? Eu nem mesmo entendo por qual regra ele as fecha.

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

void OnTick()
{
trade.Buy(0.1);
}

Também notei que as ordens SEL, que são usadas para fechar ordens BAY, por algum motivo têm um número de tíquete muito distante do número de tíquete da ordem BAY que estão fechando. Por exemplo, a primeira ordem BAY tem o tíquete 2, mas a ordem CEL que a fecha tem um tíquete não 3 (o que seria lógico), mas 91779 por algum motivo.

E se você abrir apenas uma ordem, tudo se tornará lógico. A ordem BAY tem o número 2, e a ordem CEL de fechamento tem o número 3.

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Muito obrigado.... Você me fez progredir muito no domínio do 5. Você diz que esse código não pode fechar posições. Mas se você remover todas as condições, as posições serão abertas e fechadas por ordens de contador CEL...., pelo que entendi. Então, qual comando de código é usado para fechar as ordens? De onde o programa obtém os dados para fechar as ordens exatamente após um determinado número de pontos ou na ocorrência de algum evento? Eu nem mesmo entendo por qual regra ele as fecha.

Também notei que as ordens SEL, que são usadas para fechar ordens BAY, por algum motivo têm um número de tíquete muito distante do número de tíquete da ordem BAY que estão fechando. Por exemplo, a primeira ordem BAY tem o tíquete 2, mas a ordem CEL que a fecha tem um tíquete não 3 (o que seria lógico), mas 91779 por algum motivo.

E se você abrir apenas uma ordem, tudo se tornará lógico. A ordem BAY tem o número 2, e a ordem CEL de fechamento tem o número 3.


Bem, é difícil entender o que está acontecendo, mas acho que você abre mais posições do que o permitido pela corretora nesse instrumento e o testador começa a fechar as posições extras.

Na verdade, ele não deveria abrir essas posições extras. Mas não consigo explicar de outra forma o que está acontecendo com você.


Também não entendo uma posição. Por que ela fecha no final do dia. Talvez sua corretora proíba a transferência de posições para o dia seguinte.

 
Aleksandr Slavskii #:

Bem, é difícil entender o que está acontecendo, mas acho que você abriu mais posições do que o permitido pela corretora nesse instrumento e o testador começou a fechar as posições extras.

Na verdade, ele não deveria abrir essas posições extras. Mas não consigo explicar o que está acontecendo de outra forma.


Também não entendo uma posição. Por que ela fecha no final do dia. Talvez sua corretora não permita que você transfira posições para o dia seguinte.

Obrigado. A explicação parece muito lógica. Em uma quadra com exatamente o mesmo código e o mesmo período, acontece a mesma coisa, só que as ordens não são fechadas com uma contraordem. Minha corretora é a Alpari. Depois de suas explicações, ficou claro por que os números de ordens de fechamento de contador diferem tanto das ordens que fecham. Porque todas as ordens de fechamento são abertas bem no final, depois de todas as ordens de fechamento.

 

Boa tarde a todos!
Estou tentando aprender a colocar ordens no five usando a classe CTrade, pois me pareceu que essa é a maneira mais rápida e fácil de defini-las. Para ser mais preciso, estou tentando aprender como definir o parâmetro STOPLOSS. No quatro, o último preço de oferta foi armazenado no Bid predefinido e, no cinco, pelo que entendi, o último preço de oferta não é armazenado, mas, se não me engano, como uma das opções, é calculado no método Bid da classe CSymbolInfo. Mas para que esse método calcule o preço, o Symbol deve ser previamente selecionado pelo método Name. Eu entendo como o método Name funciona , pois nele você precisa inserir o nome do símbolo ou NULL e ele retornará false ou true.

Mas não consigo entender como e onde combinar o método Name e o método Bid, de modo que o preço Bid seja armazenado na variável c

Em quatro ordens foram selecionadas usando a função Select(), mas em cinco ordens deveriam ser selecionadas não as ordens, mas o símbolo..... Não entendo como fazer isso

Ficaria muito grato se você pudesse escrever um fragmento no meu código para salvar o preço Bid na variável with, que eu uso no parâmetro SL do método Btsu da classe CTrade.

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5