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

 

카운터?

나는 몇 달 동안 지표를 프로그래밍해 왔기 때문에 전문가가 조금 부족하지만 그것을 해결하려고 합니다. 도중에 약간의 도움이 필요합니다. 내가 함께 던진 내 전문가는 거래를 마감해야 하는 조건이 있는 경우 바 클로즈에서 확인하도록 합니다.

전역 변수로 시작합니다.

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

좋습니다. 막대당 한 번만 수행하도록 설정되어 있습니다. 내가하고 싶은 것은 90 초 또는 60 초 또는 무엇이든 증가시키는 기능 을 가진 다음 해당 시간이 증가한 후 bool을 true로 설정하는 것입니다. 기본적으로 표시줄을 닫는 대신 60, 90, 120초 또는 무엇이든 표시기를 확인하고 싶습니다. 어떻게 해야 하나요?

도움을 주셔서 감사합니다.

- 니타니1

 
nittany1:
나는 몇 달 동안 지표를 프로그래밍해 왔기 때문에 전문가가 조금 부족하지만 그것을 해결하려고 합니다. 그 과정에서 약간의 도움이 필요합니다. 내가 함께 던진 내 전문가는 거래를 마감해야 하는 조건이 있는 경우 바 클로즈에서 확인하도록 합니다.

전역 변수로 시작합니다.

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

좋습니다. 막대당 한 번만 수행하도록 설정되었습니다. 내가하고 싶은 것은 90 초 또는 60 초 또는 무엇이든 증가시키는 기능을 가진 다음 해당 시간이 증가한 후 bool을 true로 설정하는 것입니다. 기본적으로 표시줄을 닫는 대신 60, 90, 120초 또는 무엇이든 표시기를 확인하고 싶습니다. 어떻게 해야 하나요?

도움을 주셔서 감사합니다.

- 니타니1

이렇게 해야 합니다. MT는 틱 기반 실행을 사용하므로 초당 정확도는 불가능합니다(Init() 하위에서 모든 것을 반복하지 않는 한).

if (CallIndicatorsCheck())

{

// 여기에 코드

}

bool CallIndicatorsCheck()

{

정적 날짜 시간

정수 초 = 90;

부울 플래그;

if (CurrTime() >= Oldtime) {

Oldtime = CurrTime() + 초;

플래그 = 참; }

반환(플래그);

}

 

댓글 배치

누군가 나에게 기본 왼쪽 상단이 아닌 화면의 오른쪽 상단 모서리에 주석을 추가하는 코드를 보여줄 수 있습니까?

감사해요!

 
wolfe:
누군가 나에게 기본 왼쪽 상단이 아닌 화면의 오른쪽 상단 모서리에 주석을 추가하는 코드를 보여줄 수 있습니까? 감사해요!

당신은 할 수 없습니다. MQL4 매뉴얼에서:

void Comment( ...) 차트의 왼쪽 상단 모서리에 사용자가 정의한 주석을 출력하는 함수입니다.

죽음에 의해 필요한 경우 개체를 만들 수 있습니다.

 
wolfe:
누군가 나에게 기본 왼쪽 상단이 아닌 화면의 오른쪽 상단 모서리에 주석을 추가하는 코드를 보여줄 수 있습니까? 감사해요!

LinusGuy가 맞습니다. 직접적인 방법은 없습니다. 쉬운 해결 방법은 주석을 공백으로 채우는 것입니다.

Comment("안녕하세요!");

텍스트를 오른쪽으로 오프셋합니다.

줄 바꿈을 넣어 페이지를 드롭다운할 수도 있습니다.

Comment("\n\n\n\n\n텍스트");

또는 줄바꿈과 공백을 결합하여 화면의 오른쪽 하단 모서리에 인쇄합니다.

 
mog:
LinusGuy가 맞습니다. 직접적인 방법은 없습니다. 쉬운 해결 방법은 주석을 공백으로 채우는 것입니다.

Comment("안녕하세요!");

텍스트를 오른쪽으로 오프셋합니다.

줄 바꿈을 넣어 페이지를 드롭다운할 수도 있습니다.

Comment("\n\n\n\n\n텍스트");

또는 줄바꿈과 공백을 결합하여 화면의 오른쪽 하단 모서리에 인쇄합니다.

도와 주셔서 감사합니다. 시도해 볼게!

 

거래 손실 후 X 막대에 대한 새로운 거래 없음

안녕 팀 - 누군가가 도와줄 수 있기를 바랍니다.

마지막 거래가 손실인 경우 10바에 대해 새로운 거래가 시작되는 것을 어떻게 중지합니까?

건배

 

아래 함수 는 10번째 과거 막대(현재 막대는 0)가 열릴 때 또는 그 이후에 계정 기록에 손실 거래가 있는 동안 true를 반환합니다.

그렇지 않으면 false를 반환합니다.

bool postMortem()

{

datetime since = Time[ bar+10 ];

for ( int i = OrdersHistoryTotal() - 1; i >= 0; i-- ) {

if ( ! OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )

continue;

if ( OrderProfit() = since )

return( true );

}

return( false );

}

[/PHP]

If you add that function to your EA, then include a statement like the following in the start() function, then Bob's your uncle.

[PHP]if ( postMortem() ) return( 0 );
 

그것에 대해 아주 많이 thx - 나는 그것을 시도 할 것입니다

문안 인사

 

여러분, 같은 문제가 있습니까?

나는 전문가를 코딩했다. 가격이 하나의 지표와 같을 때 포지션을 열고 싶습니다. 이를 위해 다음 문장을 사용합니다.

//구매

이중 표시 과거 = icustom(...........,1);

이중 표시기now = icustom(...........,0);

if (close[1]indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();

그러나 이러한 만족으로 전문가는 가격이 지표를 넘어갈 때 포지션을 오픈할 뿐만 아니라 지표 위의 포지션도 엽니다. 나는 그것이 지표를 지날 때만 전문가가 포지션을 열 수 있기를 원하므로 다음과 같이 시도했습니다.

//구매

이중 표시 과거 = icustom(...........,1);

이중 표시기now = icustom(...........,0);

if (close[1]<indicatorpast && close[0] == indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0] == indicatornow) OpenSELL();

그러나 이 진술은 실행되지 않습니다.

무슨 일이 일어나는지 아세요? 진술에 오류가 없다고 생각하기 때문입니다.

문안 인사.