PDA

View Full Version : カスタム指標値を取得する方法



Norioman Eiji
08-05-2008 22:08, 10:08 PM
私はEAでEMA Crossover Signalインジケータを使用しようとしており、そこから値を取得するのに問題があります。私はiCustom()を使用していますが、どのモードを選択しても(0または1)、インジケータは2147483647しか返しません。

ここに私がしようとしていることの例があります:

ダブルEMA = iCustom(NULL、0、EMAクロスオーバ信号、5,13、偽、0,0);

印刷(EMA);

インディーコードはここにあります:

// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal.mq4 |
//|著作権©2005、ジェイソンロビンソン(jnrtrading)|
//|
http://www.jnrtading.co.uk|
// ----------------------------------------------- -------------------

/*
------------------------------------------------- -----------------
|あなたは2つのエマ期間を入力することができます。
|彼らがどこを越えたのかそれはより短い|
|バーや燭台によって覆われている期間、|
|ズームレベルは切れています。またemasを削除することもできます。
|チャートから。 (emasは最初に5と6に設定されています)|
------------------------------------------------- -----------------
*
#property copyright著作権©2005、Jason Robinson(jnrtrading)
#property link http://www.jnrtrading.co.uk

#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Red

ダブルCrossUp [];
ダブルCrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = false;
ダブルアラートタグ;
ダブルコントロール= 2147483647;

// ----------------------------------------------- -------------------
//|カスタムインジケータ初期化関数|
// ----------------------------------------------- -------------------
int init()
{
//----インジケータ
SetIndexStyle(0、DRAW_ARROW、EMPTY、3);
SetIndexArrow(0、233);
SetIndexBuffer(0、CrossUp);
SetIndexStyle(1、DRAW_ARROW、EMPTY、3);
SetIndexArrow(1、234);
SetIndexBuffer(1、CrossDown);
//----
return(0);
}
// ----------------------------------------------- -------------------
//|カスタムインジケータの初期化解除機能|
// ----------------------------------------------- -------------------
int deinit()
{
//----

//----
return(0);
}
// ----------------------------------------------- -------------------
//|カスタムインジケータ反復関数|
// ----------------------------------------------- -------------------
int start(){
int limit、私、カウンタ;
すぐに遅く、遅くEMAnow、遅いEMAnow、遅いEMA前、遅いEMA、
double Range、AvgRange;
int counted_bars = IndiorCounted();
//----可能なエラーをチェックする
if(counted_barslt; 0)は、(-1)を返します。
//----最後にカウントされたバーが再計算されます
if(counted_barsgt; 0)counted_bars--;

limit = Bars-counted_bars;

for(i = 0; i lt; = limit; i ){

カウンタ= i;
範囲= 0;
AvgRange = 0;
for(counter = i; counterlt; = i 9; counter )
{
AvgRange = AvgRange MathAbs(高[カウンタ] - 低[カウンタ]);
}
範囲=平均距離/10;

fasterEMAnow = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i);
より速いEMAprevious = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i 1);
fastEMAafter = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i-1);

slowerEMAnow = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i);
slowerEMAprevious = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i 1);
slowerEMAafter = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i-1);

if((高速EMAnow gt; slowerEMAnow)(fasterEMAprevious lt; slowerEMAprevious)(より速いEMAの後、slowerEMAafter)){
CrossUp [i] = Low [i] - 範囲* 0.5;
}
else if((fasterEMAnow lt; slowerEMAnow)(より速いEMAprevious gt; slowerEMAprevious)(より速いEMAより遅いEMAafter)){
CrossDown [i] = High [i] Range * 0.5;
}
if(SoundON == true i == 1 CrossUp [i] gt; CrossDown [i] alertTag!= Time [0]){
アラート(EMAクロストレンド、Symbol()、Period());
alertTag =時刻[0];
}
if(SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag!= Time [0]){
アラート(EMAクロストレンド、Symbol()、Period());
alertTag =時刻[0];
}

}
return(0);
}

SOTA
11-22-2021 01:18, 01:18 AM
icustomのファイル名を確認してください。すべてのダッシュと下線が所定の位置にあることを確認してください。また、大文字が正しい場所にあることを確認してください。これは、ファイルのスペルが正確である必要があります。

Norioman Eiji
11-22-2021 02:38, 02:38 AM
icustomのファイル名を確認してください。すべてのダッシュと下線が所定の位置にあることを確認してください。また、大文字が正しい場所にあることを確認してください。これは、ファイルのスペルが正確である必要があります。
いいえ運がいいです...ファイル名はEMA Crossover Signalです。

SOTA
11-22-2021 03:59, 03:59 AM
インジケータファイルの名前をEMACSなどの単純なものに変更します。私はファイル名とスペースに関するいくつかの問題を抱えています。

Norioman Eiji
11-22-2021 05:20, 05:20 AM
インジケータファイルの名前をEMACSなどの単純なものに変更します。私はファイル名とスペースに関するいくつかの問題を抱えています。
いいえ、それはどちらもうまくいきませんでした。インディ・コードを直接EAに組み込んだり、自分のMAクロス・コードを書いたりすることを検討していますが、ホイールを再作成しないようにして、EMA信号を使用して十字形が見えるときに矢印を参照してください。

刀万悠
11-22-2021 06:41, 06:41 AM
インジケータがデータウィンドウで返す値を調べましたか?通常、値はありません。

Yume Ichigo
11-22-2021 08:01, 08:01 AM
あなたのiCustomはこのように見えるはずです。 iCustom(NULL、0、EMAクロスオーバ信号、FasterEMA、SlowerEMA、0、0);私は、そうでないように、非矢印を0に設定するためにインジケータを編集します。私は貿易ロジックを設定するときにそれが容易であると感じます。

// ----------------------------------------------- ------------------- /| EMA-Crossover_Signal.mq4 |/|著作権©2005、ジェイソンロビンソン(jnrtrading)|/|
http://www.jnrtading.co.uk|/ ----------------------------------------------- ------------------- * --------------------------- --------------------------------------- |あなたは2つのエマ期間を入力することができます。 |彼らがどこを越えたのかそれはより短く| |バーや燭台によって覆われている期間、| |ズームレベルは切れています。またemasを削除することもできます。 |チャートから。 (emasは最初に5と6に設定されています)| ------------------------------------------------- ----------------- *#property copyright Copyright©2005、Jason Robinson(jnrtrading)#property link http://www.jnrtrading.co.uk #property indior_chart_window#プロパティindior_buffers 2 #property indior_color1 SeaGreen #property indior_color2赤い二重CrossUp [];ダブルCrossDown []; extern int FasterEMA = 5; extern int SlowerEMA = 13; extern bool SoundON = false;ダブルアラートタグ;ダブルコントロール= 2147483647;/ ----------------------------------------------- ------------------- /|カスタムインジケータ初期化関数|/ ----------------------------------------------- ------------------- int init(){//----インジケータSetIndexStyle(0、DRAW_ARROW、EMPTY、3); SetIndexArrow(0、233); SetIndexBuffer(0、CrossUp); SetIndexStyle(1、DRAW_ARROW、EMPTY、3); SetIndexArrow(1、234); SetIndexBuffer(1、CrossDown);/---- return(0); }/ ---------------------------------------------- -------------------- /|カスタムインジケータの初期化解除機能|/ ----------------------------------------------- ------------------- int deinit(){//----/---- return(0); }/ ---------------------------------------------- -------------------- /|カスタムインジケータ反復関数|/ ----------------------------------------------- ------------------- int start(){int limit、i、counter;すぐに遅く、遅くEMAnow、遅いEMAnow、遅いEMA前、遅いEMA、 double Range、AvgRange; int counted_bars = IndiorCounted(); (counted_barslt; 0)return(-1);/----可能なエラーをチェックします。/----最後にカウントされたバーは(counted_barsgt; 0)counted_bars--; limit = Bars-counted_bars; for(i = 0; i lt; = limit; i ){counter = i;範囲= 0; AvgRange = 0; (カウンタ= i;カウンタi;カウンタi 9;カウンタ ){AvgRange = AvgRange MathAbs(High [カウンタ] -Low [カウンタ]); }範囲=平均距離/10; fasterEMAnow = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i);より速いEMAprevious = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i 1); fastEMAafter = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i-1); slowerEMAnow = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i); slowerEMAprevious = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i 1); slowerEMAafter = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i-1); {CrossUp [i] = Low [i] - Range * 0.5;(高速EMAnow gt; slowerEMAnow)(高速EMAprevious; slowerEMAprevious) } else {CrossUp [i] = 0; } else if((fasterEMAnow lt; slowerEMAnow)(より速いEMAprevious gt; slowerEMAprevious)(より速いEMA以後slowerEMAafter)){CrossDown [i] = High [i] Range * 0.5; } else {CrossDown [i] = 0; }警告(EMAのクロストレンドが下がる、シンボル()、期間()); alertTag =時刻[0]; }警告(EMAクロストレンドアップ、シンボル()、期間());警告(EMAクロストレンドアップ、シンボル()、期間()) alertTag =時刻[0]; }} return(0); }

// ----------------------------------------------- ------------------- /| EMA-Crossover_Signal.mq4 |/|著作権©2005、ジェイソンロビンソン(jnrtrading)|/|
http://www.jnrtading.co.uk|/ ----------------------------------------------- ------------------- * --------------------------- --------------------------------------- |あなたは2つのエマ期間を入力することができます。 |彼らがどこを越えたのかそれはより短く| |バーや燭台によって覆われている期間、| |ズームレベルは切れています。またemasを削除することもできます。 |チャートから。 (emasは最初に5と6に設定されています)| ------------------------------------------------- ----------------- *#property copyright Copyright©2005、Jason Robinson(jnrtrading)#property link http://www.jnrtrading.co.uk #property indior_chart_window#プロパティindior_buffers 2 #property indior_color1 SeaGreen #property indior_color2赤い二重CrossUp [];ダブルCrossDown []; extern int FasterEMA = 5; extern int SlowerEMA = 13; extern bool SoundON = false;ダブルアラートタグ;ダブルコントロール= 2147483647;/ ----------------------------------------------- ------------------- /|カスタムインジケータ初期化関数|/ ----------------------------------------------- ------------------- int init(){//----インジケータSetIndexStyle(0、DRAW_ARROW、EMPTY、3); SetIndexArrow(0、233); SetIndexBuffer(0、CrossUp); SetIndexStyle(1、DRAW_ARROW、EMPTY、3); SetIndexArrow(1、234); SetIndexBuffer(1、CrossDown);/---- return(0); }/ ---------------------------------------------- -------------------- /|カスタムインジケータの初期化解除機能|/ ----------------------------------------------- ------------------- int deinit(){//----/---- return(0); }/ ---------------------------------------------- -------------------- /|カスタムインジケータ反復関数|/ ----------------------------------------------- ------------------- int start(){int limit、i、counter;すぐに遅く、遅くEMAnow、遅いEMAnow、遅いEMA前、遅いEMA、 double Range、AvgRange; int counted_bars = IndiorCounted(); (counted_barslt; 0)return(-1);/----可能なエラーをチェックします。/----最後にカウントされたバーは(counted_barsgt; 0)counted_bars--; limit = Bars-counted_bars; for(i = 0; i lt; = limit; i ){counter = i;範囲= 0; AvgRange = 0; (カウンタ= i;カウンタi;カウンタi 9;カウンタ ){AvgRange = AvgRange MathAbs(High [カウンタ] -Low [カウンタ]); }範囲=平均距離/10; fasterEMAnow = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i);より速いEMAprevious = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i 1); fastEMAafter = iMA(NULL、0、FasterEMA、0、MODE_EMA、PRICE_CLOSE、i-1); slowerEMAnow = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i); slowerEMAprevious = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i 1); slowerEMAafter = iMA(NULL、0、SlowerEMA、0、MODE_EMA、PRICE_CLOSE、i-1); {CrossUp [i] = Low [i] - Range * 0.5;(高速EMAnow gt; slowerEMAnow)(高速EMAprevious; slowerEMAprevious) } else {CrossUp [i] = 0; } else if((fasterEMAnow lt; slowerEMAnow)(より速いEMAprevious gt; slowerEMAprevious)(より速いEMA以後slowerEMAafter)){CrossDown [i] = High [i] Range * 0.5; } else {CrossDown [i] = 0; }警告(EMAのクロストレンドが下がる、シンボル()、期間()); alertTag =時刻[0]; }警告(EMAクロストレンドアップ、シンボル()、期間());警告(EMAクロストレンドアップ、シンボル()、期間()) alertTag =時刻[0]; }} return(0); }

怜士温さやか
11-22-2021 09:22, 09:22 AM
このインジケータだけに基づいてEAを構築する場合、そのインジケータが大きな時間を再描画していることに注意してください。矢印が表示され消えて再び表示されます。インジケータコードを注意深く読んで、それらの行を変更して、再ペイントしない矢印にします。

Yume Ichigo
11-22-2021 10:43, 10:43 AM
インジケータがデータウィンドウで返す値を調べましたか?通常、値はありません。
私は不思議です、指標の値のフィールドが空白の場合、私は貿易ロジックに何を入れますか? EMPTY_VALUEは機能しません。

刀万悠
11-22-2021 12:04, 12:04 PM
私は不思議です、指標の値のフィールドが空白の場合、私は貿易ロジックに何を入れますか? EMPTY_VALUEは機能しません。
知りません。私は本当にプログラムすることはできません、編集だけです。私は値が返ってこないときにそれが一般的に私のために問題を作り出すことを知っています。私はそれがここの問題であるかどうかわからないが、私は可能性のある問題としてよりスマートなメンバーの注意にそれをもたらすだろうと思った。

怜士温さやか
11-22-2021 13:24, 01:24 PM
はい... if(EMA == EMPTY_VALUE){........ ...ゼロまたはヌルまたはその数値に相当する... 2147483647

怜士温さやか
11-22-2021 14:45, 02:45 PM
たぶんこれは助けになるでしょう...赤でこの2行を追加する//---- indior SetIndexStyle(0、DRAW_ARROW、EMPTY、3); SetIndexArrow(0、233); SetIndexBuffer(0、CrossUp); SetIndexEmptyValue(0,0.0); SetIndexStyle(1、DRAW_ARROW、EMPTY、3); SetIndexArrow(1、234); SetIndexBuffer(1、CrossDown); SetIndexEmptyValue(1,0.0);あなたのEAで..ダブルEMA_green = iCustom(..... 0,0); double EMA_red = iCustom(..... 1,0); (EMA_red!= 0){OrderSend(.......あなたが販売している場合は、私がこれを助けることを願っています。

Chibi Beniko
11-22-2021 16:06, 04:06 PM
1添付書類(返信してください)このインジケーターの最新バージョンはありますか?英国人の作家でジェイソン・ロビンソン氏がスポーツ選手ではなく、なぜポップアップ・アラートが働くのかを尋ねることはできませんが、電子メールアラートはなぜですか?スレッドは1年以上前に停止したようで、おそらくすべてが解決されていますか? M30、EURUSDで稼働します。誰でも助けることができるので、
https://www.forexgroove.com/attachments/15189764671436006578.mq4