Ho cercato di correggere diversi errori, ma ne continua a spuntare uno... se l'obiettivo era quello di rendere la vita più facile ai principianti, sta diventando difficile in questo modo e sto perdendo la testa...
Ottimo articolo! Ho dovuto cambiare due cose per farlo funzionare.
Nel file "TableOrders.mqh" nella funzione bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) riga 89, la variabile m_type deve essere sostituita da:
Ho cercato di correggere diversi errori, ma ne continua a spuntare uno... se lo scopo era quello di rendere la vita più facile ai principianti, sta diventando difficile in questo modo e sto perdendo la testa...
Aiuto per favore!
Airton questo articolo è molto avanzato per i principianti, bisogna prima capire il concetto di sviluppo di applicazioni Object Oriented, gerarchie, polimorfismo, ereditarietà, metodi virtuali, cioè bisogna conoscere la programmazione avanzata, gli errori riscontrati in questi esempi però sono relativi alle dichiarazioni delle classi, che in alcune di esse mancano della parola chiave public che bisogna inserire a mano, forse la versione precedente di MQL non aveva bisogno di queste parole chiave per compilare, ma questa versione richiede questa correzione.
Ho provato a decompilare, ma ho riscontrato degli errori
'MACD_MA model.mq5' MACD_MA model.mq5 11'Trade.mqh' Trade.mqh 11'Object.mqh' Object.mqh 11'StdLibErr.mqh' StdLibErr.mqh 11'SymbolInfo.mqh' SymbolInfo.mqh 11'OrderInfo.mqh' OrderInfo.mqh 11'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 11'PositionInfo.mqh' PositionInfo.mqh 11'DealInfo.mqh' DealInfo.mqh 11'AccountInfo.mqh' AccountInfo.mqh 11'model_macd.mqh' model_macd.mqh 11'Model.mqh' Model.mqh 11'List.mqh' List.mqh 11'TableOrders.mqh' TableOrders.mqh 11'Time.mqh' Time.mqh 11'mm.mqh' mm.mqh 11'stdlib.mqh' stdlib.mqh 11'model_ma.mqh' model_ma.mqh 11'model_bollinger.mqh' model_bollinger.mqh 11returnvalue of 'OrderSelect' should be checked TableOrders.mqh 1204implicitenum conversion TableOrders.mqh 5044'new_message' - conversion is not accessible because of inheritance access Time.mqh 18521
possible use of uninitialized variable 'lot_limit' mm.mqh 12910't' - conversion is not accessible because of inheritance access Model.mqh 25227
declaration of 'trade' hides global variable Model.mqh 28216
see previous declaration of 'trade' MACD_MA model.mq5 188
declaration of 'i' hides local variable Model.mqh 31015
see previous declaration of 'i' Model.mqh 30712
possible loss of data due to type conversion Model.mqh 42847
possible loss of data due to type conversion model_macd.mqh 8611
possible loss of data due to type conversion model_macd.mqh 9014
possible loss of data due to type conversion model_macd.mqh 9114
possible loss of data due to type conversion model_macd.mqh 9216
expression not boolean model_macd.mqh 22811
expression not boolean model_macd.mqh 25411
possible loss of data due to type conversion model_ma.mqh 8511
possible loss of data due to type conversion model_ma.mqh 898
possible loss of data due to type conversion model_ma.mqh 9019
expression not boolean model_ma.mqh 21911
expression not boolean model_ma.mqh 24211
declaration of 'k_ATR' hides global variable model_bollinger.mqh 97110
see previous declaration of 'k_ATR' MACD_MA model.mq5 2516
possible loss of data due to type conversion model_bollinger.mqh 9922
possible loss of data due to type conversion model_bollinger.mqh 10422
possible loss of data due to type conversion model_bollinger.mqh 10722
variable 'rezult' not used model_bollinger.mqh 1709
variable 'rezult' not used model_bollinger.mqh 1959
expression not boolean model_bollinger.mqh 23811
expression not boolean model_bollinger.mqh 263112 errors, 25 warnings 326
Non si dovrebbe cancellare il nodo durante l'iterazione dell'elenco.
Per esempio:
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());
}
Dopo aver eliminato il nodo all'indice 5, si itera all'indice 6, ma l'elemento successivo è ancora all'indice 5.
È meglio usare 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();
}
Grazie, questo è un ottimo articolo e un buon quadro di riferimento. Esattamente quello che stavo cercando.
Ho intenzione di utilizzarlo con denaro reale, è l'ultima versione?
Grazie
Buon pomeriggio!
Ho cercato di correggere diversi errori, ma ne continua a spuntare uno... se l'obiettivo era quello di rendere la vita più facile ai principianti, sta diventando difficile in questo modo e sto perdendo la testa...
Aiuto per favore!
Ottimo articolo!
Ho dovuto cambiare due cose per farlo funzionare.
Nel file "TableOrders.mqh" nella funzione bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) riga 89, la variabile m_type deve essere sostituita da:
Da:
m_type=order_info.Type();
A:
m_type=order_info.OrderType();
Il secondo anche in "TableOrders.mqh":
Da:
class CTableOrders : CObject
A:
class CTableOrders : public CObject
Saluti,
A. HUPP
Buon pomeriggio!
Ho cercato di correggere diversi errori, ma ne continua a spuntare uno... se lo scopo era quello di rendere la vita più facile ai principianti, sta diventando difficile in questo modo e sto perdendo la testa...
Aiuto per favore!
Airton questo articolo è molto avanzato per i principianti, bisogna prima capire il concetto di sviluppo di applicazioni Object Oriented, gerarchie, polimorfismo, ereditarietà, metodi virtuali, cioè bisogna conoscere la programmazione avanzata, gli errori riscontrati in questi esempi però sono relativi alle dichiarazioni delle classi, che in alcune di esse mancano della parola chiave public che bisogna inserire a mano, forse la versione precedente di MQL non aveva bisogno di queste parole chiave per compilare, ma questa versione richiede questa correzione.
per compilare il file simple_model.mq5 ho dovuto aggiungere "public":
classe CModel: public CObject alla riga 12
Durante la compilazione di MACD_MA_model.mq5 continuo a ricevere questo errore:
'MODE_OPEN' - enumerator identifier already defined stdlib.mqh 13 4
Non riesco ad evitare questo errore che si riferisce alla libreria sottostante.
Grazie per il vostro articolo e per lo sforzo di costruire un quadro generale per i test.
per compilare il file simple_model.mq5 ho dovuto aggiungere "public":
classe CModel: public CObject alla riga 12
Durante la compilazione di MACD_MA_model.mq5 continuo a ricevere questo errore:
'MODE_OPEN' - enumerator identifier already defined stdlib.mqh 13 4
Non riesco ad evitare questo errore che si riferisce alla libreria sottostante.
Grazie per il vostro articolo e per lo sforzo di costruire un quadro generale per i test.
https://www.mql5.com/en/forum/244512
Ho provato a decompilare, ma ho riscontrato degli errori
Avete in programma di correggere il codice?
min_risk = point * tick_value * symbol_info_.LotsStep();
si dovrebbe usare il conteggio dei tick invece del conteggio dei punti.
tick_count = MathAbs(open_price - stop_loss) / symbol_info_.TickSize();
perché in alcuni simboli, la dimensione dei tick = punto
ad esempio:
Futures\Agricultural Commodities\#Coffee_H21:
Non si dovrebbe cancellare il nodo durante l'iterazione dell'elenco.
Per esempio:
Dopo aver eliminato il nodo all'indice 5, si itera all'indice 6, ma l'elemento successivo è ancora all'indice 5.
È meglio usare GetFirstNode / GetNextNode.
Grazie per il vostro contributo!