초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 494

 
Nickolay72 :
주문건수는 원칙적으로 부차적인 목표인데 어제까지는 주문을 한번에 하나씩 열었는데 주문이 있는동안 다음주문이 안열렸네요 그리고 어떻게 하면 어드바이저가 주문에 따라 강제로 오픈 오더를 열게 하는건가요? , 이전 막대가 채널 위(아래) 열렸을 때 조건에 따라 열리지 않는 채널?
 if (CountTrades()== 0 ) CheckForOpen();
   else
  {
   if (CountTrades()<max_trades) CheckForOpen();
  }

이 코드 조각을 분석하면 그에 따라 CountTrades() 함수가 0을 반환하면 조건 if (CountTrades()==0) CheckForOpen(); CheckForOpen() 함수가 호출됩니다. 다음 틱에서 주문이 열리면 CountTrades() 함수는 값 1을 반환하고 else 조건이 실행됩니다.

....  
else
  {
   if (CountTrades()<max_trades) CheckForOpen();
  }

CountTrades()<max_trades로 판명되면 CheckForOpen() 함수가 다시 실행됩니다. 코드로 판단하면 max_trades 변수의 값 은 3입니다. 따라서 4개의 주문이 열려 있습니다.

EA가 주문을 올바르게 열지 않으면 CheckForOpen() 함수에서 위치를 열어야 하는 조건을 지정하는 논리를 확인하십시오. 그리고 (CurrTime < EaStartTime || CurrTime >= EaEndTime) 어드바이저의 시간 조건도 확인하십시오. 내가 너라면 (TimeHour(TimeCurrent()) = 시작 시간 && TimeMinute(TimeCurrent()) = 시작 분 ) 함수를 사용합니다. 작업 시작 시간과 분은 int 또는 uint 유형의 변수에 설정됩니다.

 
Artyom Trishkin :
열기 막대 번호 1이 채널 위/아래에 있는 경우.
젠장, 방금 채널 하단 경계 주변의 거래가 묶여 있는 것을 봤습니다. 방금 주문을 복사했지만 하단을 상단으로 수정하지 않았습니다. 이제 수정된 버전을 시도하겠습니다.
 //-----Ставим ордер на покупку.
 if (PriceCurrentOpen< PriceLow &&PriceCurrentOpen<PriceCurrentClose&&SignalCurrent<MacdCurrent&&SignalMAPrevious<SignalMAThis)
 {
  ticket= OrderSend ( NULL ,OP_BUY,Lots,Ask,slippage, 0 , 0 , "5" ,magic, 0 ,Blue);
   if (ticket> 0 )
     return ; 
 }
//-----Ставим ордер на продажу.
 if (PriceCurrentOpen> PriceLow &&PriceCurrentOpen>PriceCurrentClose&&SignalCurrent>MacdCurrent&&SignalMAPrevious>SignalMAThis)
 {
  ticket= OrderSend ( NULL ,OP_SELL,Lots,Bid,slippage, 0 , 0 , "5" ,magic, 0 ,Red);
   if (ticket> 0 )
     return;

	          
 
Vitalii Ananev :

따라서 4개의 주문이 열려 있습니다.

EA가 주문을 올바르게 열지 않으면 CheckForOpen() 함수에서 위치를 열어야 하는 조건을 지정하는 논리를 확인하십시오. 그리고 (CurrTime < EaStartTime || CurrTime >= EaEndTime) 어드바이저의 시간 조건도 확인하십시오. 내가 너라면 (TimeHour(TimeCurrent()) = 시작 시간 && TimeMinute(TimeCurrent()) = 시작 분 ) 함수를 사용합니다. 작업 시작 시간과 분은 int 또는 uint 유형의 변수에 설정됩니다.

3개의 주문을 열었지만 계획한 대로가 아닙니다. 최대 3개의 주문을 원했지만 새 막대마다 하나의 주문을 원했습니다. 여러 막대가 연속으로 긍정적인 신호를 보내는 경우가 있습니다.

그리고 시간에 문제가 없으며 엄격하게 할당 된 시간에 작동합니다.

 
Nickolay72 :

3개의 주문을 열었지만 계획한 대로가 아닙니다. 최대 3개의 주문을 원했지만 새 막대마다 하나의 주문을 원했습니다. 여러 막대가 연속으로 긍정적인 신호를 보내는 경우가 있습니다.

그리고 시간에 문제가 없으며 엄격하게 할당 된 시간에 작동합니다.

조건: 마지막 위치의 시작 막대가 0이 아니고 열린 위치 의 수가 허용된 최대값보다 적은 경우 새 위치를 열 수 있습니다.
 

카르푸토프 2016.01.13_05:14 모스크바 시간. 안녕하세요 Karputov 씨! MQL4로 작성했습니다.

.mq4 파일, .ex4 파일이 있습니다. 그러나 전략 테스터에서는 작동하지 않습니다. 궁극적인

제 목표는 MT4용 Expert Advisor를 작성하는 것이었습니다. MQL5에서 나는 .mq5를 얻었고

.ex5 파일. 그리고 .ex5 파일은 거래를 열었습니다. 네 번째 버전에는 다음과 차이점이 있습니다.

다섯째, 나는 여전히 MQL 언어에 정통하지 않으므로 잘 작동하지 않습니다.

이제 나는 무엇이 잘못되었는지 많이 이해하기 시작하지 않았고 테스터의 로그 파일이 저장되었습니다. 나

테스터가 작성한 내용을 번역해 보겠습니다. 그 동안 내가 당신에게 묻습니다, 당신은 나에게 말할 수 있습니까?

코드에서 무엇이 잘못 되었습니까? 당신이 대답하는 동안, 나는 나 자신을 시험할 것입니다

알아내다.
네 번째 버전의 편집기에서 철자를 발견하고 놀랐습니다.

그가 무엇을 쓸 것인지에 대한 조언자. 그러나 나는 그것을 쓰지 않았다. 나는 동봉한다

테스터 로그 파일 및 스크린샷. 05:30 모스크바 시간. 테스터 로그 카르푸토프 카르푸토프

파일:
20160112.log  7 kb
 
Николай Никитюк :

2016.01.13_05:14 모스크바 시간. 안녕하세요 Karputov 씨! MQL4로 작성했습니다.

.mq4 파일, .ex4 파일이 있습니다. 그러나 전략 테스터에서는 작동하지 않습니다.

그리고 왜 사진 형식으로 코드를 게시 했습니까? )) 누가 그들을 이해할 것인가?
 
Николай Никитюк :


메시지에 코드를 올바르게 삽입하십시오. 포럼에 코드를 올바르게 삽입하십시오.
 

오류 설명은 어디에서 찾을 수 있습니까?

나는 컴파일러가 무엇을 좋아하지 않는지 이해할 수 없습니다. 왜 나에게 경고합니까?

가능한 오류에 대한 연산자 우선 순위를 확인하십시오. 우선 순위를 명확히 하기 위해 괄호를 사용


if(Low[X]>PriceBuy && High[X]>PriceBuy ||
               Low[X]<PriceBuy && High[X]<PriceBuy)
               calcBarX++;

그리고 여기

표현은 효과가 없다


         for( calc_day;calc_day>0; calc_day--)
           {
            if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++;
            else break;
           }

 
-Aleks- :

오류 설명은 어디에서 찾을 수 있습니까?

나는 컴파일러가 무엇을 좋아하지 않는지 이해할 수 없습니다. 왜 나에게 경고합니까?

실제로 컴파일러는 오류 텍스트 외에 오류가 발생한 코드의 줄 번호와 줄의 위치도 보고합니다.
 
Karputov Vladimir :
실제로 컴파일러는 오류 텍스트 외에 오류가 발생한 코드의 줄 번호와 줄의 위치도 보고합니다.
이것은 첫 번째 경우에 비교 기호가 차례로 나타납니다. 분명히 "또는" 사이에 대괄호를 넣어야 하고 두 번째 경우에는 논리식 이 쓰여진 대괄호에서 맹세합니다.
사유: