코딩 도움말 - 페이지 188

 

안녕 mladen 또는 누구라도,

mt4 플랫폼에 몇 가지 기본 표시기가 있다는 것을 알았습니다(일부는 사용자 지정 표시기 부분에서 반복되지만). 하지만 코드가 정확하지 않다고 생각합니다. 기본 표시기의 코드를 검색하거나 보는 방법, 알려주셔서 감사합니다. .

 
kenwa:
안녕하세요 mladen 또는 누군가, mt4 플랫폼에 몇 가지 기본 표시기가 있다는 것을 알았습니다(일부는 사용자 지정 표시기 부분에서 반복되지만). 하지만 코드가 정확하지 않다고 생각합니다. 기본 표시기의 코드를 검색하거나 보는 방법, 감사합니다. 나에게 많은 정보를 제공합니다.

당신은 할 수 없습니다

내장 표시기(터미널에서 직접 실행)

 

내장된 표시기가 기능에서 사용자 정의 표시기 세션의 표시기보다 나은 것 같습니다. 실제로 코드를 알 방법이 없습니까?

 

누군가 나에게 단일 파일에서 다중 시간 프레임을 사용하는 방법을 물었습니다(내장 함수를 호출할 수 없는 경우)

여기에 하나의 간단한 예와 몇 가지 설명이 있습니다.

__________________________________________

첨부된 표시기는 하나에 3개의 표시기처럼 작동하며 코드에서 수행된 작업과 시간에 대한 주석을 찾을 수 있습니다. 이것이 일부 사람들이 단일 파일 올바른 다중 시간 프레임 표시기를 만드는 방법을 명확히 하는 데 도움이 되길 바랍니다(무엇보다도 목표 시간 프레임의 막대 수가 변경되었는지 가정하지 않고 항상 정확한 막대 수를 계산합니다).

따라서 이 간단한 단일 파일 다중 시간 프레임 표시기는 다중 시간 프레임 표시기의 템플릿으로 쉽게 사용할 수 있습니다.

파일:
 

안녕하세요 mladen님

가능하고 iStochasticOnArray를 수행하는 방법을 알고 있습니까? 이를 수행하는 템플릿이나 공식이 있습니까? 정보 감사합니다.

 
kenwa:
안녕하세요 mladen, 가능하고 iStochasticOnArray를 수행하는 방법을 알고 있습니까? 이를 수행하는 템플릿이나 공식이 있습니까? 정보를 주셔서 감사합니다.

켄와

내장 함수 같은 것은 없습니다. 이 게시물에서 해당 기능을 작성하는 방법과 사용 방법을 확인할 수 있습니다. https://www.mql5.com/en/forum/177239/page34

 

안녕하세요 mladen:

나에게 조금은 깊은

egdouble iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0) 두 배 내에서 두 배입니까? 이 방법은 mq4 내에서 점유되는 인덱스 버퍼를 줄일 수 있습니까?

기능이 나에게 조금 이상합니다.

stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i);

일부 명확히 해 주셔서 감사합니다.

 
mladen:
다른 wav 파일을 허용하지 않는 이유를 모르겠습니다.

코드에서 변경한 경우 수락해야 합니다.

5번 반복하려면 루프에 넣어야 하지만 문제가 발생할 수 있습니다(사운드 파일이 너무 긴 경우).

다음은 내가 사용한 코드입니다(루프를 수행하는 방법을 알기 위해 코딩에 대해 거의 알지 못합니다).

//+----------------------------------------------- ------------------

#재산권 저작권 "https://www.forex-tsd.com"

#속성 링크 "https://www.forex-tsd.com"

#속성 표시기_차트_창

//------------------------------------------------ ------------------

외부 int alertsForNotOlderThan = 300;

외부 정수 alertsForMagicNumber = 0;

외부 문자열 alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true;

extern bool alertsNotification = false;

extern bool alertsEmail = 거짓;

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

int 티켓[];

부울 경고[];

문자열 기호[];

정수형[];

정수배[];

정수 초기화() { 반환(0); }

int deinit() { 반환(0); }

정수 시작()

{

//

//

// 주문 데이터 수집

//

//

(int i=OrdersTotal()-1; i>=0; i--)

{

(!OrderSelect(i,SELECT_BY_POS)) 계속하면;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 계속;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) 계속;

if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) 계속

//

//

//

//

//

for (int k=ArraySize(티켓); k>0; k--)

if (OrderTicket()==티켓[k-1]) 휴식;

만약 (k==0)

{

정수 크기 = ArraySize(티켓)+1;

ArrayResize(티켓, 크기); 티켓 = OrderTicket();

ArrayResize(경고,크기); 경고 = 거짓;

ArrayResize(기호, 크기); 기호 = OrderSymbol();

ArrayResize(유형, 크기); 유형 = 주문 유형();

ArrayResize(배,크기); 시간 = OrderOpenTime();

}

}

//

//

// 경고가 필요한 주문이 있는지 확인

//

//

(i=ArraySize(티켓)-1; i>=0; i--)

{

문자열 유형 = "";

만약 (!경고)

{

경고 = 참;

스위치(유형)

{

경우 OP_BUY : 유형 = "구매"; 부서지다;

경우 OP_SELL : 유형 = "판매"; 부서지다;

경우 OP_BUYSTOP : 유형 = "매수 스톱"; 부서지다;

경우 OP_BUYLIMIT : 유형 = "구매 한도"; 부서지다;

경우 OP_SELLSTOP : 유형 = "판매 중지"; 부서지다;

경우 OP_SELLLIMIT : 유형 = "판매 한도"; 부서지다;

}

doAlert(유형+"는 "+기호"에 대해 "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+"에 열렸습니다.

}

}

리턴(0);

}

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

무효 doAlert(문자열 doWhat)

{

문자열 메시지;

메시지 = doWhat;

if (alertsMessage) 경고(메시지);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);

if (alertsNotification) SendNotification ("주문 알림"+메시지);

if (alertsSound) PlaySound("할렐루야.wav");

}

그러나 트리거되면 일반 경고가 울립니다.

생각: PlaySound를 변경할 수 없다면 1초마다 10회 동안 짧은 일반 경고를 재생하는 루프를 코딩할 수 있습니까? - 적어도 하나의 규칙적인 경고음보다 나를 깨우는 데 훨씬 더 많은 일을 할 것입니다. . . .

고맙습니다

 
person77:
다음은 내가 사용한 코드입니다(루프를 수행하는 방법을 알기 위해 코딩에 대해 거의 알지 못합니다).

//+----------------------------------------------- ------------------

#재산권 저작권 "https://www.forex-tsd.com"

#속성 링크 "https://www.forex-tsd.com"

#속성 표시기_차트_창

//------------------------------------------------ ------------------

외부 int alertsForNotOlderThan = 300;

외부 정수 alertsForMagicNumber = 0;

외부 문자열 alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true;

extern bool alertsNotification = false;

extern bool alertsEmail = 거짓;

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

int 티켓[];

부울 경고[];

문자열 기호[];

정수형[];

정수배[];

정수 초기화() { 반환(0); }

int deinit() { 반환(0); }

정수 시작()

{

//

//

// 주문 데이터 수집

//

//

(int i=OrdersTotal()-1; i>=0; i--)

{

(!OrderSelect(i,SELECT_BY_POS)) 계속하면;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 계속;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) 계속;

if (alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())) 계속

//

//

//

//

//

for (int k=ArraySize(티켓); k>0; k--)

if (OrderTicket()==티켓[k-1]) 휴식;

만약 (k==0)

{

정수 크기 = ArraySize(티켓)+1;

ArrayResize(티켓, 크기); 티켓 = OrderTicket();

ArrayResize(경고,크기); 경고 = 거짓;

ArrayResize(기호, 크기); 기호 = OrderSymbol();

ArrayResize(유형, 크기); 유형 = 주문 유형();

ArrayResize(배,크기); 시간 = OrderOpenTime();

}

}

//

//

// 경고가 필요한 주문이 있는지 확인

//

//

(i=ArraySize(티켓)-1; i>=0; i--)

{

문자열 유형 = "";

만약 (!경고)

{

경고 = 참;

스위치(유형)

{

경우 OP_BUY : 유형 = "구매"; 부서지다;

경우 OP_SELL : 유형 = "판매"; 부서지다;

경우 OP_BUYSTOP : 유형 = "매수 스톱"; 부서지다;

경우 OP_BUYLIMIT : 유형 = "구매 한도"; 부서지다;

경우 OP_SELLSTOP : 유형 = "판매 중지"; 부서지다;

경우 OP_SELLLIMIT : 유형 = "판매 한도"; 부서지다;

}

doAlert(유형+"는 "+기호"에 대해 "+TimeToStr(times,TIME_DATE|TIME_SECONDS)+"에 열렸습니다.

}

}

리턴(0);

}

//------------------------------------------------ -------

//

//------------------------------------------------ -------

//

//

//

//

//

무효 doAlert(문자열 doWhat)

{

문자열 메시지;

메시지 = doWhat;

if (alertsMessage) 경고(메시지);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);

if (alertsNotification) SendNotification("주문 알림 "+메시지);

if (alertsSound) PlaySound("할렐루야.wav");

}

그러나 트리거되면 일반 경고가 울립니다.

생각: PlaySound를 변경할 수 없다면 1초마다 10회 동안 짧은 일반 경고를 재생하는 루프를 코딩할 수 있습니까? - 적어도 하나의 규칙적인 경고음보다 나를 깨우는 데 훨씬 더 많은 일을 할 것입니다. . . .

고맙습니다

사람77,

그것을 위해 일했던 것은 열린 차트 로 이동한 다음 도구/옵션/이벤트로 이동한 다음 경고 시 단순히 wav를 변경하는 것입니다. 원하는 파일로 이동하지만 한동안 이 작업을 수행하지 않았으므로 이것이 여전히 작동하는지 확실하지 않고 사용 중인 wav 파일이 사운드 폴더에 있는지 확인하십시오.

파일:
alert.png  99 kb
 

mrtools - 감사합니다. 잘했습니다!