[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 456

 
sergeev писал(а) >>

스크립트가 아닌 전문가로 만들고 전문가에서 스크립트 기능 코드의 실행 시간을 제어합니다. 때가 되었습니다. 스크립트 코드를 실행합니다.

이 문구로 터미널이 닫혀 있음을 깨달았습니다. 나는 당신에게 대답합니다 - 스크립트는 터미널 자체를 시작할 수 없습니다.

당신이 쓰는 방법은 당신이 이해하는 방법입니다. 그것이 당신이 의미하는 바가 아니라면, 당신 자신을 더 명확하게 설명하십시오.

아이디어의 가치는 무엇입니까? 그것이 그렇게 필요했다면 프로거가 정말로 오랫동안 이것을 낙서하지 않았을까요 ... 이것은 개인적으로 필요합니다.

1. 스크립트 내용 복사

2. MetaEditor를 통해 새로운 Expert Advisor 만들기

3. 스크립트 코드 붙여넣기

4. 시간 함수를 추가하는 방법과 삽입 위치 (저는 프로그래머가 아닙니다)

9-00에서 9-01까지 기능 작업 시간 필요

우리가 편집할 스크립트 코드: (도와주신 모든 분들께 미리 감사드립니다)

#property copyright "Kim Igor V. aka KimIV"
#속성 링크 " https://www.mql5.com/go?link=http://www.kimiv.ru/ "
#property show_inputs

#가져오기 "kernel32.dll"
int GetUserDefaultLCID();
int GetLocaleInfoA(
int Locale, // 로케일 식별자
int LCType, // 정보 유형
string lpLCData, // 정보용 버퍼 주소
int cchData // 버퍼의 크기
);
#수입

//+------ 외부 스크립트 매개변수 -------------------------------------- -----+
extern bool bCommission = False; // 커미션 업로드
extern bool bSwap = 참; // 스왑 언로드
extern bool bComment = True; // 댓글 업로드
extern bool bMagic = True; // 매직넘버 언로드

// LCTYPE 상수
#define LOCALE_SDECIMAL 0x000E // 소수점 구분 기호에 사용되는 문자.

//+----------------------------------------------- ------------------------------+
//| 스크립트 프로그램 시작 기능 |
//+----------------------------------------------- ------------------------------+
무효 시작() {
int dg, i, k=OrdersHistoryTotal();
문자열 FileName=DoubleToStr(계정 번호(), 0)+".csv", st;

파일삭제(파일명);
st="티켓;개장시간;종류;대수;품목;가격;SL;TP;종료시간;가격";
if (bCommission) st=st+";커미션";
if (bSwap) st=st+"; 스왑";
st=st+";이익";
if (bMagic) st=st+";Magic";
if (bComment) st=st+";설명";
WritingLineInFile(파일 이름, st);
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (주문유형()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS);
st= DoubleToStr(OrderTicket(), 0)+";";
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+GetNameOP(주문 유형())+";";
st=st+DoubleToStrLocale(OrderLots(), 2)+";";
st=st+OrderSymbol()+";";
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+";";
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+";";
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+";";
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+";";
if (bCommission) st=st+DoubleToStrLocale(OrderCommission(), 2)+";";
if (bSwap) st=st+DoubleToStrLocale(OrderSwap(), 2)+";";
st=st+DoubleToStrLocale(OrderProfit(), 2)+";";
if (bMagic) st=st+DoubleToStr(OrderMagicNumber(), 0)+";";
if (bComment) st=st+OrderComment()+";";
WritingLineInFile(파일 이름, st);
}
Comment("읽기: ",i+1," 거래는 ",k);
}
}
Comment("작성된 파일: ",FileName);
}

//+----------------------------------------------- ------------------------------+
//| 시스템을 사용하여 숫자 값을 문자열로 변환 |
//| 소수 구분 기호. |
//| 옵션: |
//| v - 더블 유형의 수 |
//| d - 소수 자릿수 |
//+----------------------------------------------- ------------------------------+
문자열 DoubleToStrLocale(이중 v, 정수 d) {
(d<0) d=0인 경우;
(d>8) d=8인 경우;

문자열 se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
if (se!=".") st=StrTran(st, ".", se);

반환(st);
}

//+----------------------------------------------- ------------------------------+
//| 거래 작업의 이름을 반환합니다. |
//| 옵션: |
//| op - 거래 작업 식별자 |
//+----------------------------------------------- ------------------------------+
문자열 GetNameOP(int op) {
스위치(작동) {
케이스 OP_BUY : return("구매");
케이스 OP_SELL : return("판매");
케이스 OP_BUYLIMIT : return("구매 한도");
케이스 OP_SELLLIMIT: return("판매 한도");
케이스 OP_BUYSTOP : return("매수 정지");
케이스 OP_SELLSTOP : return("판매 중지");
기본값 : return("알 수 없는 작업");
}
}

//+----------------------------------------------- ------------------------------+
//| 사용자 지역 설정 반환. |
//| 매개변수: |
//| LCType - 지역 설정 유형(LCTYPE 상수) |
//+----------------------------------------------- ------------------------------+
문자열 GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID();
문자열 ="";

GetLocaleInfoA(loc, LCType, str, 64);

반환(문자열);
}

