MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1559

 
Tsaryoff5614 :

좋은 오후입니다 프로그래머 여러분!!

기능으로 초보자를 도와주세요.

함수는 기록의 총 이익을 계산합니다.

문제는 그것이 한 브로커에서 작동하고 다른 브로커에서 작동하기를 원하지 않는다는 것입니다.

Gerchik에서는 작동하지만 Roboforex에서는 작동하지 않습니다. RoboForex ECN 계정.

나는 무엇이 잘못되었는지 이해하지 못한다. 코드는 다음과 같습니다.

이중 마지막 손실()

{

정수 유형 = -1, cnt = 0;

이중 마지막 손실 = 0;

for(int i = OrdersHistoryTotal()-1; i>=0; i--)

{

if( 주문선택(i,SELECT_BY_POS, MODE_HISTORY ))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

if(cnt == 0) typ = OrderType();

if(cnt > 0 && OrderType()!= typ) break;

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

cnt++;

}

}

}

반환(마지막 손실);

}

흥미롭게도 컴파일러는 이 줄에서 맹세하지 않습니까?

lastlos += OrderProfit() + + OrderSwap() + OrderCommission();

올바른 작동을 위해 하나의 +를 제거해야 합니까?

그리고 왜 이익을 위해 수수료가 있는 스왑을 추가합니까? 사실 그에도 불구하고
OrderProfit()

부정적일 수 있다...

적격 주문을 1개 또는 몇 개만 처리하고 전부는 처리하지 않는 경우 총 이익은 얼마입니까?

더 나아가:

 if (cnt > 0 && OrderType()!= typ) break ;

사이클 정지.

 
MakarFX :

1) 고속에서 또는 테스터에서 틱이 아닌 경우 첫 번째 사용 가능한 가격으로 닫힙니다.

2) 로트를 늘리고 있는데 로트가 크면 1점이 허용치 이상일 수 있습니다.

3) 당신이 원하는 것을 이해하지 못했습니다. 재설정이 각 트랜잭션 후에 수행되는 경우 무엇을 추적해야 합니까?

3) 당신이 원하는 것을 이해하지 못했습니다. 재설정이 각 트랜잭션 후에 수행되는 경우 무엇을 추적해야 합니까?

우리는 각 거래의 "내부" 손익 추적에 대해 이야기하고 있습니다. 즉, 가격이 스톱과 테이크 사이에 "매달려 있는" 동안 현재 거래의 손익 금액도 변경됩니다. 가격이 이익 영역에 들어가지만 테이크 테이크에 도달하지 않는 경우가 종종 발생합니다. 가격이 역전되어 거래가 중지됩니다. 스톱 앤 테이크를 변경하지 않고, 즉 설정된 테이크 및 스톱 매개변수를 깨지 않고 제 시간에 수정할 수 있도록 손익(금전)으로 추적해야 합니다. 마틴이 켜진 대규모 로트의 경우에도 마찬가지입니다.

트랜잭션이 닫힌 후 - 추적이 중지되고 새 트랜잭션에 대해 다시 시작됩니다.

 
законопослушный гражданин :

3) 당신이 원하는 것을 이해하지 못했습니다. 재설정이 각 트랜잭션 후에 수행되는 경우 무엇을 추적해야 합니까?

우리는 각 거래의 "내부" 손익 추적에 대해 이야기하고 있습니다. 즉, 가격이 스톱과 테이크 사이에 "매달려 있는" 동안 현재 거래의 손익 금액도 변경됩니다. 가격이 이익 영역에 들어가지만 테이크 테이크에 도달하지 않는 경우가 종종 발생합니다. 가격이 역전되어 거래가 중지됩니다. 스톱 앤 테이크를 변경하지 않고, 즉 설정된 테이크 및 스톱 매개변수를 깨지 않고 제 시간에 수정할 수 있도록 손익(금전)으로 추적해야 합니다. 마틴이 켜진 대규모 로트의 경우에도 마찬가지입니다.

트랜잭션이 닫힌 후 - 추적이 중지되고 새 트랜잭션에 대해 다시 시작됩니다.

손절매와 이익실현보다 적은 손익 매개변수를 지정하기만 하면 됩니다.

TakeProfit 비용이 200포인트 0.1랏이면 이익은 $20이고 이익 수준을 $15로 설정하면 거래가 더 일찍 마감됩니다.

 
Mihail Matkovskij :

그리고 왜 이익을 위해 수수료가 있는 스왑을 추가합니까? 사실 그에도 불구하고
OrderProfit()

부정적일 수...

고마워 나도 이런 바보같은 짓 을 했어

 
MakarFX :

손절매와 이익실현보다 적은 손익 매개변수를 지정하기만 하면 됩니다.

TakeProfit 비용이 200포인트 0.1랏이면 이익은 $20이고 이익 수준을 $15로 설정하면 거래가 더 일찍 마감됩니다.


네, 감사합니다. 생각해보고 테스터에서 실행하겠습니다.

 
누구든지 주문 내역 에서 이익을 계산하는 기능에 대한 링크를 찾을 수 있습니까 ??
 

커뮤니티를 도와주세요...
MQL5 전역 개체를 올바르게 선언하고 생성하는 방법은 무엇입니까?

이렇게 하면:

 int OnInit ()
{
   CIsNewBar* NB_M1= new CIsNewBar( _Symbol , PERIOD_M1 );  // Эта строка потом будет в цикле для разных символов
}

void OnTick ()
{
     if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

그런 다음 컴파일러는 OnTick()의 줄에서 다음과 같이 맹세합니다. 'NB_M1' - 선언되지 않은 식별자로 논리적입니다. OnInit()에서 지역 변수가 생성됩니다.

OnInit() 앞에 전역 선언을 삽입하는 경우:

CIsNewBar* NB_M1;

그런 다음 오류 없이 컴파일되고 EA가 작동합니다. 객체가 전역 선언과 OnInit()에서 두 번 생성된 것 같습니다...
하지만 에   컴파일러 경고   이 있습니다:

'NB_M1' 선언은 전역 변수를 숨김 -> OnInit()의 줄당

'NB_M1'의 이전 선언 참조

이것은 같은 이름의 전역 변수를 숨기는 OnInit()에서 지역(함수 내) 변수가 생성된다는 것을 의미합니까?
그렇다면 다른 함수가 이 지역 변수를 "보는" 방법 - OnTick() ?


 
MakarFX :

고마워, 나도 똑같은 바보짓을 했어

Makar, 당신은 옳은 일을했지만 지금은 어리석은 일을하고 싶어합니다 ...

대략 5시간 동안 수학을 기억하십시오. 얼마가 (-3)-(-7)이고 얼마가 (-3)+(-7)이 될 것인가

계산기로 확인하기 어려운데 엑셀이 도와드리겠습니다.


 
Mihail Matkovskij :
안녕하세요. 데이터 구조 를 파일에 작성한 다음 로드하기 위해 무료로 사용할 수 있는 MQL 라이브러리를 아는 사람이 있습니까? json 형식, json 파서 등으로 작동하는 라이브러리가 이상적입니다.

문서를 읽도록 보내는 방법조차 모르겠습니다. 읽어보니 어떤 이유에서든 정규 기능이 안맞으면 바로 말을 했어야 했는데...

 
Alexey Viktorov :

Makar, 당신은 옳은 일을했지만 지금은 어리석은 일을하고 싶어합니다 ...

대략 5시간 동안 수학을 기억하십시오. (-3)-(-7)은 얼마이고 (-3)+(-7)은 얼마입니까?

계산기로 확인하기 어려운데 엑셀이 도와드리겠습니다.


네 감사합니다. 나는 결론을 내렸다. 난 괜찮아)