[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 548

 
artmedia70 писал(а) >>
O que é o erro 4051 e como capturá-lo?


https://docs.mql4.com/ru/constants/errors

ERR_INVALID_FUNCTION_PARAMVALUE 4051 Valor inválido do parâmetro da função

 
artmedia70 >>:
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)


Não. Eu sugeri que você desmontasse um pedaço de código que não funciona. Desmontar em cada detalhe. Em vez disso, o código inteiro foi estabelecido. :)

Eu não vou me esconder em nenhum arbusto. >> Passo a citar:

>> Vamos desmontar linha por linha um pedaço de seu código que não funciona corretamente...

>> devemos nós?

Aqui estão minhas palavras. Em vez de uma peça que não funciona, você colocou um monte de coisas incompreensíveis - alguns conjuntos de funções. Isso é o que eu não gosto.

 

De modo geral, para encontrar um erro, é necessário bloquear algumas partes do código. Por exemplo, o código é composto pelos seguintes blocos:

- Verificação de blocos para sinais comerciais

- Bloqueio de abertura/fecho/ inversão de ordens

- Bloquear a manutenção de posições abertas.

Bloqueamos os dois últimos blocos usando o comentário de múltiplas linhas /**/, executamos a EA e usamos a impressão ou alerta para verificar os valores das variáveis-chave - apenas para garantir que este bloco funcione corretamente. Se encontrarmos um erro, conserte-o. Em seguida, desbloquear o próximo bloco de código e repetir o procedimento. E assim por diante até que o código inteiro seja depurado. O outro caminho seria mais entediante.

 
drknn >>:

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

- Блок проверки наличия торгового сигнала

- Блок открытия/закрытия/переворота ордеров

- Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.

Sim, obrigado, eu já estou familiarizado com isso... Estou um pouco carente de conhecimento. E eu afixei todo o código simplesmente porque não sei qual parte dele não funciona. Não tem necessariamente que ser o originalmente publicado. Obrigado por sua participação... :)
 
Você poderia aconselhar como adicionar um indicador em um Expert Advisor para obter dados de cf h4?
#property copyright "Krokus"
#property link      ""
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int       N=20; // период канала 
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit;
   double upPrice,downPrice;
//---- 
   if (counted_bars==0) limit=Bars-N;
   if (counted_bars>=0) limit=Bars-counted_bars;
   limit--;
   for(int i=limit;i>=0;i--)
     {
      upPrice=High[iHighest(Symbol(),0,MODE_HIGH,N,i)];//максимум за N баров 
      downPrice=Low[iLowest(Symbol(),0,MODE_LOW,N,i)]; //минимум за N баров 
      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
no código do examinador, não na chamada
 
Andrei01 >>:
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.

Criar um indicador iCustom vazio com uma janela separada e chamá-lo da EA,

Se você não tiver uma janela, então você dá um comando para desenhar, e não há necessidade de fazê-lo.

A única coisa a se prestar atenção é a escala,

A maneira mais fácil é colocar dois amortecedores na cor de fundo,

Em uma janela você atribui o máximo e na outra o mínimo, é conveniente e você pode ajustá-lo a partir do parâmetro externo do indicador.

 
sllawa3 >>:
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
     {
      int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL

      upPrice=iHigh( NULL, 240,  iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров 
      downPrice=iLow( NULL, 240,  iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров 

      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
para calcular o TF (H4) correto independentemente do gráfico, algo como isto
 
isto não vai funcionar... O limite não é prescrito e como prescrevê-lo ?
int    counted_bars=IndicatorCounted();
тоже в эксперте не потянет
 
Barril!!! As posições abertas são cada uma delas arrastradas, enquanto se fecham em TP e SL "de outras pessoas". Conseqüentemente, é uma bagunça... Como posso ganhar?