Erros, bugs, perguntas - página 398

 

Em várias construções recentes (incluindo 458), dois problemas de teste foram consistentemente observados numa das duas máquinas:

1) Erro de arranque do agente:

EM 0 Core 1 11:44:11 processo de agente iniciado
QN 0 Core 1 11:44:11 ligando a 127.0.0.0.1:3000
KI 0 Core 1 11:44:15 ligado
HO 2 Core 1 11:44:17 erro de sincronização do agente testador
GM 2 Core 1 11:44:17 desconectado
LK 0 Core 1 11:44:17 ligação fechada

CQ 0 Tester 11:44:14 MetaTester 5 build 450 (16 de Maio de 2011)
Servidor MP 0 11:44:14:14 MetaTester 5 iniciado em 127.0.0.0.1:3000
LI 0 Arranque 11:44:14 Inicialização concluída
MR 2 127.0.0.1 11:44:18 tomada fechada
EI 0 127.0.0.1 11:44:18 login (construir 450)
EJ 0 Testador 11:44:19 agente testador desligado

2) O terminal não responde (ampulheta) durante cerca de 30 segundos quando se acede ao separador dos agentes.

Há um pressuposto de que os problemas estão relacionados com o processador de núcleo único ou com a falta de agentes remotos (remotos).

 
stringo:
Na verdade, a construção do 458 já foi lançada.

por isso sim... Mas o problema mantém-se:

2011.05.27 19:19:57 Core 2 agente lento falhou
2011.05.27 19:19:57 Núcleo 2 ligação fechada
2011.05.27 19:19:57 Core 2 agente demasiado lento. tempo ocupado é 3703 ms. tempo médio é 915 ms.
2011.05.27 19:19:55 Core 1 agente lento falhou
2011.05.27 19:19:55 Núcleo 1 ligação fechada
2011.05.27 19:19:55 Core 2 sincronização comum concluída
2011.05.27 19:19:54 Core 1 agente demasiado lento. tempo ocupado é de 3672 ms. tempo médio é de 915 ms.
2011.05.27 19:19:53 iRU1 agente lento falhou
2011.05.27 19:19:53 iRU1 ligação encerrada
2011.05.27 19:19:53 Core 2 autorizado (agente build 458)
2011.05.27 19:19:53 Core 2 conectado
2011.05.27 19:19:53 iRU1 agente demasiado lento. tempo ocupado é de 3672 ms. tempo médio é de 915 ms.

 
MONTEGRO:

por isso sim... Mas o problema mantém-se:

Vamos continuar a pensar.
 

Por favor, esclareça as seguintes nuances:

1. algoritmo de verificação/processamento de SL/TP ao enviar uma transacção adicional. Clarificação pelo exemplo.

Nota: todos os pedidos comerciais têm o parâmetro ORDER_FILLING_AON; já existe uma posição longa.

Cenário #1. Quero comprar mais (claro, para o mesmo símbolo). Envio um comércio com volume adicional e SL/TP ajustado. Se o pedido for executado com sucesso, o resultado será: lote adicional + SL/TP actualizado?

Cenário #2. Quero vender. Submeto uma transacção com um lote menor sem especificar SL/TP (SL/TP = 0). A posição restante terá o seu lote reduzido + SL/TP removido?

Cenário #3. O mesmo que o cenário #2, tentando apenas estabelecer limites SL/TP (conscientemente impossível para uma posição longa). Resultado?

2. Algoritmo para verificar o volume de uma troca. esclarecer com um exemplo.

Haverá alguma alteração na combinação "lote mínimo/passo de lote mínimo"?

Notas: Todos os pedidos comerciais têm o parâmetro ORDER_FILLING_CANCEL ouORDER_FILLING_RETURN; já existe uma posição longa de 1,0; min.lot = 0,1; min.step = 0,01;

Cenário 1. Estou a tentar sair do mercado (fechar uma posição existente com um comércio inverso do mesmo tamanho). O mercado é de notícias, por isso tento retirar pelo menos um pouco (ORDER_FILLING_CANCEL ou ORDER_FILLING_RETURN), uma vez que toda a quantia tem pedidos. O acordo é parcialmente a 0,99 lotes. Assim, para fechar completamente a posição, preciso de enviar um acordo com 0,01 lote, enquanto que eu não posso - o min.lot é 0,1. Isto é, devo primeiro adicionar 0,09 lote para obter 0,1 e depois tentar fechá-lo (já com ORDER_FILLING_AON)?

Cenário #2. Quando um comércio foi parcialmente fechado e o volume da posição restante é inferior ao passo mínimo (conclusão parcial a 0,999 lote, e 0,001 lote permanece "pendurado"). Haverá uma tal situação?

P.S. Idealmente, gostaria de ver alguma lógica unificada de estabelecimento de ordens que "fechasse" todos os casos teoricamente possíveis. Não o consegui encontrar na documentação, talvez me tenha escapado...

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
uncleVic:

Não há erro na biblioteca. Há duas subtilezas de trabalhar com dados indicadores utilizando a classe (que podem não estar totalmente descritas na ajuda).

1. A fim de disponibilizar dados indicadores através da classe, a classe deve copiar estes dados do indicador. Para o fazer, chamar o método Refresh(int) se tiver a mais pequena suspeita de que os dados tenham mudado. No seu caso:

2. A fim de disponibilizar dados indicadores através da classe a uma "profundidade" suficiente, é necessário definir os tamanhos dos amortecedores (por defeito os tamanhos dos amortecedores são 256). Para o fazer, depois de criar o objecto, chamar o método BufferResize(int). No seu caso:

Desculpe se é confuso. Responderei a perguntas adicionais.

Podem dar-me pelo menos um simples código de indicador usando uma biblioteca padrão, devido à falta de documentação e exemplos que não consigo entender como funciona. Por exemplo, desenha setas verdes sob cada barra quando tenkan sen>kijun sen e estão acima da nuvem e vermelhas quando tenkan sen<kijun sen e estão abaixo da nuvem.
Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

Flexibilidade das definições da interface - há uma sugestão para tornar o mt5 mais flexível para o utilizador, em termos de definições para exibir nomes de símbolos, mais especificamente - a capacidade de renomear qualquer um, ou seja, não - não gbpusd - mas ... - Por exemplo - não gbpusd mas ... libra", bem como barras divisórias tais como - moeda e seta para baixo, metais, acções, o que não teria sido tudo em uma pilha, na barra divisória pode mesmo adicionar mini ícones, tais como moeda, o sinal de uma libra ou um pequeno papel verde, metais - bem dourado pequenas barras, etc. Aproximadamente. tais configurações de flexibilidade cores, lâminas e vidros disponíveis na plataforma "Pro Trader", espero não soar como publicidade, porque o seu no texto , claro, mais fácil e melhor... :)
Também seria bom se pudesse mudar o fundo, sob o símbolo da lista de símbolos, bem como a mudança de cor, por exemplo um grande destaque um fundo preto e uma fonte branca, média, azul e branca e totalmente sem importância, uma vez que há preto sobre branco ...

 
Graff:
Podem dar-me pelo menos o código de indicador mais simples utilizando a biblioteca padrão, devido à falta de documentação e exemplos que não consigo entender como funciona. Por exemplo, desenha setas verdes sob cada barra quando tenkan sen>kijun sen e estão acima da nuvem e vermelhas quando tenkan sen<kijun sen e estão abaixo da nuvem.
Anexe o seu "peixe" e, brevemente, os seus desejos. Se possível (não posso prometer rapidamente) vou dar uma vista de olhos.
 

papaklass:

Algoritmo 2:

1. posições próximas em múltiplos do volume mínimo permitido. O seu exemplo de 0,99 lotes não é possível, pois o lote mínimo é de 0,1 lote. Outros participantes no mercado estabelecem as suas ordens como múltiplos de 0,1 lote. Portanto, o seu exemplo não é possível.

2. ver ponto 1.

Portanto, quer dizer que se após a execução da ordem o volume da posição se tornar inferior ao mínimo, então esta ordem será rejeitada.

Nos servidores MQ, o passo=lote mínimo=0,01. Existem outros exemplos em que o passo<lote mínimo? Para verificar o comportamento do terminal.

Não se pode esperar qualquer resposta por parte dos criadores.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Graff:
Podem dar-me pelo menos o código de indicador mais simples utilizando a biblioteca padrão, devido à falta de documentação e exemplos que não consigo entender como funciona. Por exemplo, desenha setas verdes sob cada barra quando tenkan sen>kijun sen e estão acima da nuvem e vermelhas quando tenkan sen<kijun sen e estão abaixo da nuvem.

este exemplo de trabalho com bibla - basta construir a linha tenkan
A partir daqui será mais fácil para si adicionar mais 4 amortecedores por analogia e analisá-los (para as setas).

Nota: existem pelo menos duas outras formas de tomar valores tampão indicadores para além da indicada acima. O mostrado não é o único possível

#property indicator_chart_window
#property indicator_buffers  1
#property indicator_plots    1
#property indicator_color1   clrRed
#property indicator_type1    DRAW_LINE

#include <Indicators\Trend.mqh>  // подключили библу

input int tenkan=9;
input int kijun=26;
input int senkou=52;

CiIchimoku ichi; // объект индюка
int h; // его хендл

double Tenkan[]; // буфер для тенкана
//------------------------------------------------------------------
int OnInit()
{
  SetIndexBuffer(0, Tenkan, INDICATOR_DATA);
  ArraySetAsSeries(Tenkan, true);

  ichi.Create(Symbol(), Period(), tenkan, kijun, senkou); // создали буфера
  h=ichi.Handle(); // получили хендл
  return(0);
}
//------------------------------------------------------------------
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[])
{
  ichi.Refresh(0); // обновили индюк

  if(BarsCalculated(h)<rates_total) return(0); // если расчет не нужен
        
  int to_copy; // определяем число баров для копирования
  if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total; 
  else { to_copy=rates_total-prev_calculated; to_copy++; }

  // Номера буферов: 0 - TENKANSEN_LINE, 1 - KIJUNSEN_LINE, 2 - SENKOUSPANA_LINE, 3 - SENKOUSPANB_LINE, 4 - CHINKOUSPAN_LINE.
  if (CopyBuffer(h,0, 0,to_copy, Tenkan)<=0) { Print("ошибка"); return(0); }

  return(rates_total);
}
 
uncleVic:

há uma falha nas aulas e na ajuda - as bandeiras da função Refresh não são descritas
Razão: