Expertadvisor 코드에 표시기 코드를 추가하는 방법 ??

 

위에서 언급했듯이 확률적 코딩으로 ea를 만들고 싶습니다.

문제는 표시기 코드를 ea에 추가하는 방법입니다 ??

 
albert_lim83 :

문제는 표시기 코드를 ea에 추가하는 방법입니다 ??

특정 제한 사항이 있기는 하지만 iCustom을 사용하는 것이 훨씬 쉽습니다.

그러나 정말로 원하는 경우: 지표 코드를 전문가 고문 코드로 전송. 지표 구조 - MQL4 기사

 

Stochastic의 경우 iCustom이 필요하지 않습니다.

이중 iStochastic ( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
스토캐스틱 오실레이터를 계산하고 그 값을 반환합니다.
매개변수:
상징 - 지표를 계산하는 데 사용해야 하는 데이터의 기호입니다. NULL은 현재 기호를 의미합니다.
기간 - 기간. Timeframe 열거형 값 중 하나일 수 있습니다. 0은 현재 차트 기간을 의미합니다.
%K기간 - %K 라인 기간.
%D기간 - %D 라인 기간.
감속 - 값을 느리게 합니다.
방법 - MA 방법. 이동 평균 메서드 열거 값 중 하나일 수 있습니다.
price_field - 가격 필드 매개변수. 다음 값 중 하나일 수 있습니다. 0 - 낮음/높음 또는 1 - 닫기/닫기.
방법 - 인디케이터 라인 인덱스. 표시줄 식별자 열거 값 중 하나일 수 있습니다.
옮기다 - 표시기 버퍼에서 가져온 값의 인덱스(주어진 기간 전에 현재 막대를 기준으로 이동).
견본:
 if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0))
    리턴(0);
MQL4 함수의 알파벳 인덱스를 찾기 위해 많은 코딩 도움말이 있습니다. https://www.mql5.com/en/forum/122679

 

ea에 rvi 표시기를 추가하는 것은 어떻습니까?

또한 stochastic 을 추가 하는 방법과 동일한 코드를 사용합니까?

 
문서 읽기
 
albert_lim83 :

ea에 rvi 표시기를 추가하는 것은 어떻습니까?

또한 stochastic 을 추가하는 방법과 동일한 코드를 사용합니까?


iCustom() 또는 iRVI()

 
albert_lim83 :

ea에 rvi 표시기를 추가하는 것은 어떻습니까?

또한 stochastic 을 추가하는 방법과 동일한 코드를 사용합니까?


  1. iCustom에 대한 자세한 설명 - MQL4 포럼
 

탈출 EA에 RVI 표시기를 추가하려고 하지만 실패...

그것은 보여

전역 범위에 대한 표현식은 허용되지 않습니다.

예상치 못한 함수 정의

불균형 괄호

이 오류를 수정하는 방법 ??

 

여기 내가 오늘 아침에 한 코드입니다.

누구든지 내가 그것을 고칠 수 있도록 도와 줄 수 있습니까 ??


//+----------------------------------------------- -------------------+
정수 초기화()
{
//---- 표시기 버퍼 매핑
SetIndexBuffer(0,버퍼);
SetIndexBuffer(1, 신호 버퍼);
//---- 표시줄
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- 그리기 설정
SetIndexDrawBegin(0,RVIPeriod+3);
SetIndexDrawBegin(1,RVIPeriod+7);
//---- DataWindow의 이름 및 표시기 하위 창 레이블
IndicatorShortName("RVI("+RVIPeriod+")");
SetIndexLabel(0,"RVI");
SetIndexLabel(1,"RVIS");
//---- 초기화 완료
리턴(0);
}
{
이중 입찰 =MarketInfo(Symbol(),MODE_BID); // Bid 값 요청
이중 요청 =MarketInfo(Symbol(),MODE_ASK); // Ask 값 요청
더블 포인트 =MarketInfo(Symbol(),MODE_POINT);//포인트 요청
반품; // 시작() 종료
if(AccountFreeMargin()<100)
Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());
리턴(0);
}

정수 시작()
{
{
int i,j,nLimit,nCountedBars;
더블 dValueUp, dValueDown, dNum, dDeNum;
//----
if(막대<=RVIPeriod+8) return(0);
//----
nCountedBars=IndicatorCounted();
//---- 가능한 오류 확인
if(nCountedBars<0) return(-1);
//---- 마지막으로 계산된 막대가 다시 계산됩니다.
nLimit=바-RVIPeriod-4;
if(nCountedBars>RVIPeriod+4)
nLimit=막대-nCountedBars;
//---- 첫 번째 버퍼에서 계산된 RVI
for(i=0; i<=nLimit; i++)
{
dNum=0.0;
dDeNum=0.0;
for(j=i; j<i+RVIPeriod; j++)

{
dValueUp=((닫기[j]-열기[j])+2*(닫기[j+1]-열기[j+1])+2*(닫기[j+2]-열기[j+2]) +(닫기[j+3]-열기[j+3]))/6;
dValueDown=((높음[j]-낮음[j])+2*(높음[j+1]-낮음[j+1])+2*(높음[j+2]-낮음[j+2]) +(높음[j+3]-낮음[j+3]))/6;
dNum+=dValueUp;
dDeNum+=dValueDown;
}
if(dDeNum!=0.0)
버퍼[i]=dNum/dDeNum;
또 다른
버퍼[i]=dNum;
}
//---- 두 번째 버퍼에서 카운트된 신호 라인
nLimit=바-RVIPeriod-7;
if(nCountedBars>RVIPeriod+8)
nLimit=막대-nCountedBars+1;
for(i=0; i<=nLimit; i++)
신호버퍼[i]=(버퍼[i]+2*버퍼[i+1]+2*버퍼[i+2]+버퍼[i+3])/6;
//----
리턴(0);
}
{
OrderSend(Symbol,LotSize,Ask,StopLoss,TakeProfit,0,0);
if (닫기<i)
오픈바이();
리턴(0);

OrderSend(Symbol,LotSize,Bid,StopLoss,TakeProfit,0,0);
if (닫기>i)
오픈셀();
리턴(0);
}


더블 GetSizeLot() { 반환(LotSize); }
이중 GetTakeProfitBuy() { return(Ask+TakeProfit*Point); }
이중 GetTakeProfitSell() { 반환(입찰가-가득점*포인트); }
더블 GetStopLossBuy() { return(Bid-StopLoss*Point); }
더블 GetStopLossSell() { return(Ask+StopLoss*Point); }
문자열 GetCommentForOrder() { 반환();}

리턴(0); }

 

게시하기 전에 다른 스레드를 읽으십시오. . . 그러면 다음과 같은 수많은 요청을 보았을 것입니다.

이것을 사용하여 코드를 게시하십시오. . . 읽기 쉽게 만듭니다.

 
albert_lim83 :

여기 내가 오늘 아침에 한 코드입니다.

누구든지 내가 그것을 고칠 수 있도록 도와 줄 수 있습니까 ??

EA에서는 표시기 코드를 사용할 수 없습니다. . . 내가 링크를 게시한 스레드를 읽으십시오. 동일한 수의 {} 및 동일한 수의 () 가 있어야 합니다. . . . 내가 이미 한 번 말하지 않았습니까? https://www.mql5.com/en/forum/139447 다른 게시물에서 배우는 것을 귀찮게하지 않는 것 같아요?