글쎄, 주제는 초보자를위한 것이고 삭제 당시 막대가 무엇인지 확신했다면 고문이 작동했을 것입니다. 나는 이렇게 생각한다: 문서가 닫힐 때, 즉 새 막대 가 나타나면 막대 변수 값이 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(구매_중지); // 라인 제거 }
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. "설명" 열의 동일한 탭에서 오류 메시지 를 두 번 클릭하면 편집기의 커서가 컴파일러가 바로 이 오류를 발견한 위치로 이동합니다.
bar는 외부 설정(Start_Point)에 설정된 시간에 상대적인 현재 막대의 이동입니다.
바 = ?? 제거시 무엇?
지금 무례한 것은 당신입니다. 여전히 문제 진술은 없으며, 당신이 엉망으로 만든 것은 일반적으로 무엇인지 알지 못합니다. 의사 코드라고 부를 수도 없습니다.
그리고 내가 당신을 텔레파시로 잘못 보냈다고 생각합니까?
바 = ?? 제거시 무엇?
나는 그것의 이전 가치가
글쎄, 잘하면 작동합니다.
글쎄, 잘하면 작동합니다.
:-) 그러나 오류를 지적하십시오. 맞습니까?
:) 그리고 왜 bar=??라는 질문에 답하려면 불가능합니까?
:) 그리고 왜 bar=??라는 질문에 답하려면 불가능합니까?
아무도 실수를 눈치채지 못했다. 그래서 다시 한 번
코드의 오류를 알려주실 수 있습니까? 감사하다.
//+----------------------------------------------- --------------------+
//| 라인.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);
}
//+-------------------------
아무도 실수를 눈치채지 못했다. 그래서 다시 한 번
코드의 오류를 알려주실 수 있습니까? 감사하다.
여기에 있습니다(코드에 더 많은 오류가 있지만 컴파일러를 통과하지도 않습니다). 또한 컴파일러의 관점에서 코드를 보다 정상적인 코드로 변경하더라도:
비교하기 전에 실제 값을 먼저 정규화하지 않으면 여전히 이론적으로 올바르지 않습니다. 그보다 더 나쁜 것은 가격이 한 틱에 한 핍 이상 변경되고 조건을 초과하는 경우 정규화 결과를 얻지 못할 수 있다는 것입니다.
다음과 같이 교차 조건을 검색하는 것이 더 정확합니다.
PS MetaTrader에서 컴파일 후 오류가 있는 위치를 찾는 것은 매우 쉽습니다.
1. "파일" 열의 "도구" 탭에서 괄호 안에 컴파일러가 오류를 감지한 줄 번호와 기호 번호가 쉼표로 구분되어 표시됩니다.
2. "설명" 열의 동일한 탭에서 오류 메시지 를 두 번 클릭하면 편집기의 커서가 컴파일러가 바로 이 오류를 발견한 위치로 이동합니다.
글쎄, 주제는 초보자를위한 것이고 삭제 당시 막대가 무엇인지 확신했다면 고문이 작동했을 것입니다.