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

 
danil77783:

Artyom boa tarde. Meu nome é Daniel. Minha pergunta é a seguinte. Escrevi meu consultor especializado em MQL4, para ser mais preciso, reescrito a partir do vídeo tutorial. Aparentemente há alguns erros nele, mas ele não irá compilar bem.

O compilador exibirá os erros especificando a linha e a posição na linha. Por favor, consulte-os

Insira o texto do programa usando o botão SRC acima do texto de sua mensagem - veja, é melhor!

//+------------------------------------------------------------------+
//|                                                        test7.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

Você também poderia anexar um arquivo - então ele procuraria no MetaEditor imediatamente

 
LRA:

O compilador irá gerar erros indicando a linha e a posição na linha. Consulte-os

Insira o texto do programa usando o botão SRC acima do texto de sua mensagem - veja, é melhor!!!

Você também poderia anexar um arquivo - então ele procuraria no MetaEditor imediatamente


Desculpe pelo comportamento incorreto, estou corrigido, dou-lhe minha palavra :) Estou exausto absolutamente....

//+------------------------------------------------------------------+
//|                                                        test7.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//-------------------------------------------------------------------
extern double lots            = 0.1;
extern int    TakeProfit      = 300;
extern int    StopLoss        = 50;
extern int    Magic           = 777; 
extern int    Slippage        = 3;
//-------------------------------------------------------------------
extern string TMA             = "Параметры индикатора TMA";
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
//-------------------------------------------------------------------
double PriceHigh, PriceLow, SL ,TP;
int ticet;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if (Digits == 3 || Digits == 5);
   {
       TakeProfit *=10;
       StopLoss   *=10;
       Slippage   *=10;
   }  
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);  
    PriceLow  = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);  
    
    if (CountSell() == 0 && Bid >= PriceHigh)
    {
      tik et = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);  
      if (tiket > 0)
      {
          SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
          TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
          
          if (OrderSelect(ticet, SELECT_BY_TICKET)) 
              OrderModify(tiket, OrderOpenPrice(), SL, TP, 0);
        }
    }
  }
//--------------------------------------------------------------------------------------------
 if (CountBuy() == 0 && Ask <= PriceLow)
    {
      tiket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);  
      if (tiket > 0)
      {
          TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
          SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
          
          if (OrderSelect(ticet, SELECT_BY_TICKET)) 
              OrderModify(tiket, OrderOpenPrice(), SL, TP, 0);
        }
    }
//+------------------------------------------------------------------+
int CountSell() 
  {
    int count = 0;
    for (int trade = OrdersTotal()-1; trade>=0; trade--)
    {
       if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol() == Symbol() && OrderMagicNumber) == Magic && OrderType() == OP_SELL)
             count++;
       }   
    }
    return(count);
  }
//-----------------------------------------------------------------------------------------------  
  int CountBuy() 
  {
    int count = 0;

    for (int trade = OrdersTotal()-1; trade>=0; trade--)
    {
       if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol() == Symbol() && OrderMagicNumber) == Magic && OrderType() == OP_BUY)
             count++;
       }   
    }
    return(count);
  }

Marquei linhas com erros, arquivo..... anexo, por favor, dê uma olhada, obrigado de antemão!

 
 
danil77783:

Peço desculpas pelo comportamento incorreto, vou me corrigir, dou-lhe minha palavra :) Estou completamente exausto ....

Marquei linhas com erros, anexei arquivo....., por favor, consulte-o, obrigado antecipadamente!

É tão difícil ver que o tiquetaque e o tiket são variáveis diferentes?

E você não pode ver parênteses de fechamento sem abrir parênteses também?

 
Muito obrigado por sua ajuda!!! .... Corrigido todos os erros com um que não consigo descobrir. Estou pedindo sua ajuda. Onde eu fiz asneira novamente?
 
danil77783:
Muito obrigado por sua ajuda!!! .... Corrigido todos os erros com um que não consigo descobrir. Estou pedindo sua ajuda. Onde eu fiz asneira novamente?
Você tem este bloco fora do corpo da função OnTick, remova um suporte encaracolado.
 
Alekseu Fedotov:
Você tem este bloco fora do corpo da função OnTick, remova um suporte.

E então faltará um colchete.

O suporte acima da linha selecionada deve ser movido para baixo, antes da linha menos.

}
//+------------------------------------------------------------------+
 
Alexey Viktorov:

E então faltará um colchete.

O suporte acima da linha realçada deve ser movido para baixo antes da linha negativa.

Oh, sim, você deve.

 

Tudo!!! .... Muito obrigado. Compilou-o. Funciona!

 
danil77783: Tudo!!! .... Muito obrigado. Compilou-o. Funciona!

Qual é o lucro? Também esta peça aqui com a função vazia pode ser descartada. Experimente...

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
Razão: