[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 387

[삭제]  
여러분, 이렇게 말씀해 주십시오. EX4에 지표와 전문가 파일이 있는데 어떻게 사용하나요?
 
Las-tochka :

차트로 전송하고 매개변수를 설정하고 사용하기만 하면 됩니다.


이 방법이 더 낫지는 않지만)))

파일 형식


MQL4 언어는 프로그램 코드를 포함하는 3가지 유형의 파일(mq4, ex4 및 mqh)을 구별합니다.

mq4 유형의 파일은 프로그램의 소스 코드입니다. 이 유형의 파일에는 모든 유형의 프로그램(전문가, 스크립트 및 표시기)의 소스 텍스트가 포함되어 있습니다. MetaEditor는 프로그램 코드를 생성하는 데 사용됩니다. 프로그램 코드가 전체 또는 부분적으로 컴파일된 후 저장될 수 있으며 이후에 수정을 위해 편집기에서 다시 열립니다. mq4 유형의 파일은 클라이언트 터미널에서 실행할 수 없습니다. 프로그램을 실행하려면 먼저 컴파일해야 합니다. 프로그램의 소스코드를 컴파일한 결과 ex4 확장자를 가진 같은 이름의 파일이 생성된다.

Ex4 파일 은 클라이언트 터미널에서 실제 사용할 수 있도록 컴파일된 프로그램입니다. 이 유형의 파일은 편집할 수 없습니다. 프로그램을 변경해야 하는 경우 해당 소스 코드(mq4 형식 파일)를 참조하여 편집한 다음 다시 컴파일해야 합니다. ex4 파일의 이름으로 스크립트, 전문가 또는 지표 등 어떤 유형의 프로그램에 속하는지 판단할 수 없습니다. ex4 파일을 라이브러리 파일로 사용할 수 있습니다.

mqh 유형의 파일은 포함된 파일입니다. 이것은 일반적으로 사용되는 사용자 프로그램 블록의 소스 코드입니다. 이러한 파일은 편집 단계에서 Expert Advisors, 스크립트 및 사용자 지정 표시기 의 소스 텍스트에 포함될 수 있습니다. 포함 파일에는 일반적으로 가져온 함수에 대한 설명(예: stdlib.mqh 또는 WinUser32.mqh 파일 참조) 또는 공통 상수 및 변수에 대한 설명(stderror.mqh 및 WinUser32.mqh)이 포함됩니다. mqh 유형의 파일은 일반적으로 Terminal_directory\experts\include 디렉토리에 저장됩니다.

포함 파일은 일반적으로 #include 지시문을 사용하여 기본 소스 파일에 컴파일 타임에 "포함"되기 때문에 이름이 지정됩니다. mqh 유형의 파일이 프로그램의 소스 코드를 포함할 수 있고 MetaEditor가 이를 컴파일한다는 사실에도 불구하고, 그것들은 독립적이지 않고 자급자족하지 않습니다. ex4 유형 실행 파일을 얻기 위해 컴파일이 필요하지 않습니다. mq4 파일은 또한 포함 파일로 사용할 수 있으며 이는 또한 Terminal_directory\experts\include 디렉토리에 저장되어야 합니다.

클라이언트 터미널의 네비게이터에서 "Expert Advisors", "사용자 지정 표시기" 및 "스크립트" 섹션에는 확장자가 ex4이고 해당 디렉토리에 있는 파일 이름만 표시됩니다. 이전 버전의 MetaEditor로 컴파일된 파일은 실행되지 않고 회색으로 표시됩니다.

완전한 프로그램을 구성하지는 않지만 응용 프로그램 작성에 사용되는 다른 유형의 파일이 있습니다. 예를 들어 프로그램을 여러 개별 파일에서 컴파일하거나 이전에 만든 라이브러리를 이러한 용도로 사용할 수 있습니다. 사용자는 자주 사용하는 사용자 프로그램 블록을 저장하도록 설계된 사용자 정의 함수 라이브러리를 생성할 수 있습니다. 라이브러리는 Terminal_directory\experts\libraries 디렉토리에 저장하는 것이 좋습니다. mq4 및 ex4 파일을 라이브러리 파일로 사용할 수 있습니다. 라이브러리는 자체적으로 실행할 수 없습니다. 라이브러리 함수를 호출할 때 컴퓨팅 리소스의 오버헤드로 인해 라이브러리를 사용하는 것보다 포함 파일을 사용하는 것이 좋습니다.

