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

 
new-rena:

Pergunta contrária.

Pensa que o movimento em qualquer par de moedas: gráfico, preços de compra e venda, etc., depende de um conjunto das suas variáveis?

O movimento da taxa não depende das variáveis, mas um comerciante tenta encontrar regularidades no movimento, e nesta base ele selecciona variáveis (dados de entrada) para posições de abertura, manutenção e fecho. Afinal, o sistema comercial é um conjunto de regras destinadas ao trabalho rentável. Talvez a distribuição de lucros e perdas seja aleatória, mas a sua proporção é diferente e, portanto, são formados sistemas comerciais lucrativos. Tem de ser assim.
 
Евгений:
O movimento da taxa não depende das variáveis, mas o comerciante tenta encontrar padrões no movimento, e nesta base ele escolhe as variáveis (inputs) para abrir, manter e fechar a posição. Afinal, o sistema comercial é um conjunto de regras destinadas ao trabalho rentável. Talvez a distribuição de lucros e perdas seja aleatória, mas a sua proporção é diferente e, portanto, são formados sistemas comerciais lucrativos. Acho que sim.
Basicamente, já respondeu à sua própria pergunta. Ou seja, no mesmo movimento de preços pode obter o seguinte; lucro-perda = CONST
 
sugerir uma função sobre a restrição, no Expert Advisor quero proibir a venda ou compra da média móvel.
 
KoltRU:
Aconselha-se a função de limitar, no Expert Advisor quero proibir a venda ou compra à média móvel.
Simplifiquei-o, acrescentei uma condição na abertura
 

Isto é um incómodo. A referência da matriz não é passada para a função.

void GetIndValue(int IndNo, int Vol, double *out[]){;};

Com este duplo *out[] - não importa como se escreve, todos os erros ocorrem.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - o ponteiro não pode ser usado BatIndicators.mqh 18 45

'out' - as arrays são aprovadas apenas por referência BatIndicators.mqh 18 46

2 erro(s), 0 aviso(s) 3 1

um ou o outro ou ambos. Lembro-me que não havia nenhum problema antes, ou está em C. )


 
Yuriy Asaulenko:

Isto é irritante. A referência da matriz não é passada para a função.

Com este duplo *out[] - não importa como se escreve, todos os erros ocorrem.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - o ponteiro não pode ser usado BatIndicators.mqh 18 45

'out' - as arrays são aprovadas apenas por referência BatIndicators.mqh 18 46

2 erro(s), 0 aviso(s) 3 1

um ou o outro ou ambos. Lembro-me que não havia nenhum problema antes, ou está em C. )


Experimente desta forma

void GetIndValue(int IndNo, int Vol, double &out[]){}
 
Andrey Barinov:

Experimente isto

Obrigado.
 

//--- obter o número da nova subjanela, na qual tentaremos adicionar indicador

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Este é o código que estou a ver em https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

O exemplo mostra como colocar um indicador numa subjanela. Se não precisa de uma subjanela, basta usar o exemplo muwig para mostrar como o fazer?

Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Antoshkin:

//--- obter o número de uma nova subjanela, na qual tentaremos adicionar um indicador

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Este é o código que estou a ver em https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

O exemplo mostra como colocar um indicador numa subjanela. Se não precisa de uma subjanela, basta usar o exemplo muwig para ver como o fazer?

Se quiser adicionar o indicador à janela principal, então:

sub_janela

[em] Número da subjanela do gráfico. 0 significa janela do gráfico principal. Para adicionar um indicador a uma nova janela, o parâmetro deve ser mais um do que o índice da última janela existente, ou seja, igual aCHART_WINDOWS_TOTAL. Se o valor do parâmetro exceder o valorCHART_WINDOWS_TOTAL, não será criada uma nova janela, o indicador não será adicionado.

 
Karputov Vladimir:

Se precisar de adicionar um indicador à janela principal, então:

//+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

input int MA_Period=21; 
input int MA_Shift=0; 
input ENUM_MA_METHOD MA_Method=MODE_SMA;

int MA_handle=INVALID_HANDLE; 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
  
   MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
//--- попробуем добавить индикатор на график 
AddIndicator();

   return(INIT_SUCCEEDED); 
  } 

//+------------------------------------------------------------------+ 
//| Функция проверки и добавления индикатора на график               | 
//+------------------------------------------------------------------+ 
bool AddIndicator() { if(MA_handle==INVALID_HANDLE) 
{ Print(__FUNCTION__,"  Создаем индикатор ");

 MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
if(MA_handle==INVALID_HANDLE) 
{ 
 Print("Не удалось создать индикатор . Код ошибки ",GetLastError()); 
 } 
  }     
//--- сбросим код ошибки 
   ResetLastError(); 
//--- накладываем индикатор на график 
  
   Print("Mа построен "); 
//--- получим номер нового подокна, в которое добавим индикатор  
   int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); 
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow); 
   if(!ChartIndicatorAdd(0,subwindow,MA_handle)) 
     { 
      PrintFormat("Не удалось добавить индикатор  на окно %d графика. Код ошибки  %d", 
                  subwindow,GetLastError()); 
     } 
   return(true); 
  } 
void OnDeinit(const int reason)
{
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );

Olá Vladimir.

Devo ter formulado a minha pergunta de forma incorrecta.

Não preciso de uma sub-janela, o indicador deve ser colocado na tabela de preços, como um gráfico padrão

Vejo-o como um exemplo e tento compreender .

Quero que o indicador montado no gráfico tenha o seu próprio número, para que o número necessário de cópias possa ser criado no gráfico usando o botão "Adicionar" ..... Quero apagar um seleccionado pelo botão "cross" ........ (ainda não os quero descrever))