[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 505

 
eugggy :
bar는 외부 설정(Start_Point)에 설정된 시간에 상대적인 현재 막대의 이동입니다.

바 = ?? 제거시 무엇?
 
ask : 무례할 필요가 있습니까?

지금 무례한 것은 당신입니다. 여전히 문제 진술은 없으며, 당신이 엉망으로 만든 것은 일반적으로 무엇인지 알지 못합니다. 의사 코드라고 부를 수도 없습니다.

그리고 내가 당신을 텔레파시로 잘못 보냈다고 생각합니까?

 
sergeev :

바 = ?? 제거시 무엇?
이전 값을 바랍니다. 저것들. 막대 뒤에 문서가 필요하지 않으면 삭제해야 합니다.
 
eugggy :
나는 그것의 이전 가치가

글쎄, 잘하면 작동합니다.

 
sergeev :

글쎄, 잘하면 작동합니다.



:-) 그러나 오류를 지적하십시오. 맞습니까?
 
eugggy :
:-) 그러나 오류를 지적하십시오. 맞습니까?

:) 그리고 왜 bar=??라는 질문에 답하려면 불가능합니까?
 
sergeev :

:) 그리고 왜 bar=??라는 질문에 답하려면 불가능합니까?
글쎄, 주제는 초보자를위한 것이고 삭제 당시 막대가 무엇인지 확신했다면 고문이 작동했을 것입니다. 나는 이렇게 생각한다: 문서가 닫힐 때, 즉 새 막대 가 나타나면 막대 변수 값이 1 증가하고 삭제 기능에서 이미 닫힌 문서의 번호인 bar-1을 설정하고 이전 막대가 지정된 기준에 맞지 않으면 문서가 삭제됩니다. , 숫자가 표시된 값에서 = 변수 막대의 현재 값에서 1을 뺀 값. 이미 삭제된 문서를 삭제하고 있기 때문에 오류가 발생한 것은 아닐까요?
 

아무도 실수를 눈치채지 못했다. 그래서 다시 한 번

코드의 오류를 알려주실 수 있습니까? 감사하다.

//+----------------------------------------------- --------------------+
//| 라인.mq4 |
//| |
//| |
//+----------------------------------------------- --------------------+
//--- 입력 매개변수
외부 부울 판매 = 1; // 판매 권한
외부 부울 구매 = 1;
외부 이중 로트 = 0.1;
외부 int sl = 50;
외부 int tp = 150;

외부 정수 순서 = 10; //

extern 더블 베즈 = 15;
외부 이중 tral_step = 15;
외부 이중 tral_start = 10;

//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----
문자열 Sell_stop ="ss"; //라인 이름을 수동으로 지정
문자열 buy_stop = "bs";

//구입----------------------------------------------- ------ ------------------------------------------ ------

// 라인을 찾아 가격이 닿을 때 주문
if (ObjectFind (buy_stop) > 0 ) //buy_stop 라인이 있는 경우.
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// 라인 터치
{
OrderSend (Symbol(),OP_BUYSTOP, lot, Ask+Point*order,3, Bid-sl*Point, Bid+tp*Point );// 주문이 전송되었습니다.
ObjectDelete(구매_중지); // 라인 제거
}


리턴(0);
}
//+-------------------------

 
TESKATLIPOKA :

아무도 실수를 눈치채지 못했다. 그래서 다시 한 번

코드의 오류를 알려주실 수 있습니까? 감사하다.


여기에 있습니다(코드에 더 많은 오류가 있지만 컴파일러를 통과하지도 않습니다).

if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask ) // касание линии
또한 컴파일러의 관점에서 코드를 보다 정상적인 코드로 변경하더라도:

if ( ObjectGet (buy_stop, OBJPROP_PRICE1) == Ask ) // касание линии

비교하기 전에 실제 값을 먼저 정규화하지 않으면 여전히 이론적으로 올바르지 않습니다. 그보다 더 나쁜 것은 가격이 한 틱에 한 핍 이상 변경되고 조건을 초과하는 경우 정규화 결과를 얻지 못할 수 있다는 것입니다.

다음과 같이 교차 조건을 검색하는 것이 더 정확합니다.

if ( ObjectGet (buy_stop, OBJPROP_PRICE1) <= High[0]) && ( ObjectGet (buy_stop, OBJPROP_PRICE1) >= Low[0])) //  на текущей свече касание линии уже имело место


PS MetaTrader에서 컴파일 후 오류가 있는 위치를 찾는 것은 매우 쉽습니다.

1. "파일" 열의 "도구" 탭에서 괄호 안에 컴파일러가 오류를 감지한 줄 번호와 기호 번호가 쉼표로 구분되어 표시됩니다.

2. "설명" 열의 동일한 탭에서 오류 메시지 를 두 번 클릭하면 편집기의 커서가 컴파일러가 바로 이 오류를 발견한 위치로 이동합니다.

 
eugggy :
글쎄, 주제는 초보자를위한 것이고 삭제 당시 막대가 무엇인지 확신했다면 고문이 작동했을 것입니다.
글쎄, 그냥 물어보십시오 - 막대가 무엇인지 알아내는 방법.