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

 
Igor Makanu:

A ajuda da MQL é a mesma que outros idiomas

e assume que você tem pelo menos alguma experiência básica em escrever códigos simples

é por isso que a palavra "// placeholder" a maioria das pessoas nem sequer a testam e a verificam.

ushortfill_symbol='filler'// filler

E é tudo.

 
awsomdino:

Isto significa que aqui e em casos como este, você pode deixar este campo de fora?

como

(ou seja, como é correto utilizá-lo)

e o segundo parâmetro pode ser omitido.

Não, não é isso.

existe algo como "o valor padrão" - você deve ler sobre isso na ajuda, onde o termo "função" é explicado

mas usar" o valor padrão" é simples: se a ajuda na descrição da função tiver um sinal = , então este é o valor padrão, e se você mesmo não escrever nada neste lugar, o compilador usará o valor escrito na ajuda

string  IntegerToString(
   long    number,              // число
   int     str_len=0,           // длина строки на выходе
   ushort  fill_symbol=' '      // заполнитель
   )
 

@Igor Makanu

Obrigado, muita coisa está clara agora. Sem o conhecimento inicial, é difícil fazer tudo

 
Artyom Trishkin:

Uma média móvel simples com período 14, turno 0, calculada a partir dos preços de fechamento no gráfico diário do símbolo atual. Tomamos o valor da primeira barra (sendo zero o dia atual):

Há alguma maneira de se chegar rapidamente às médias móveis do preço no meio entre a abertura e o fechamento com 0 turno, você quer dizer a barra atual? Ou se é complicado, não há variáveis prontas para esta função.

 

Bom dia para todos.

Ao fechar parcialmente um pedido, a mensagem de alerta "OrderClose (28800839, 0.01) erro (método: CloseOrderPartial) - trade is not allowed in the expert properties" aparece na janela de alerta.

Entretanto, uma parte correta da ordem está de fato sendo fechada e a EA está executando corretamente tanto a abertura quanto o fechamento da ordem. Eu não encontrei tal erro na documentação e os fóruns também não. A tradução errada diz que "a EA não está autorizada a negociar", mas podemos ver que este não é realmente o caso e que a EA está negociando.

Talvez alguém tenha enfrentado um problema desses?

Código do método para fechamento parcial

//Закрытие ордера на продажу
//NumberOrder = тикет ордера, 0 - закрытие всех ордеров
//ValueClose = объем закрытия ордера
bool CloseOrderSell(int NumberOrder, double ValueClose)
{
   if (NumberOrder == 0)
   {
      for (int i = OrdersTotal() - 1; i >= 0; i--)
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
            {
               if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false)
               {
                  Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());    
                  return false;       
               }
               else
               {
                  if (EnableMgs == true)
                     Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
                  return true;            
               }         
            }      
         }
   }
   else
   {
      if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true)
      {
         ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2);
         if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false)
         {
            Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket());   
            return false;
         }
         else
         {
            if (EnableMgs == true)
               Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота");
            return true;
         } 
      }
      else
         Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера");
   }
   return false;
} 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Seric29:

Existe alguma maneira de obter rapidamente o preço no meio entre a abertura e o fechamento com um turno 0 em slides, você quer dizer a barra atual? Ou se é complicado, não há variáveis prontas para esta função.

Você está usando-o para uma coruja ou para um indicador?
eles têm pernas diferentes, você precisa de slides diferentes)

 
Medvedina:

Bom dia a todos.

Ao fechar parcialmente um pedido, o alerta "OrderClose (28800839, 0,01) erro (método: CloseOrderPartial) - trade is not allowed in the expert properties" aparece na janela de alerta.

Acho que o problema não está no método, mas nas condições finais.

O que diz no diário de bordo? Você pode tirar uma foto da tela?

 
Taras Slobodyanik:

você está procurando uma coruja ou um peru?
eles têm pernas diferentes, você precisa de patins diferentes)

Normal alisado (há também a Média Ponderada Exponencial Alisada e o que quer que esteja lá fora). Preciso de uma média móvel simples, talvez suavizada, que passará sem problemas pelo meio entre a abertura e o fechamento. Eu percebi que não existe tal coisa, você tem que fazer, porque ninguém pensaria que um idiota como eu apareceria e usaria coisas tão simples em situações muito complicadas, mas me ocorreu fazer variáveis tão complexas (Simle...).

...que não sabem o que estão calculando e apenas redesenham os preços. Nem sei se os grandes investidores prestam atenção à média (por exemplo, 200,30,21,14,7). Se eu não tiver um, o farei mais tarde.

 
MakarFX:

Acho que o problema não está no método, mas nas condições de fechamento.

O que diz no diário de bordo? Posso obter uma imagem de tela?

Boa tarde.

Obrigado pela sua reflexão. Na verdade, não notei, mas não é minha EA que recebe avisos, mas outra que está trabalhando em paralelo no mesmo par. O estranho é que os avisos para a segunda EA só apareceram enquanto se trabalhava em paralelo.

 
Seric29:

Um regular alisado (há também a Média Ponderada Exponencial Alisada e o que quer que esteja lá fora). Eu preciso de uma média móvel simples, que estupidamente passaria no meio entre a abertura e o fechamento.

assim você mesmo soma e divide - (MA1 + MA2 + MA3) / 3 = Média MA

Se você contar pelo buffer, então iMAOnArray

Razão: