Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 901

 

Citação do manual de instruções:

//+------------------------------------------------------------------+

//|Função de iniciação de especialista|
//+------------------------------------------------------------------+
intOnInit()
{
//--- obter o valor do indicador personalizado
valor duplo=iCustom(_Símbolo,_Período,"::Indicadores de AmostraIndicador.ex4",0,0)

Referência a variáveis indicadoras na função de inicialização, não na função de inicialização?Referência a variáveis indicadoras na função de inicialização abre apenas uma posição.

 
Está ficando tarde. Artem, você será capaz de responder amanhã? Agradecemos antecipadamente.
 
Oleg Kolesov:

Citação do manual de instruções:

//+------------------------------------------------------------------+

//|Função de iniciação de especialista|
//+------------------------------------------------------------------+
intOnInit()
{
//--- obter o valor do indicador personalizado
valor duplo=iCustom(_Símbolo,_Período,"::Indicadores de AmostraIndicador.ex4",0,0)

Referência a variáveis indicadoras na função de inicialização, não na função de inicialização?Referência a variáveis indicadoras na função de inicialização abre apenas uma posição.

Ao invés de começar, é hora de usar OnTick() e outros manipuladores de eventos. Esqueça as funções do antigo MetaTrader 4. A nova MQL4 está agora muito próxima da MQL5 - as únicas diferenças estão em uma organização diferente de funções e indicadores comerciais - eles são agora criados no manipulador OnInit() - um manipulador de indicadores é criado e o acesso aos dados a este manipulador é realizado. Na MQL4 é diferente. Mas os recursos são localizados da mesma forma, se minha memória não mudar.

E o acesso aos dados calculados não é muito diferente do acesso através do iCustom() de uma maneira usual - seu nome é apenas ligeiramente diferente.
Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
//|                                                   TradeByATR.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Oleg Kolesov:
Está ficando tarde. Artem, você será capaz de responder amanhã? Agradecemos antecipadamente.

Sem promessas - ocupado.

Tarde ... são 04:51 ... isso é "tarde".

 
Artyom Trishkin:
  1. O preço de fixação do pedido não é normalizado.
  2. Todos os preços devem ser verificados para StopLevel - se a distância do pedido em pontos do preço for menor que o valor do StopLevel, haverá um erro 130 - paradas inválidas

Acho que o problema não é com o StopLevel, pois ele ainda abre um pedido. Mas nos próximos tiquetaques ele gera erro

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include  <Init_Deinit.mqh> 

// Переменные
extern double lots    = 0.01;
extern int    Level   = 300;
extern double StopL   = 300;
extern double TakeP   = 1000;


// Start Programm
void OnTick() 
  { 
  //--- вычисленные значений для BuyStop
   
   double price_buystop=NormalizeDouble (Ask+Level*Point, Digits);
   StopL =NormalizeDouble(price_buystop-StopL*Point,Digits); 
   TakeP =NormalizeDouble(price_buystop+TakeP*Point,Digits); 
   
//--- Размещаем отложный ордер BuyStop
   int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price_buystop,3,StopL,TakeP,"Rupture",1111,0,clrGreen); 
   if(ticket<0) 
     { 
      Print("BuyStop завершилась с ошибкой #",GetLastError()); 
          } 
   else 
      Print("Функция BuyStop успешно выполнена"); 
      }
 
Doszhan:

Acho que o problema não é com o StopLevel, pois ele ainda abre um pedido. Mas nos próximos tiquetaques ele gera erro

Você precisa verificar se o preço é menor do que o stop loss ou spread, então é claro que haverá um erro. Este é o primeiro.

A julgar pelo texto, você não tem uma verificação se a ordem já foi aberta ou não.

Desta forma, ela se abrirá até o infinito a cada tique.

 
Oleg Kolesov:

H=iCustom(NULL,TF,"::Indicadores\\KChange.ex4",History,Period_1,Period_2,MA_method,0,1);

O compilador não encontrou nenhum erro, mas o testador trabalha muito mais lentamente? É normal?

//-----------------------------------------------------------------------------------------------------------------

O manual MQL4 diz: referência a variáveis na função de inicialização?

Referência a variáveis indicadoras na função de inicialização, não na função de início? Pessoas experientes me dizem, por favor!

se lento, você precisa otimizar-acelerar o indicador

você precisa ligar para onde deseja verificar os valores indicadores, nainicialização somente um valor será recebido

 
nalyk:

Você está procurando por um fractal na terceira barra, ele pode não estar lá. Procure o primeiro fractal do ciclo.


Isto também não funciona. O pedido é feito com base no alto-baixo de 2 velas.
 
Valerius:

Você precisa verificar se o preço é menor do que o stop loss ou spread, então é claro que haverá um erro. Este é o primeiro.

A julgar pelo texto, você não tem uma verificação se a ordem já foi aberta ou não.

Caso contrário, ela se abrirá indefinidamente a cada tique.

Exatamente, não abre em cada tic-tac, abre apenas uma vez.
 
Doszhan:
Exatamente, não abre em cada tic-tac, abre apenas uma vez.

algum erro 130 no diário de bordo?

Explicação acima de onde vem e como fazer a coisa certa para evitá-lo.

Você não o fez.