"MQL4 프로그래밍 소개" 튜토리얼의 첫 번째 부분에서는 mq4 프로그램 소스 텍스트 파일과 컴파일된 ex4 프로그램 파일에 관심을 가질 것입니다.

[삭제]  
차트에서 변경하려면 어디에 배치해야 하나요?
[삭제]  
Las-tochka :


나는 또 다른 농담을 발견했습니다. 한 로봇은 MT4 터미널에서 다른 브로커로 테스트했을 때 따옴표의 일부가 없기 때문에 서로 다른 테스트 결과를 제공합니다!? 그러나 이 모든 것에는 불일치 오류가 전혀 없습니다 ??? 깜놀!?!?!?

얼굴에 나비 효과

누가 뭐라고 생각해?

테스터는 잠재적인 이익/손실을 안정적으로 보여줄 의무가 전혀 없다고 생각합니다. 모든 것이 코드의 수학적 및 논리적 오류에 맞는지, 고문의 논리가 올바르게 작동하는지 확인하는 것뿐입니다.
 

BeerGod :
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

질문의 장점에 대한 정보가 있습니까?

문제는 이익이 아니다. 그리고 테스터가 무엇을 위한 것인지 제 생각에는 이것은 도구이며 어떻게 사용되는지는 우리 각자의 결정입니다.


 
Myth63 :
차트에서 변경하려면 어디에 배치해야 하나요?


차트에서 전문가나 지표 또는 스크립트를 실행해야 하는 경우 도구 모음의 탐색기에서 마우스 왼쪽 버튼으로 해당 프로그램을 차트로 옮기십시오.

그러나 페이지 왼쪽 하단의 https://book.mql4.com/ru/에서 튜토리얼을 다운로드하는 것이 좋습니다) 행운을 빕니다!

[Deleted]  

안녕하세요!

나는 다른 기간의 MA를 보여주는 지표를 사용합니다.

나는 창문에 여러 조각을 걸고, 터미널은 엄청나게 느려지기 시작합니다!.

전문가 여러분, 표시기의 느림에 문제가 있습니다. 15 라인 만 있습니까?

누가 이해했는지 맞습니다.

미리 감사드립니다.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63 :
차트에서 바꾸려면 어디에 넣어야 하나요?
전문가 폴더의 전문가 및 기타 모든 유형은 이름이 비슷합니다. 터미널을 다시 시작하면 네비게이터에서 사용할 수 있으며 소스 코드가 있는 것과 달리 회색으로만 표시됩니다.
[Deleted]  

안녕하세요. 말씀해 주세요. 제 문제는 다음과 같습니다. 어드바이저에서 거래에 대해 하나의 신호만 있어야 합니다(세 가지 지표가 모두 지정된 영역을 넘을 때)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

질문은 ~이야. 이 신호가 오직 하나가 되도록 이 줄을 올바르게 쓰는 방법. (그렇지 않으면 어드바이저가 다음 알고리즘에 따라 거래를 하는 것으로 판명되었습니다: RSI 교차 영역 35 - 거래, STOCH 교차 영역 20 - 거래, CCI 교차 영역 -100 - 거래, 그리고 그것은 3개의 거래로 밝혀졌습니다)

세 가지 지표가 모두 해당 영역을 넘을 때 하나의 거래 신호만 있습니다.

 
artemka_1981 :

안녕하세요. 말씀해 주세요. 제 문제는 다음과 같습니다. 어드바이저에서 거래에 대해 하나의 신호만 있어야 합니다(세 가지 지표가 모두 지정된 영역을 넘을 때)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1);

질문은 ~이야. 이 신호가 오직 하나가 되도록 이 줄을 올바르게 쓰는 방법. (그렇지 않으면 어드바이저가 다음 알고리즘에 따라 거래를 하는 것으로 판명되었습니다: RSI 교차 영역 35 - 거래, STOCH 교차 영역 20 - 거래, CCI 교차 영역 -100 - 거래, 그리고 그것은 3개의 거래로 밝혀졌습니다)

세 가지 지표가 모두 해당 영역을 넘을 때 하나의 거래 신호만 있습니다.

다음과 같이 시도하십시오.

 bool GO = true ; // глобальная переменная
//---------------------

if (GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= - 100 ) {GO= false ; return (+ 1 );} //запретить повторный вход
//---------------
{OrderClose(.......); GO = true ; } //открыть семафор при закрытии позиции.