(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); }
네 이해했습니다..
내가 뭔가를 이해하지 못하는 건 아닐까?
유형 문자열은 다음과 같습니다.
MACDa 값을 0과 비교하고 조건이 일치하면 화살표가 그려집니다 .
방법 것입니다?
무엇과 함께 먹습니까? MACD[i]>0이고 macd[i+1]도 0보다 크면 조건이 어떻게 관찰됩니까?????????????????
내가 뭔가를 이해하지 못하는 건 아닐까?
유형 문자열은 다음과 같습니다.
MACDa 값을 0과 비교하고 조건이 일치하면 화살표가 그려집니다.
방법 것입니다?
무엇과 함께 먹습니까? MACD[i]>0이고 macd[i+1]도 0보다 크면 조건이 어떻게 관찰됩니까?????????????????
이전 값과 현재 값의 곱이 0보다 작으면 이 값은 0선의 반대쪽에 있습니다.
곱셈은 논리 조건보다 약 10배 빠릅니다. 두 개의 부울 조건을 하나의 곱셈과 부울 조건으로 대체했습니다.
먼저 0선의 교차점이 있는지 확인합니다. 교차점이 있으면 교차로의 방향을 결정합니다.
가장 겸손하게 저를 용서해 주십시오. 그러나 조건의 구현을 얻을 수 없습니다.
MACD는 아래에서 위로 이동하고 레벨 N을 가로지릅니다(자연스럽게 빼기 기호가 있음) - 화살표가 그려지고 NACD는 위에서 아래로 이동하며 레벨 N(기호 +)을 가로지르며 화살표가 그려집니다.
레벨 N은 뭐, CCI - 20, 80도 어느 정도 수준입니다. 논리는 분명하지만 구현 방법은.......????????
가장 겸손하게 저를 용서해 주십시오. 그러나 조건의 구현을 얻을 수 없습니다.
MACD는 아래에서 위로 이동하고 레벨 N을 가로지르며(자연스럽게 마이너스 기호가 있음) - 화살표가 그려지고, NACD는 위에서 아래로 이동하고, 레벨 N(기호 +)을 교차 - 화살표가 그려집니다.
레벨 N은 뭐, CCI - 20, 80도 어느 정도 수준입니다. 논리는 분명하지만 구현 방법은.......????????
Это контроль пробития уровня. В твоем случае нужно будет делать два контроля. Для положительного и отрицательного Level отдельно
이런거야?
중요성에 대해 죄송합니다. 이미 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);
}
이런거야?
LevelUP 및 LevelDN이라는 용어를 설명하십시오.
LevelUP - 긍정적인 수준
LevelDN - 음수 수준
일반적으로 절대값은 동일합니다.
같으면 다음을 사용할 수 있습니다.