기고글 토론 "Trading Model 기반 Multi-Expert Advisor 양성" - 페이지 6

 

감사합니다, 훌륭한 글과 좋은 프레임워크입니다. 정확히 제가 찾던 것입니다.

실제 돈으로 사용할 계획인데 최신 버전인가요?

고마워요

 
't' - 변환이 존재하지만 액세스할 수 없음 Model.mqh 280 27
 

안녕하세요!

몇 가지 오류를 수정하려고 시도했지만 계속 하나 더 나타납니다... 초보자의 삶을 더 쉽게 만드는 것이 목표 였다면 이렇게 어려워지고 여기서 정신을 잃고 있습니다 ...

도와주세요!

오류

 




함수 bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) 89행의 "TableOrders.mqh" 파일에서 변수 m_type을 다음으로 바꿔야 합니다:

From:
m_type=order_info.Type();

To:

m_type=order_info.OrderType();

두 번째는 "TableOrders.mqh"에서도 마찬가지입니다:

From:

클래스 CTableOrders : CObject

To:

class CTableOrders : public CObject

Regards,
A. HUPP

 
Airton Raposo:

안녕하세요!

몇 가지 오류를 수정하려고 시도했지만 계속 하나 더 나타납니다... 초보자의 삶을 더 쉽게 만드는 것이 목표 였다면 이렇게 어려워지고 여기서 정신을 잃고 있습니다 ...

도와주세요!

에어튼이 기사는 초보자를위한 매우 고급이며, 먼저 객체 지향 응용 프로그램 개발, 계층 구조, 다형성, 상속, 가상 메소드의 개념을 이해해야합니다. 즉, 고급 프로그래밍을 알아야합니다. 그러나 이러한 예제에서 발견 된 오류는 클래스 선언과 관련이 있으며 일부에는 손으로 삽입해야하는 공개 키워드가 누락되어 있으며 이전 버전의 MQL에서는 컴파일하는 데 이러한 키워드가 필요하지 않았지만이 버전에는이 수정이 필요할 수 있습니다.

 

simple_model.mq5 파일을 컴파일하기 위해 "public"을 추가해야 했습니다:

클래스 CModel: 12번째 줄의 공개 CObject

MACD_MA_model.mq5를 컴파일하는 동안 이 오류가 계속 발생합니다:

'MODE_OPEN' - 열거자 식별자가 이미 정의됨 stdlib.mqh 13 4

기본 라이브러리를 참조하는이 오류를 해결할 수 없습니다.

테스트를 위한 일반적인 프레임워크를 구축하기 위해 노력해 주신 글과 노력에 감사드립니다.

 
z3r00tt0:

simple_model.mq5 파일을 컴파일하기 위해 "public"을 추가해야 했습니다:

클래스 CModel: 12번째 줄의 공개 CObject

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

코드를 수정할 계획이 있나요?

 

최소 위험 = 포인트 * 틱 값 * symbol_info_.LotsStep();

포인트 카운트 대신 틱 카운트를 사용해야 합니다.

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

일부 심볼에서는 틱 크기 != 포인트이기 때문입니다.


를 사용합니다:

선물\농산물\#커피_H21:

Digits: 2 Point: 0.01 TickValue: 18.75 TickValueProfit: 18.75 TickValueLoss: 18.75 TickSize: 0.05 ContractSize: 375.0 LotsMin: 0.01 랏 최대: 50.0 랏 단계: 0.01 랏 제한: 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();
    }

도움을 주셔서 감사합니다!