Discussão do artigo "Criação de Consultores Multiespecializados com base em Modelos de Comércio" - página 6

 

Obrigado, este é um ótimo artigo e uma boa estrutura. Exatamente o que eu estava procurando.

Pretendo usá-lo com dinheiro real. Essa é a versão mais recente?

Muito obrigado

 
't' - a conversão existe, mas está inacessível Model.mqh 280 27
 

Boa tarde!

Vários erros estão sendo apresentados, já tentei corrigi-los mas sempre aparece mais um... se o objetivo era facilitar a vida dos iniciantes fica difícil desse jeito já estou perdendo a cabeça aqui..

Help Please!

Error 

 

Ótimo artigo!
Tive de alterar duas coisas para fazê-lo funcionar.

No arquivo "TableOrders.mqh" nesta função bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) linha 89, a variável m_type deve ser substituída por:

From:
m_type=order_info.Type();

Para:

m_type=order_info.OrderType();

A segunda também em "TableOrders.mqh":

From:

class CTableOrders : CObject

To:

class CTableOrders : public CObject

Atenciosamente,
A. HUPP

 
Airton Raposo:

Boa tarde!

Vários erros estão sendo apresentados, já tentei corrigi-los mas sempre aparece mais um... se o objetivo era facilitar a vida dos iniciantes fica difícil desse jeito já estou perdendo a cabeça aqui..

Help Please!

 

Airton esse artigo é muito avançado para iniciantes, você deve entender primeiramente o conceito de desenvolvimento de aplicações Orientada a Objetos, hierarquias, polimorfismo, heranças, métodos virtuais, ou seja, precisa conhecer programação avançada, os erros encontratos nesses exemplos no entanto estão relacionados as declarações de classes, que em algumas delas está faltando a palavra chave public que você deve inserir na mão, talvez a versão anterior do MQL não precisava dessas palavras chaves para compilar, mais nessa versão exige essa correção.

 

Para compilar o arquivo simple_model.mq5, tive que adicionar "public":

class CModel: public CObject na linha 12

Ao compilar o MACD_MA_model.mq5, continuo recebendo este erro:

'MODE_OPEN' - identificador de enumerador já definido stdlib.mqh 13 4

Não consigo contornar esse erro que se refere à biblioteca subjacente.

Obrigado por seu artigo e pelo esforço para criar uma estrutura geral para testes.

 
z3r00tt0:

Para compilar o arquivo simple_model.mq5, tive que adicionar "public":

class CModel: public CObject na linha 12

Ao compilar o MACD_MA_model.mq5, continuo recebendo este erro:

'MODE_OPEN' - identificador de enumerador já definido stdlib.mqh 13 4

Não consigo contornar esse erro que se refere à biblioteca subjacente.

Obrigado por seu artigo e pelo esforço de criar uma estrutura geral para testes.

https://www.mql5.com/en/forum/244512

Enumerator compile error
Enumerator compile error
  • 2018.05.14
  • www.mql5.com
Hi, I'm new in mql programming and trying to develop my first EA based on what I found in mql articles...
 

Tentei descompilar, mas obtive erros

'MACD_MA model.mq5'     MACD_MA model.mq5       1       1
'Trade.mqh'     Trade.mqh       1       1
'Object.mqh'    Object.mqh      1       1
'StdLibErr.mqh' StdLibErr.mqh   1       1
'SymbolInfo.mqh'        SymbolInfo.mqh  1       1
'OrderInfo.mqh' OrderInfo.mqh   1       1
'HistoryOrderInfo.mqh'  HistoryOrderInfo.mqh    1       1
'PositionInfo.mqh'      PositionInfo.mqh        1       1
'DealInfo.mqh'  DealInfo.mqh    1       1
'AccountInfo.mqh'       AccountInfo.mqh 1       1
'model_macd.mqh'        model_macd.mqh  1       1
'Model.mqh'     Model.mqh       1       1
'List.mqh'      List.mqh        1       1
'TableOrders.mqh'       TableOrders.mqh 1       1
'Time.mqh'      Time.mqh        1       1
'mm.mqh'        mm.mqh  1       1
'stdlib.mqh'    stdlib.mqh      1       1
'model_ma.mqh'  model_ma.mqh    1       1
'model_bollinger.mqh'   model_bollinger.mqh     1       1
return value of 'OrderSelect' should be checked TableOrders.mqh 120     4
implicit enum conversion        TableOrders.mqh 50      44
'new_message' - conversion is not accessible because of inheritance access      Time.mqh        185     21
possible use of uninitialized variable 'lot_limit'      mm.mqh  129     10
't' - conversion is not accessible because of inheritance access        Model.mqh       252     27
declaration of 'trade' hides global variable    Model.mqh       282     16
   see previous declaration of 'trade'  MACD_MA model.mq5       18      8
