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

 

네 이해했습니다..

 

내가 뭔가를 이해하지 못하는 건 아닐까?

유형 문자열은 다음과 같습니다.

 if ( MACD [ i ] < 0 ) ExtMapBuffer2 [ i ] = High [ i ] + iATR ( Symbol ( ) , 0 , 14 , i ) ;

MACDa 값을 0과 비교하고 조건이 일치하면 화살표가 그려집니다 .

방법 것입니다?

if (MACD[i] * MACD[i+1]<0) {

무엇과 함께 먹습니까? MACD[i]>0이고 macd[i+1]도 0보다 크면 조건이 어떻게 관찰됩니까?????????????????

 
igrok2008 писал(а) >>

내가 뭔가를 이해하지 못하는 건 아닐까?

유형 문자열은 다음과 같습니다.

MACDa 값을 0과 비교하고 조건이 일치하면 화살표가 그려집니다.

방법 것입니다?

무엇과 함께 먹습니까? MACD[i]>0이고 macd[i+1]도 0보다 크면 조건이 어떻게 관찰됩니까?????????????????

이전 값과 현재 값의 곱이 0보다 작으면 이 값은 0선의 반대쪽에 있습니다.

곱셈은 논리 조건보다 약 10배 빠릅니다. 두 개의 부울 조건을 하나의 곱셈과 부울 조건으로 대체했습니다.

먼저 0선의 교차점이 있는지 확인합니다. 교차점이 있으면 교차로의 방향을 결정합니다.

 

가장 겸손하게 저를 용서해 주십시오. 그러나 조건의 구현을 얻을 수 없습니다.

MACD는 아래에서 위로 이동하고 레벨 N을 가로지릅니다(자연스럽게 빼기 기호가 있음) - 화살표가 그려지고 NACD는 위에서 아래로 이동하며 레벨 N(기호 +)을 가로지르며 화살표가 그려집니다.

레벨 N은 뭐, CCI - 20, 80도 어느 정도 수준입니다. 논리는 분명하지만 구현 방법은.......????????

 
igrok2008 писал(а) >>

가장 겸손하게 저를 용서해 주십시오. 그러나 조건의 구현을 얻을 수 없습니다.

MACD는 아래에서 위로 이동하고 레벨 N을 가로지르며(자연스럽게 마이너스 기호가 있음) - 화살표가 그려지고, NACD는 위에서 아래로 이동하고, 레벨 N(기호 +)을 교차 - 화살표가 그려집니다.

레벨 N은 뭐, CCI - 20, 80도 어느 정도 수준입니다. 논리는 분명하지만 구현 방법은.......????????

if ((MACD[i]-Level)*(MACD[i+1]-Level)<0)
레벨을 돌파하는 컨트롤입니다. 귀하의 경우 두 가지 제어를 수행해야 합니다. 포지티브 및 네거티브 레벨에 대해 별도로
 
Vinin >> :
Это контроль пробития уровня. В твоем случае нужно будет делать два контроля. Для положительного и отрицательного Level отдельно

이런거야?


      if ((MACD[i]-Level)*(MACD[i+1]-Level)<0)
         ((MACD[i]+Level)*(MACD[i+1]+Level)>0){
 

중요성에 대해 죄송합니다. 이미 NonLagDOT 표시기의 입력 매개변수를 정의하고 iCustom() 함수를 통해 Expert Advisor에 출력하는 데 도움을 주셨습니다.

이 표시기에 대한 주문을 여는 명령을 올바르게 작성하는 방법을 알려주십시오.


/+------------------------------------------------ ------------------+
//| NonLagDOT.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"

#속성 표시기_차트_창
#속성 표시기_버퍼 3
#property indicator_color1 노란색
#속성 표시기_너비1 1
#property indicator_color2 로얄블루
#속성 표시기_너비2 1
#property indicator_color3 빨간색
#속성 표시기_너비3 1


//---- 입력 매개변수
extern int 가격 = 0;
외부 정수 길이 = 20;
extern int 변위 = 0;
외부 정수 필터 = 0;
외부 정수 색상 = 1;
외부 정수 ColorBarBack = 0;
외부 이중 편차 = 0;

이중 사이클 = 4;

//---- 표시기 버퍼
이중 MABuffer[];
이중 UpBuffer[];
더블Dn버퍼[];
이중 가격[];
이중 추세[];

//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
intft=0;
문자열 short_name;
//---- 표시줄
표시 버퍼(5);
SetIndexStyle(0,DRAW_ARROW);
SetIndexBuffer(0,MABuffer);
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2,DnBuffer);
SetIndexBuffer(3, 가격);
SetIndexBuffer(4, 경향);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
SetIndexArrow(0.159);
SetIndexArrow(1,159);
SetIndexArrow(2,159);
SetIndexArrow(3,159);
//---- DataWindow의 이름 및 표시기 하위 창 레이블
short_name="NonLagDot("+길이+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"NLD");
SetIndexLabel(1,"위쪽");
SetIndexLabel(2,"Dn");
//----
SetIndexShift(0, 변위);
SetIndexShift(1, 변위);
SetIndexShift(2, 변위);

SetIndexDrawBegin(0,길이*주기+길이);
SetIndexDrawBegin(1,길이*주기+길이);
SetIndexDrawBegin(2,길이*주기+길이);
//----
리턴(0);
}

//+----------------------------------------------- --------------------+
//| NonLagMA_v4 |
//+----------------------------------------------- --------------------+
정수 시작()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
이중 알파, 베타, t, 합계, 가중치, 단계, g;
이중 파이 = 3.1415926535;

이중 계수 = 3*pi;
int 위상 = 길이-1;
이중 Len = 길이*주기 + 위상;

if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if ( counted_bars < 1 )
for(i=1;i<길이*주기+길이;i++)
{
MABuffer[바-i]=0;
UpBuffer[바-i]=0;
DnBuffer[Bars-i]=0;
}

for(shift=limit;shift>=0;shift--)
{
무게=0; 합계=0; t=0;

(i=0;i<=Len-1;i++)
{
g = 1.0/(계수*t+1);
if (t <= 0.5 ) g = 1;
베타 = MathCos(pi*t);
알파=g*베타;
//if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//또 다른
가격[i] = iMA(NULL,0,1,0,MODE_SMA,가격,시프트+i);
합계 += 알파*가격[i];
무게 += 알파;
if ( t < 1 ) t += 1.0/(1상);
else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1);
}

if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight;

if (필터>0)
{
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1];
}

if (색상>0)
{
추세[시프트]=추세[시프트+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;
if (추세[shift]>0)
{
UpBuffer[시프트] = MABuffer[시프트];
if (trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
DnBuffer[시프트] = 0;
}
if (추세[shift]<0)
{
DnBuffer[시프트] = MABuffer[시프트];
if (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
업버퍼[시프트] = 0;
}
}
}
리턴(0);
}
 
igrok2008 писал(а) >>

이런거야?

 if ( ( MACD [ i ] - LevelUP ) * ( MACD [ i + 1 ] - LevelUP ) < 0 ) {
   if ( MACD [ i ] - Level > 0 ) { //}
}
if ( ( MACD [ i ] - LevelDN ) * ( MACD [ i + 1 ] - LevelDN ) < 0 ) {
   if ( MACD [ i ] - LevelDN < 0 ) { //}
}
그렇게 될 수 있습니다. 가장 중요한 것은 당신 자신이 당신이하는 일을 이해한다는 것입니다. 내가 당신을 위해 일을 더 어렵게 만든 것 같습니다.
 
LevelUP 및 LevelDN이라는 용어를 설명하십시오.
 
igrok2008 писал(а) >>
LevelUP 및 LevelDN이라는 용어를 설명하십시오.

LevelUP - 긍정적인 수준

LevelDN - 음수 수준

일반적으로 절대값은 동일합니다.

같으면 다음을 사용할 수 있습니다.

 if ( ( MACD [ i ] - Level ) * ( MACD [ i + 1 ] - Level ) < 0 ) {
   if ( MACD [ i ] - Level > 0 ) { //}
}
if ( ( MACD [ i ] + LevelDN ) * ( MACD [ i + 1 ] + LevelDN ) < 0 ) {
   if ( MACD [ i ] + Level < 0 ) { //}
}