//+----------------------------------------------- ------------------------------+
//| 부분 문자열 교체 |
//| 옵션: |
//| str - 대체될 텍스트 문자열 |
//| strfrom - 대체할 부분 문자열 |
//| strto - 대체 부분 문자열 |
//+----------------------------------------------- ------------------------------+
문자열 StrTran(문자열 str, 문자열 strfrom, 문자열 strto) {
국제;
문자열 outstr="", 임시 문자열;

(n=0; n<StringLen(str); n++) {
tempstr=StringSubstr(str, n, StringLen(strfrom));
if (tempstr==strfrom) {
outstr=outstr+strto;
n=n+StringLen(strfrom)-1;
} 그렇지 않으면 outstr=outstr+StringSubstr(str, n, 1);
}
반환(outstr);
}

//+----------------------------------------------- ------------------------------+
//| 파일에 줄 쓰기 |
//| 옵션: |
//| 파일 이름 - 파일 이름 |
//| 텍스트 - 문자열 |
//+----------------------------------------------- ------------------------------+
무효 WritingLineInFile(문자열 파일 이름, 문자열 텍스트) {
int file_handle=FileOpen(파일명, FILE_READ|FILE_WRITE, " ");

if (file_handle>0) {
파일찾기(file_handle, 0, SEEK_END);
FileWrite(file_handle, 텍스트);
파일 닫기(file_handle);
}
}
//+----------------------------------------------- ------------------------------+

 
안녕하세요! MT4에서 글꼴을 붙여넣을 폴더를 알려주세요.
 
%windir%\글꼴
 

발트해


 string NeedTime = "9:00" ;
datetime time0 = 0 ;

//----------------------------------------------------------------------------
void start ( ) 
{

 if ( time0 > = StrToTime ( NeedTime ) ) return ; // если сегодня уже выполняли код
 if ( TimeCurrent ( ) < = StrToTime ( NeedTime ) ) return ; // если требуемое время ещё не наступио
 time0 = TimeCurrent ( ) ; // иначе запоминаем время

// и делаем то что надо

// бла бла бла остальной код

글쎄, 일반적으로 이 스레드는 프로그래밍을 배우는 사람들을 위한 것이지 당신을 위한 글을 써달라는 요청이 아닙니다.

 
sergeev >> :
%windir% \ fonts

어떻게 든 더 간단 할 수 있습니다. 아무것도 이해하지 못했습니다 ... 이것은 어떤 종류의 폴더입니까? 아니면 무엇입니까?

 
chepikds >> :

어떻게 든 더 간단 할 수 있습니다. 나는 아무것도 이해하지 못했습니다 ... 이것은 어떤 종류의 폴더입니까? 아니면 무엇입니까?


일반적으로 "MT4에서 글꼴을 삽입할 폴더"에 대한 질문도 명확하지 않습니다. 러시아어로 설명하십시오. :)

터미널에 글꼴이 저장되지 않습니다. 글꼴은 운영 체제에서 처리합니다.

 
sergeev >> :

일반적으로 "MT4에서 글꼴을 삽입할 폴더"에 대한 질문도 명확하지 않습니다.

터미널에 글꼴이 저장되지 않습니다. 글꼴은 운영 체제에서 처리합니다.

알겠습니다. 운영 체제에 삽입해 보겠습니다.

 
감사 합니다 sergeev , 모든 것이 작동했습니다.
 
sergeev писал(а) >>

발트해

글쎄, 일반적으로 이 스레드는 프로그래밍을 배우는 사람들을 위한 것이지 당신을 위한 글을 써달라는 요청이 아닙니다.

감사해요

나는 공부할 것이다 :)

 

여보세요. 교과서의 예를 따라 간단한 고문을 작성했습니다. EA는 가격이 2개의 MA로 구성된 범위를 벗어날 때 신호를 보내야 합니다. 저것들. 막대가 범위에서 열리고 증가하기 시작했고 현재 가격이 범위를 벗어나면 경고음이 울립니다. 같은 방법으로 아래로. 하지만 문제는 이렇게 하면 알 수 없다는 것입니다.

if (Bid > MA1 || Bid < MA2) // 범위가 지났는지 확인
{
Alert("가격이 범위를 벗어났습니다.");// 메시지
}

가격이 어드바이저보다 높으면 삐 소리가 납니다. 그리고 내가 이것을 좋아한다면 :

if (Bid > MA1 && Fact_Up==true) // 체크업 패스
{
Fact_Dn=참; // MA1 이상의 가격 보고
Fact_Up=거짓; // MA1 미만의 가격은 보고하지 않음
Alert("가격이 범위를 초과했습니다.");// 메시지
}
//------------------------------------------------ --------------------
if (Bid < MA2 && Fact_Dn==true) // 다운 패스 확인
{
Fact_Up=참; // MA2 이하 가격 보고
Fact_Dn=거짓; // MA2 이상의 가격을 보고하지 않음
Alert("가격이 범위보다 낮습니다.");// 메시지
}

그가 신호를 줄 때 그것은 전혀 분명하지 않습니다. 그러면 그는 주고, 그 다음에는 하지 않습니다.

"Fact_Up==true"가 무엇이며 왜 필요한지 알 수 없습니다. 아시는 분 알려주세요.

사유: