記事"トレーディングモデルに基づくマルチエキスパートアドバイザーの作成"についてのディスカッション - ページ 6

 

これは素晴らしい記事であり、良いフレームワークだ。まさに私が探していたものだ。

最新のバージョンですか?

ありがとうございます。

 
't' - 変換は存在するが、アクセスできない Model.mqh 280 27
 

こんにちは!

いくつかのエラーを修正しようとしたのですが、もう1つ出てきてしまいました...。もし初心者が簡単に生活できるようにするのが目的なら、こんな風に難しくなってきて、私はここで気が狂いそうです...。

助けてください!

エラー

 


動作させるために、2つの点を変更する必要がありました。

ファイル "TableOrders.mqh "のこの関数 bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit)89行目で、変数m_typeを次のように置き換える必要があります:

From:
m_type=order_info.Type();

から

m_type=order_info.OrderType();

2つ目は、"TableOrders.mqh "にもある:

から:

クラス CTableOrders : CObject

から

class CTableOrders : public CObject

Regards,
A.ハップ

 
Airton Raposo:

こんにちは!

いくつかのエラーを修正しようとしたのですが、もう1つ出てきてしまいました...。もし初心者が簡単に生活できるようにするのが目的なら、こんな風に難しくなってきて、私はここで気が狂いそうです...。

助けてください!

オブジェクト指向アプリケーション開発の概念、階層、ポリモーフィズム、継承、仮想メソッドなどを理解する必要があります。

 

simple_model.mq5をコンパイルするには、"public "を追加する必要があった:

class CModel: publicCObject を追加しなければならなかった。

MACD_MA_model.mq5をコンパイルしている間、次のエラーが出続けます:

MODE_OPEN' - 列挙子識別子はすでに定義されています stdlib.mqh 13 4

基礎となるライブラリを参照するこのエラーを回避することができません。

あなたの記事と、テストのための一般的なフレームワークを構築する努力に感謝します。

 
z3r00tt0:

simple_model.mq5をコンパイルするには、"public "を追加する必要があった:

class CModel: public CObject @12行目

MACD_MA_model.mq5をコンパイルしている間、このエラーが出続けます:

MODE_OPEN' - 列挙体識別子はすでに定義されています stdlib.mqh 13 4

基礎となるライブラリを参照するこのエラーを回避することができません。

あなたの記事と、テストのための一般的なフレームワークを構築する努力に感謝します。

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

アンコンパイルしようとしたらエラーが出た

'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

コードを修正する予定はありますか?

 

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

ポイントカウントの代わりにティックカウントを使用する必要があります。

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

なぜなら、いくつかのシンボルでは、ティックサイズ != ポイントだからです。


例えば

例えば、FuturesAgricultural Commoditiesの場合、以下のようになる:

桁数: 2 ポイント: 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
 

リストを反復するときにノードを削除してはいけない。

例えば

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

インデックス5のノードを削除した後、インデックス6を反復しても、次の要素はインデックス5のままです。

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

ご投稿ありがとうございました!