Diskussion zum Artikel "Erzeugung von Multi-Expert Advisors auf Grundlage von Handelsmodellen" - Seite 6

 

Vielen Dank, das ist ein toller Artikel und ein guter Rahmen. Genau das, wonach ich gesucht habe.

Ich plane, es mit echtem Geld zu verwenden, ist es die neueste Version?

Danke

 
't' - Konvertierung existiert, ist aber unzugänglich Model.mqh 280 27
 

Guten Tag!

Ich habe versucht, mehrere Fehler zu korrigieren, aber ein weiterer taucht immer wieder auf... wenn es das Ziel war, Anfängern das Leben zu erleichtern, wird es so schwierig und ich verliere hier den Verstand...

Bitte um Hilfe!

Fehler

 

Toller Artikel!
Ich musste zwei Dinge ändern, damit es funktioniert.

In der Datei "TableOrders.mqh" in der Funktion bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) Zeile 89, sollte die Variable m_type durch ersetzt werden:

From:
m_type=order_info.Type();

To:

m_type=order_info.OrderType();

Die zweite auch in der "TableOrders.mqh":

From:

class CTableOrders : CObject

To:

class CTableOrders : public CObject

Regards,
A. HUPP

 
Airton Raposo:

Guten Tag!

Ich habe versucht, mehrere Fehler zu korrigieren, aber ein weiterer taucht immer wieder auf... wenn es das Ziel war, Anfängern das Leben zu erleichtern, wird es so schwierig und ich verliere hier den Verstand...

Bitte um Hilfe!

Airton dieser Artikel ist für Anfänger sehr fortgeschritten, Sie müssen zunächst das Konzept der objektorientierten Anwendungsentwicklung, Hierarchien, Polymorphismus, Vererbung, virtuelle Methoden verstehen, d.h. Sie müssen fortgeschrittene Programmierkenntnisse haben, die Fehler, die in diesen Beispielen gefunden wurden, beziehen sich jedoch auf die Klassendeklarationen, bei denen in einigen von ihnen das Schlüsselwort public fehlt, das Sie von Hand einfügen müssen, vielleicht brauchte die vorherige Version von MQL diese Schlüsselwörter nicht, um zu kompilieren, aber diese Version erfordert diese Korrektur.

 

um die Datei simple_model.mq5 zu kompilieren, musste ich "public" hinzufügen:

class CModel: public CObject in Zeile 12

Beim Kompilieren von MACD_MA_model.mq5 erhalte ich ständig diesen Fehler:

'MODE_OPEN' - enumerator identifier already defined stdlib.mqh 13 4

Ich kann diesen Fehler, der sich auf die zugrunde liegende Bibliothek bezieht, nicht umgehen.

Vielen Dank für Ihren Artikel und die Bemühungen, einen allgemeinen Rahmen für das Testen zu schaffen.

 
z3r00tt0:

Um die Datei simple_model.mq5 zu kompilieren, musste ich "public" hinzufügen:

class CModel: public CObject in Zeile 12

beim Kompilieren von MACD_MA_model.mq5 erhalte ich immer wieder diesen Fehler:

'MODE_OPEN' - enumerator identifier already defined stdlib.mqh 13 4

Ich kann diesen Fehler, der sich auf die zugrunde liegende Bibliothek bezieht, nicht umgehen.

Vielen Dank für Ihren Artikel und die Bemühungen, einen allgemeinen Rahmen für das Testen zu schaffen.

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...
 

Ich habe versucht, den Code zu entkompilieren, und erhielt Fehler.

'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

Gibt es Pläne, den Code zu korrigieren?

 

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

Sie sollten die Tickanzahl anstelle der Punktanzahl verwenden.

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

denn bei einigen Symbolen ist Tick Size != Point


zum Beispiel:

Futures\Agricultural Commodities\#Coffee_H21:

Stellen: 2 Punkt: 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
 

Sie sollten keine Knoten löschen, wenn Sie die Liste iterieren.

zum Beispiel:

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());
    }

Nachdem Sie den Knoten bei Index 5 gelöscht haben, iterieren Sie Index 6, aber das nächste Element ist immer noch Index 5.

Es ist eine bessere Idee, GetFirstNode / GetNextNode zu verwenden.

    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();
    }

Vielen Dank für Ihren Beitrag!