코딩하는 방법? - 페이지 270

 

IndicatorCounted 및 표시기 버퍼 를 동기화 상태로 유지합니다.

안녕,

내 질문은 사용자 지정 표시기에서 버퍼를 슬라이딩하는 것입니다. 다른 포럼에서 물어봤는데 소용이 없었습니다.

예:

암호:

#define MAX_LOOK_BACK 5

#property indicator_minimum 0

#property indicator_maximum 100

#property indicator_color1 DodgerBlue

#property indicator_separate_window

double rsiBuf[];

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- check for possible errors

if(counted_bars < 0)

return(-1);

//---- the last counted bar will be recounted

if(counted_bars > 0)

counted_bars--;

limit=Bars-counted_bars;

//---- main loop

Print("indicator limit: ", limit);

if(MAX_LOOK_BACK < limit)

limit = MAX_LOOK_BACK;

//Calculate from right to left

for(int i = 0; i < limit; i++)

{

rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);

}

}

실행 중 표시기는 최근 5개 막대의 최신 RSI 값을 계산합니다. (나는 쉬운 테스트를 위해 MAXLOOK_BACK 최대값을 넣었습니다.) 예를 들어 limit==2(그리고 limit==2가 EA에서 iCustom을 통해 호출할 때 내 테스트에서 많이 발생)인 경우 막대 0과 막대 1을 계산합니다. 값을 설정하고 각각 RSI[0] 및 RSI[1]에 쓰고 나머지 버퍼는 건드리지 않습니다. 내가 본 모든 사용자 지정 표시기는 이런 식으로 작성되었습니다. limit < MAX_LOOK_BACK 이면 버퍼를 슬라이드해야 하지 않습니까? RSI[0] 및 RSI[1]을 덮어쓰지만 이러한 요소의 이전 값은 RSI[2] 및 RSI[3]에 있어야 합니다. 맞습니까?

시각화하려면:

눈금=0 AND 한계 = 5 ==> RSI[0] = 33.33 RSI[1] =44,44 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77

이제 최신 2개의 RSI 값이 88,88 및 99,99이고 배열이 아래와 같다고 가정합니다.

눈금=1 AND 한계 = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77

그러나 다음과 같이 되어서는 안 됩니다.

눈금=1 AND 한계 = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=33,33 RSI[3]=44,44 RSI[4] = 55.55

2개의 새로운 막대가 나오면 이전 막대 값을 2로 밀어야 하지 않습니까? 이전왜 모든 지표가 이런 식으로 작성되었으며 값의 슬라이딩이 없습니다. 그리고 그들이 추세선을 올바르게 그리는 이유.

 

나는 Keltner 밴드를 사용하여 포지션을 종료하는 EA에서 작업하고 있습니다(이익 및 손실 모두에 대해). 그러나 2랏으로 평균을 낼 때마다 EA는 첫 번째 항목을 무시합니다. 새 차트로 진입하는 것 외에 이 문제에 대한 해결책이 있습니까? 감사해요

파일:
 
mezarashii:
나는 Keltner 밴드를 사용하여 포지션을 종료하는 EA에서 작업하고 있습니다(이익 및 손실 모두에 대해). 그러나 2랏으로 평균을 낼 때마다 EA는 첫 번째 항목을 무시합니다. 새 차트로 진입하는 것 외에 이 문제에 대한 해결책이 있습니까? 감사해요

여기에 ea를 게시하십시오.

 

코더는 아직 소스 코드를 제공하지 않았지만 이것이 그 자체로 유용하기를 바랍니다. 모든 피드백은 대단히 감사합니다.

파일:
 

조건부 삭제 보류 중

조건부 삭제 보류 스크립트 또는 코드를 찾고 있습니다.

기본적으로 다음을 실행할 수 있기를 원합니다.

IF 요청은 200MA H1입니다.

보류 중인 주문을 200MA 미만으로 오픈/라이브 유지

어떤 아이디어?

 
 
 

10 쌍에 대한 주간 공개 가격 을 동시에 얻으십시오.

안녕하세요 MT4 초보입니다. 10쌍의 주간 시가에 동시에 액세스하는 스크립트를 작성하여 기술을 자동화하려고 합니다. 단일 EA 또는 스크립트를 사용하여 주간 차트에 하나씩 액세스할 수 없습니다. 아무도 그렇게하는 가장 좋은 방법이 무엇인지 조언해 주시겠습니까? 많은 감사 .....

 
novalight:
안녕하세요 MT4 초보입니다. 10쌍의 주간 시가에 동시에 액세스하는 스크립트를 작성하여 기술을 자동화하려고 합니다. 단일 EA 또는 스크립트를 사용하여 주간 차트에 하나씩 액세스할 수 없습니다. 아무도 그렇게하는 가장 좋은 방법이 무엇인지 조언해 주시겠습니까? 많은 감사 .....

안녕,

iOpen 기능을 결합해야 합니다.

예를 들어 gbpusd, eurusd 및 usdjpy의 공개 가격 을 주석에 표시하고 싶다고 가정해 보겠습니다.

코드 스니펫은 다음과 같습니다.

이중 openPair1 = iOpen("EURUSD",PERIOD_W1,0);

이중 openPair2 = iOpen("GBPUSD",PERIOD_W1,0);

이중 openPair3 = iOpen("USDJPY",PERIOD_W1,0);

Comment("EURUSD 주간 오픈: "+openPair1+\nGBPUSD 주간 오픈: "+openPair1+"\nUSDJPY 주간 오픈: "+openPair1);

 

2개의 추가 입력과 함께 쌍을 입력으로 사용하는 것을 선호합니다.

접두사 및 접미사 입력은 브로커가 기본 쌍 이름에 무언가를 추가할 때 번거로움을 피합니다.

외부 문자열 pair_prefix = "";

외부 문자열 pair_suffix = ""; // IBFX 미니 계정의 경우 m을 입력합니다.

외부 문자열 pair1 = "EURUSD;

외부 문자열 pair2 = "GBPUSD";

외부 문자열 pair3 = "USDJPY";

문자열 myPair1, myPair2, myPair3;

정수 초기화()

{

myPair1 = pair_prefix + pair1 + pair_suffix;

myPair2 = pair_prefix + pair2 + pair_suffix;

myPair3 = pair_prefix + pair3 + pair_suffix;

리턴(0);

}

정수 시작()

{

이중 openPair1 = iOpen(myPair1, PERIOD_W1,0);

이중 openPair2 = iOpen(myPair2, PERIOD_W1,0);

이중 openPair3 = iOpen(myPair3, PERIOD_W1,0);

Comment(pair1 + "주간 오픈: "+openPair1+"\n" + pair2 + " 주간 오픈: "+openPair2+"\n" + pair3 " " 주간 오픈: "+openPair3);

}

물론 10 쌍을 사용할 때 배열을 사용합니다.

로버트 힐 일명 MrPip