"Alım Satım Modellerine Dayalı Çoklu Uzman Danışmanlar Oluşturma" makalesi için tartışma - sayfa 6

 

Teşekkürler, bu harika bir makale ve iyi bir çerçeve. Tam olarak aradığım şey.

Gerçek para ile kullanmayı planlıyorum, en son sürüm mü?

Teşekkürler

 
't' - dönüşüm var, ancak erişilemiyor Model.mqh 280 27
 

İyi günler!

Birkaç hatayı düzeltmeye çalıştım ama bir tanesi daha ortaya çıkmaya devam ediyor... Amaç yeni başlayanlar için hayatı kolaylaştırmaksa, bu şekilde zorlaşıyor ve burada aklımı kaybediyorum ...

Yardım edin lütfen!

Hata

 

Harika makale!
Çalıştırmak için iki şeyi değiştirmem gerekti.

"TableOrders.mqh" dosyasında bu işlev bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) satır 89'da, m_type değişkeni ile değiştirilmelidir:

Kimden:
m_type=order_info.Type();

Şuraya

m_type=order_info.OrderType();

İkincisi de "TableOrders.mqh" üzerinde:

Kimden

class CTableOrders : CObject

Şuraya:

class CTableOrders : public CObject

Saygılarımla,
A. HUPP

 
Airton Raposo:

İyi günler!

Birkaç hatayı düzeltmeye çalıştım ama bir tanesi daha ortaya çıkmaya devam ediyor... Amaç yeni başlayanlar için hayatı kolaylaştırmaksa, bu şekilde zorlaşıyor ve burada aklımı kaybediyorum ...

Yardım edin lütfen!

Airton bu makale yeni başlayanlar için çok ileri düzeydedir, öncelikle Nesne Yönelimli uygulama geliştirme kavramını, hiyerarşileri, çok biçimliliği, kalıtımı, sanal yöntemleri anlamanız gerekir, yani ileri düzey programlamayı bilmeniz gerekir, ancak bu örneklerde bulunan hatalar, bazılarında elle eklemeniz gereken public anahtar sözcüğü eksik olan sınıf bildirimleriyle ilgilidir, belki de MQL'in önceki sürümü derlemek için bu anahtar sözcüklere ihtiyaç duymuyordu, ancak bu sürüm bu düzeltmeyi gerektiriyor.

 

simple_model.mq5 dosyasını derlemek için "public" eklemek zorunda kaldım:

class CModel: public CObject 12. satırda

MACD_MA_model.mq5'i derlerken bu hatayı almaya devam ediyorum:

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

temel kütüphaneye atıfta bulunan bu hatayı aşamıyorum.

Makaleniz ve test için genel bir çerçeve oluşturma çabanız için teşekkür ederim.

 
z3r00tt0:

simple_model.mq5 dosyasını derlemek için "public" eklemek zorunda kaldım:

class CModel: public CObject at line 12

MACD_MA_model.mq5'i derlerken bu hatayı almaya devam ediyorum:

'MODE_OPEN' - numaralandırıcı tanımlayıcısı zaten tanımlanmış stdlib.mqh 13 4

altta yatan kütüphaneye atıfta bulunan bu hatayı aşamıyorum.

Makaleniz ve test için genel bir çerçeve oluşturma çabanız için teşekkür ederiz.

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

Derlemeyi açmaya çalıştım, hata aldım

'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

Kodu düzeltmek için bir planınız var mı?

 

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

nokta sayısı yerine tik sayısı kullanmalısınız.

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

çünkü bazı sembollerde, tik boyutu != nokta


örneğin:

Vadeli İşlemler\Tarımsal Emtialar\#Kahve_H21:

Basamak: 2 Puan: 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
 

Listeyi yinelerken düğümü silmemelisiniz.

Örneğin:

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

Dizin 5'teki düğümü sildikten sonra, dizin 6'yı yinelersiniz, ancak bir sonraki öğe hala dizin 5'tir.

GetFirstNode / GetNextNode kullanmak daha iyi bir fikirdir

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

Katkılarınız için teşekkürler!