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

 
Vitaly Muzichenko:

Uma boa programação de "tom" é um programa sem erros ou avisos, todo o resto é amador.


Vamos deixar o bom gosto para trás. Presumo que tais advertências sejam feitas por uma razão. A questão é por quê?

 
Artyom Trishkin:
Você não vai retirar o dinheiro ganho pelo Consultor Especialista da revista. Assim, o programa deve processar os erros a fim de agir em conformidade.

Assim, o software os manipula de qualquer forma, se houver, e exibe mensagens sobre eles. O que estou perdendo aqui?

 
Andrey Sokolov:

Assim, o software os manipula de qualquer forma, se houver, e exibe mensagens sobre eles. O que estou perdendo aqui?

Não o programa, mas o terminal.
Para que o programa os processe, eles devem primeiro ser buscados. Para fazer isso, as funções comerciais retornam falsas por erro. Além disso, se o resultado da função for falso, você deve obter o código de erro GetLastError() e manipulá-lo em seu programa.
 

olá! o terminal não está autorizado! para onde ir, o que fazer?

 
kalmyk87 olá! o terminal não está autorizando! para onde ir, o que fazer?
Autorização = conexão ao servidor do corretor, você precisa ligar a internet. Se você esqueceu sua senha, abra uma nova conta. Se real - ligue para seu corretor.
 
STARIJ:
Autorização = comunicação com o servidor do corretor, você precisa ligar a Internet. Se demo - esqueça a senha, abra uma nova conta. Se real - ligue para o corretor.

Eu autorizei minha conta...mas o perfil mql5 não está autorizado por algum motivo...

 

Boa tarde. Por favor, ajude com esta pergunta...

O indicador extrai um nível branco para o dia atual do CSV. Se o preço não atingir este nível, ele (o nível) continua a ser exibido com uma linha pontilhada nos dias seguintes. Quando o preço atinge esta linha branca pontilhada no futuro, ela pára. Entretanto, após verificar os níveis não alcançados no dia seguinte, o indicador considera o nível como concluído e pára de desenhá-lo.

Gostaria que esta linha pontilhada ficasse na tabela. Obrigado.

//------------- читаю и разбираю строку из файла --

txt_data = FileReadString(file);   дата_уровней = StrToTime(txt_data+" 00:00");
if(FileIsEnding(file)==true)     break; // если конец  Выход из цикла
ArrayInitialize(d_input, 0);
for (int i=0; i<12; i++)  //== считываю уровни в массив
 {
 txt_data = FileReadString(file); 
 d_input[i] = replace_dot(txt_data);
 if ( FileIsLineEnding(file) ) break;
 }

if(уровни == Daily)
  {
   double white = d_input[4];
   t0 = дата_уровней + 1*PeriodSeconds(PERIOD_H1);
   t1 = дата_уровней + 23*PeriodSeconds(PERIOD_H1);
     Draw_Level("white", white, c_day_3, STYLE_SOLID, толщина); 
      if(показ_неотработок)
    if( !check_white_level(дата_уровней, white) )
     draw_line(t0, white, c_day_3) ;
  }
//   отображение  уровней 
void Draw_Level(string name, double _level, color _colr, int _style, int _width)
{
string o_name = i_name +"_"+ name +"_"+ TimeToStr(t0,TIME_DATE);
if (_level>0)
 {
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t0, _level, t1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _colr);
  ObjectSet(o_name, OBJPROP_STYLE, _style);
  if(_style == STYLE_DOT)   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    else     ObjectSet(o_name, OBJPROP_WIDTH, _width);
  ObjectSet(o_name, OBJPROP_RAY, false);  // луч
  ObjectSetText(o_name, DoubleToStr(_level, 4) );
  ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
   ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
   ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
 }
}
// проверка_отработки уровня
bool check_white_level(datetime t_open, double _level)
{
if (_level <= 0) return(False);
int bar0 = iBarShift(NULL, 0, t_open);
double max = High[iHighest(NULL, 0, MODE_HIGH, bar0, 0)];
double min = Low[iLowest(NULL, 0, MODE_LOW, bar0, 0)];
if( _level <= max && _level >= min )
  return(TRUE);
return(False);
}
void draw_line(datetime begin, double _level, color _clr)
{
if (_level <= 0) return;
string o_name = i_name +"_wh1_"+ TimeToStr(begin,TIME_DATE);
datetime t_0 = begin ;
datetime t_1 = TimeCurrent() ;
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t_0, _level, t_1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t_0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t_1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _clr);
  ObjectSet(o_name, OBJPROP_STYLE, STYLE_DOT);
   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    ObjectSet(o_name, OBJPROP_RAY, false);  // луч
    ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
  ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
  ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
}
 
ME AJUDE A ENTENDER O QUE É UM VÍNCULO
1) Como faço para calcular minha fiança? Como posso obter este valor na EA?
2) Como calcular uma margem para travamento? Como posso obter este valor em minha EA?
3) Como posso obter o valor da margem do bilhete de uma ordem em aberto? Eu não consegui encontrar funções como OrderMargin(), embora eu possa ver a margem sobre os pedidos no terminal (ou é mentira?).
4) O depósito é um parâmetro fixado uma vez no momento da abertura do pedido ou recalculado (flutuante) a cada novo momento de existência do pedido à taxa atual?

A fórmula para o cálculo manual do depósito está correta?
(lote_base * Lote_comercial * Lote_presente_taxa%%%%%USD) / alavancagem = margem USD
 
smart_man:
ME AJUDE A ENTENDER O QUE É UM DEPÓSITO
1) Como faço para calcular o depósito? Como posso obter este valor em minha EA?
2) Como calcular uma margem para travamento? Como posso obter este valor em minha EA?
3) Como posso obter o valor da margem do bilhete de uma ordem em aberto? Eu não consegui encontrar funções como OrderMargin(), embora eu possa ver a margem sobre os pedidos no terminal (ou é mentira?).
4) O depósito é um parâmetro fixado uma vez no momento da abertura do pedido ou recalculado (flutuante) a cada novo momento de abertura do pedido à taxa atual?

A fórmula para o cálculo manual do depósito está correta?
(lote_base * Lote_comercial * Lote_presente_taxa%%%%%USD) / alavancagem = margem USD

1)

 margin =AccountInfoDouble(ACCOUNT_MARGIN);                        //-Размер зарезервированных залоговых средств на счете  в валюте депозита

2) não utilizar

3) A fórmula é a mesma que a sua, somente que ao invés de "atual_%%%%%USD", é preço de posição aberta.

4) o parâmetro é fixo


Correção

 
Alekseu Fedotov:

1)

2) não utilizar

3) A fórmula é a mesma que a sua, somente que ao invés de "atual_%%%%%USD", é preço de posição aberta.

4) o parâmetro é fixo


Correção

Obrigado!

2) Encontramos informações de que a fórmula é a mesma, apenas no final ainda divide tudo por 2, mas não sabemos se isso é realmente verdade

3) Preço de abertura da posição, que por OrderOpenPrice() ?

5) Outra pergunta, se alguma abertura estiver planejada, então antes que todos os custos futuros da ordem tenham que ser calculados (quantidade de margem, quantidade de lucro e perda, mas aqui também precisamos calcular o valor do ponto, verificar a disponibilidade de fundos livres, limitar em porcentagem de fundos livres para risco de uma vez, eu perdi algo mais? Ou existe alguma outra maneira? Existe algum saque, deve ser calculado também?

5.1) Como calcular o valor da tubulação?

5.2) Como posso verificar se tenho algum fundo disponível?

Faço estas perguntas, porque é difícil entender por conta própria, já que existem tantas especificidades, como a contabilidade.

Razão: