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

 
그리고 도서관 업무와 관련된 또 다른 질문.
라이브러리 파일을 만들고 컴파일했는데 모든 것이 오류 없이 진행되었습니다.
함수를 표시기 코드로 가져오고 컴파일했는데 모든 것이 정상입니다.
표시기가 실행될 때 가져온 기능 이 실행되지 않았습니다.

표시기 자체의 코드에서 모든 것이 이 기능에 대해 작동합니다. 다음은 라이브러리 코드입니다.

 //+------------------------------------------------------------------+
//|                                                         lib1.mq4 |
//|                                         Copyright © 2012, Fox.RM |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Fox.RM"
#property link       "http://www.metaquotes.net"
#property library
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double Sredn( double ArrSr[])
{
double a= 1 ,c,step= 1 / 20 ;
for ( int i= 0 ;i<= 20 ;i++)
{ if (ArrSr[i]== 0 ){a*= 1 ;} else {a*= MathAbs (ArrSr[i]);}}
c= MathPow (a, step);
   return (c);
}
//+------------------------------------------------------------------+

이것은 표시기 코드의 호출입니다.

 #import "lib1.ex4"
     double Sredn( double & ArrSr[]);
     void SetText( string name, string name2, string text, string text2, color c, 
int size);
#import

 
Fox_RM :
모두 좋은 하루!
추적하기 위해 전문가용 지표의 코드를 다시 만들기로 결정했습니다.
그의 신호를 처리합니다.
오류를 컴파일할 때 0. 테스터에서도 오류 없이 실행되지만 둘 다

하나의 거래, 무엇이 잘못 되었습니까?

Z.Y. 나는 어리석은 실수가 많을 것이라고 확신합니다. 공백을 쏴주세요.

 int counted_bars= IndicatorCounted (); 

당신은 당신이 전문가와 지표에 대한 기능을 가지고 있다고 씁니다.

필요한 막대의 수를 세십시오. 더 이상 필요하지 않습니다.


둘째, 이미 이 신호에 대한 시작이 있는지 확인하십시오. 그렇지 않으면 매 틱마다 새로운 주문을 받게 됩니다.

셋째, iCustom 기능을 살펴보십시오.

 
ilunga :

당신은 당신이 전문가와 지표에 대한 기능을 가지고 있다고 씁니다.

강제로 필요하고 더 이상 필요하지 않은 막대의 수를 계산하십시오.

강제로 계산하는 방법?
 
Fox_RM :
모두 좋은 하루!
추적하기 위해 전문가용 지표의 코드를 다시 만들기로 결정했습니다.
그의 신호를 처리합니다.
오류를 컴파일할 때 0. 테스터에서도 오류 없이 실행되지만 둘 다

하나의 거래, 무엇이 잘못 되었습니까?

Z.Y. 나는 어리석은 실수가 많을 것이라고 확신합니다. 공백을 쏴주세요.


개점가
 if (Sredn(TP_UP)>= 2.5 ) OrderSend ( Symbol (),OP_SELL, 0.1 ,Close[i], 2 , 50 , 20 );
 if (Sredn(TP_DN)>= 2.0 ) OrderSend ( Symbol (),OP_BUY, 0.1 ,Close[i], 2 , 50 , 20 );
 
Fox_RM :
강제로 계산하는 방법?
Expert Advisor와 거래 시작의 경우 0번째 막대의 신호만 중요하지 않습니까? 따라서 한계 막대에서 이 계산에 필요한 숫자로 계산 주기를 줄이십시오.
 
r772ra :

개점가

저것들. 이 조건을 사용하여 막대를 다시 계산하시겠습니까?

그러나 내 표시기에서 TP_UP 및 TP_DN 배열은 각 틱 에서 계산됩니다 . 따라서 먼저 계산해야 합니다.

 
ilunga :
Expert Advisor와 거래 시작의 경우 0번째 막대의 신호만 중요하지 않습니까? 따라서 한계 막대에서 이 계산에 필요한 숫자로 계산 주기를 줄이십시오.

NewBar() 함수 를 사용하여 새 막대 에서 주문을 열려고 했습니다. 이것을 위해 사용해야합니까?

예를 들어 if (NewBar())i++; 이 같은.

 
ilunga :
Expert Advisor와 거래 시작의 경우 0번째 막대의 신호만 중요하지 않습니까? 따라서 한계 막대에서 이 계산에 필요한 숫자로 계산 주기를 줄이십시오.
그리고 여전히 나는 전문가에 대한 이 두 계산의 근본적인 차이점이 무엇인지 잘 이해하지 못합니다.(
 
Fox_RM :
그리고 도서관 업무와 관련된 또 다른 질문.
라이브러리 파일을 만들고 컴파일했는데 모든 것이 오류 없이 진행되었습니다.
함수를 표시기 코드로 가져오고 컴파일했는데 모든 것이 정상입니다.
표시기가 실행될 때 가져온 기능이 실행되지 않았습니다.

표시기 자체의 코드에서 모든 것이 이 기능에 대해 작동합니다. 다음은 라이브러리 코드입니다.

이것은 표시기 코드의 호출입니다.

표시기의 init()에서 배열이 올바르게 준비되지 않았습니까? 올바르게 이해했습니다 - 가져온 기능 이 작동하지 않습니까?
 
TarasBY :
표시기의 init()에서 배열이 올바르게 준비되지 않았습니까? 올바르게 이해했습니다 - 가져온 기능이 작동하지 않습니까?
맞아요. 확인해보니 다 맞는 것 같습니다. 게다가 프로그램 자체에서 사용할 때 모든 것이 올바르게 작동하는 이유는 무엇입니까?