declaration of 'i' hides local variable Model.mqh       310     15
   see previous declaration of 'i'      Model.mqh       307     12
possible loss of data due to type conversion    Model.mqh       428     47
possible loss of data due to type conversion    model_macd.mqh  86      11
possible loss of data due to type conversion    model_macd.mqh  90      14
possible loss of data due to type conversion    model_macd.mqh  91      14
possible loss of data due to type conversion    model_macd.mqh  92      16
expression not boolean  model_macd.mqh  228     11
expression not boolean  model_macd.mqh  254     11
possible loss of data due to type conversion    model_ma.mqh    85      11
possible loss of data due to type conversion    model_ma.mqh    89      8
possible loss of data due to type conversion    model_ma.mqh    90      19
expression not boolean  model_ma.mqh    219     11
expression not boolean  model_ma.mqh    242     11
declaration of 'k_ATR' hides global variable    model_bollinger.mqh     97      110
   see previous declaration of 'k_ATR'  MACD_MA model.mq5       25      16
possible loss of data due to type conversion    model_bollinger.mqh     99      22
possible loss of data due to type conversion    model_bollinger.mqh     104     22
possible loss of data due to type conversion    model_bollinger.mqh     107     22
variable 'rezult' not used      model_bollinger.mqh     170     9
variable 'rezult' not used      model_bollinger.mqh     195     9
expression not boolean  model_bollinger.mqh     238     11
expression not boolean  model_bollinger.mqh     263     11
2 errors, 25 warnings           3       26

Há planos para corrigir o código?

 

min_risk = point * tick_value * symbol_info_.LotsStep();

você deve usar a contagem de ticks em vez da contagem de pontos.

tick_count = MathAbs(open_price - stop_loss) / symbol_info_.TickSize();

porque em alguns símbolos, o tamanho do tick != ponto


por exemplo:

Futuros\Mercadorias Agrícolas\#Café_H21:

Dígitos: 2 Ponto: 0,01 TickValue: 18,75 TickValueProfit: 18,75 TickValueLoss: 18,75 TickSize: 0,05 ContractSize: 375,0 LotsMin: 0,01 LotsMax: 50,0 LotsStep: 0,01 LotsLimit: 0,0
 

Você não deve excluir o nó ao iterar a lista.

Por exemplo:

class Test : public CObject {
  public:
    int i_;
    Test(int i) {
        i_ = i;
    };
    int get_i() {
        return i_;
    };
};


    CList *list = new CList();
    for (int i = 0; i < 10; i++) {
        Test *t = new Test(i);
        list.Add(t);
    }

    for (int i = 0; i < list.Total(); i++) {
        Test *t = list.GetNodeAtIndex(i);
        if (i == 5) {
            list.DeleteCurrent();
        }
        if (CheckPointer(t) == POINTER_INVALID) {
            continue;
        }
        Print(t.get_i());
    }

Depois de excluir o nó no índice 5, você itera o índice 6, mas o próximo elemento ainda é o índice 5.

É melhor usar GetFirstNode / GetNextNode

    for (Test *t = list.GetFirstNode(); t != NULL;) {
        t_current = t;
        if (t.get_i() == 5) {
            list.DeleteCurrent();
            t = list.GetCurrentNode();
            if (t == t_current) {break;}
            continue;
        }
        Print(t.get_i());
        t = list.GetNextNode();
    }

Obrigado por sua contribuição!