Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 159

 

Olá estimados programadores, por favor, ajudem-me a ajustar esta EA.



1. abertura dos pedidos automaticamente.
Quando atinge +, abre uma ordem do mesmo lado com o lote inicial.
3. quando atinge a - inverte a ordem (abre a ordem na direção em que foi recebida).
Arquivos anexados:
 
Saudações, colegas!
Você pode avisar se alguém encontrou este problema?
1) Testado na cooperativa MT4. Existem erros para modificar1 o pedido no registro. Qual é o motivo do erro para pedir modificação1 e como corrigi-lo?
2) Eu não posso instalar e executar a EA. Eu movo a EA para a janela do gráfico e ela ou não se fixa no canto superior direito, ou fica presa, mas não começa. Em vez de um colobus, é um retângulo! (Veja a captura de tela)
3) Como instalo corretamente o MT4 no meu ROSA (Linux)? Tenho o MT4 instalado no c/Program Files (x86)/MT4 . Preciso copiar arquivos do c/Program Files (x86)/MT4 para c/users/xxl/AppData/ e para _c/users/xxl/Application Data/MetaQuotes/? Se sim, quais arquivos devo colocar nas pastas LocalLow e Roaming e quais nas pastas Terminal e WebInstall?
Obrigado pela resposta detalhada! )

 

Olá a todos. Eis o ponto principal. Há um ponto de interseção do jacaré com a barra N. Precisamos encontrar o ângulo entre o jacaré e, por exemplo, o baixo da primeira barra a partir deste ponto de cruzamento. A dificuldade é que temos dois valores incompatíveis - o número de barras e o preço. Eu queria, como sugerido por alguém, dançar sobre o tamanho de uma célula no gráfico. Mas se o número de barras no quadrado for proporcional à mudança de escala, o preço não tem tal proporção.

Tenho duas perguntas baseadas no que foi dito acima:

1. Talvez alguém tenha encontrado ou conheça a solução para este problema.

2. O Expert Advisor trabalha com uma certa escala do gráfico, ou apenas com o preço?

 
Alexander Dubovik:

Mais uma observação para os desenvolvedores.

A documentação para a construção da linguagem typedef (assim como o próprio typedef) é desconcertante.

datilografar char My_Char; - não compila.

Da documentação:"A palavra-chave digitada em C++ permite criar tipos de dados personalizados .....". Desculpe-me, mas por que você faria referência a C++ na documentação sobre MQL, se na verdade MQL contém apenas declarações de indicações de funções?

Em MQL4/5 o typedef é esterilizado e serve apenas para declarar indicadores de funções e não é útil para mais nada.


typedef int (*TFunc)(int,int);

int add(int x,int y) 
{
    return(x+y); 
}

void OnStart()
{
    TFunc pfunc = add;   
    Print(pfunc(4,5));    
}
 
Alex Pirate:

Olá a todos!

tenho um simples EA, é simples, algo está errado, me dá um erro... quero anexar-lhe uma rede de arrasto mas ela nem sequer abre... diz - o valor de retorno do 'OrderSend' deve ser verificado

por que ainda verifica??? o que está errado??? parece que os programadores e aqueles que são bons em ajudar a todos aqui.... Que pena ((!)

https://translate.google.ru/?hl=ru&tab=TT#en/ru/return%20value%20of%20'OrderSend'%20should%20be%20checked

Google Переводчик
  • translate.google.ru
Бесплатный сервис Google позволяет мгновенно переводить слова, фразы и веб-страницы с английского на более чем 100 языков и обратно.
 
Alex Pirate:

Olá a todos!


 
Artyom Trishkin:


Obrigado, estou ciente disso... Essa é a pergunta traduzida que eu fiz no final... não o que ele diz... por quê? o que há de errado com o código??? o que eu escrevi de errado???

 
Alex Pirate:

Obrigado, estou ciente disso... Essa é a pergunta traduzida que eu fiz no final... O que há de errado com o código?

 
Artyom Trishkin:

extern int    MA_1_Period   = 22;
extern int    MA_1_MAShift  = 1;
extern int    MA_1_Method   = 1;
extern int    MA_1_Price    = 1;
extern int    MA_1_Shift    = 0;

extern int    MA_2_Period   = 55;
extern int    MA_2_MAShift  = 1;
extern int    MA_2_Method   = 1;
extern int    MA_2_Price    = 1;
extern int    MA_2_Shift    = 0;

extern int    MA_3_Period   = 163;
extern int    MA_3_MAShift  = 1;
extern int    MA_3_Method   = 1;
extern int    MA_3_Price    = 1;
extern int    MA_3_Shift    = 0;

extern double lot           = 0.1;
extern int    TP            = 60;
extern int    SL            = 40;
extern int    Slippage      = 5;
extern int    Magic         = 888;

int timeprev;

//+------------------------------------------------------------------+
int init()
{ 
   if (Digits == 3 || Digits == 5)
   {
     TP           *= 10;
     SL           *= 10;
     Slippage     *= 10;
     
   }

   return(0); 
}
//+------------------------------------------------------------------+
int deinit() 
{
   return(0);
}
//+------------------------------------------------------------------+

int start()
{
   if (timeprev == Time[0]) return(0);
   timeprev = Time[0];
   
   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_BUY , lot, Ask, Slippage, SL, TP, "", Magic,0, Green);
      }
// продаём
   
   if (CountBuy() + CountSell() == 0 && MA_1_1 < MA_1_2 && MA_2_1 < MA_2_2 && MA_3_1 < MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, SL, TP, "", Magic,0, Red);
      }
          
   return(0);
}
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_BUY)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 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)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
 
Alex Pirate:

O que você está comparando com o quê?

   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )

Se 0 > 0 e 0 > 0 e 0 > 0