[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 443

 

ああ、そうだな...。

 

もしかして、私が理解できていない?

こんなセリフが。

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

MACDaの値をゼロと比較し、条件が一致すれば矢印が描 かれます。

どのように機能するのですか?

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

MACD[i]>0でmacd[i+1]も0より大きい場合、どのような状態になるのでしょうか?

 
igrok2008 писал(а)>>

もしかして、私が理解できていない?

こんなセリフが。

MACDaの値をゼロと比較し、条件が一致すれば矢印が描かれます。

どのように機能するのですか?

MACD[i]>0でMACD[i+1]も0より大きい場合、どのような条件?

前の値と現在の値の積がゼロより小さい場合、これらの値はゼロ線の異なる側にある。

乗算は論理条件より10倍程度速い。2つの論理条件を、1つの乗算と論理条件に置き換えています。

まず、ゼロ線との交点があったかどうかを確認します。交差点がある場合は、交差点の方向を決定する。

 

失礼ですが、この条件を実行するのに苦労しています。

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)
これは、レベルの高い浸透制御です。あなたの場合、2つの制御を行う必要があります。プラスレベル、マイナスレベル別
 
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
//| 著作権 © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "著作権 © 2009, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

#property indicator_chart_window
#プロパティ indicator_buffers 3
#プロパティ indicator_color1 黄色
#property indicator_width1 1
#プロパティ indicator_color2 RoyalBlue
#property indicator_width2 1
#property indicator_color3 レッド
#property indicator_width3 1


//---- 入力パラメータ
extern int Price = 0;
extern int Length = 20;
extern intplace Displace = 0;
extern int Filter = 0;
extern int Color = 1;
extern int ColorBarBack = 0;
extern double Deviation = 0;

double Cycle = 4;

//---- インジケータ・バッファ
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];

//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
int ft=0;
文字列のshort_name。
//---- インジケータライン
IndicatorBuffers(5)です。
SetIndexStyle(0,DRAW_ARROW)を設定します。
SetIndexBuffer(0,MABuffer)を設定します。
SetIndexStyle(1,DRAW_ARROW)を設定します。
SetIndexBuffer(1,UpBuffer)を設定します。
SetIndexStyle(2,DRAW_ARROW)を設定します。
SetIndexBuffer(2,DnBuffer)を設定します。
SetIndexBuffer(3,price)を設定します。
SetIndexBuffer(4,trend)を設定します。
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
SetIndexArrow(0,159)。
SetIndexArrow(1,159)。
SetIndexArrow(2,159)。
SetIndexArrow(3,159)。
//---- DataWindowとインジケータサブウィンドウのラベル名
short_name="NonLagDot("+Length+") "です。
IndicatorShortName(short_name)。
SetIndexLabel(0, "NLD")を設定します。
SetIndexLabel(1, "Up")を設定します。
SetIndexLabel(2, "Dn")を設定します。
//----
SetIndexShift(0,Displace)を設定します。
SetIndexShift(1,Displace)を設定します。
SetIndexShift(2,Displace)を設定。

SetIndexDrawBegin(0,Length*Cycle+Length)を設定します。
SetIndexDrawBegin(1,Length*Cycle+Length)を設定します。
SetIndexDrawBegin(2,Length*Cycle+Length)を設定。
//----
return(0)です。
}

//+------------------------------------------------------------------+
||NonLagMA_v4||LagMA_v4
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
double alfa,beta,t,Sum,Weight,step,g;
double pi = 3.1415926535;

double Coeff = 3*pi;
int Phase = Length-1;
double Len = Length*Cycle + Phase;

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<Length*Cycle+Length;i++)
{
MABuffer[Bars-i]=0;
UpBuffer[Bars-i]=0;
DnBuffer[Bars-i]=0;
}

for(shift=limit;shift>=0;shift--)とする。
{
Weight=0; Sum=0; t=0。

for (i=0;i<=Len-1;i++)
{
g = 1.0/(Coeff*t+1) とする。
if (t <= 0.5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta。
//if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//else
price[i] = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
Sum += alfa*price[i];
重量 += alfa;
if ( t < 1 ) t += 1.0/(Phase-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)
{
trend[shift]=trend[shift+1]とする。
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]=1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;
if (トレンド[シフト]>0)
{
UpBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]<0)UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack]。
DnBuffer[shift] = 0;
}
if (トレンド[シフト]<0)
{
DnBuffer[shift] = MABuffer[shift]。
if (トレンド[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = 0;
}
}
}
return(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) {//}
}
理由: