ICustom機能 - ページ 12

 

icustom()で2つのインディケータを呼び出して、売買する簡単なEAをどなたか投稿していただけませんか?

保留中の注文を 閉じるための関数はありますか?

ありがとうございます。

 

iCustomヘルプ

こんにちは。

FerruFXの指標の1つをカスタム指標を使用するように修正しようとしています。すでにすべてのMAを正しく動作させることができましたが、他の2つのインジケータの正しい情報を取得する方法がよくわかりません。最終的には添付した2つのインディケータ、PerkyAsctrend1とHeikenAshi MTFのMTFデータを表示するようにしたいのですが、どうすればよいでしょうか?どちらもiCustomを使用しており、そこまでは正しいコマンドを使用しているつもりです。

PerkyAsctrend1についてはデータ(ただし正しいデータではありません)を出すことができました。正しく表示させるためのロジックを理解しているつもりでしたが、そうではないのでしょうか。FerruさんはMA、CCI、MACD、ADX、Bullspower、BearsPowerをインジケータに使っていますが、これらはインジケータの種類が違うので、残念ながら今回の設定でのPerkyAsctrend1の参考には(私には)あまり役に立ちませんね。

HeikenAshiのMTFインジケータは簡単に追加できると思っていたのですが。どうやら間違っていたようです。Heikenの欄はどうしようもなく「Label」と表示され、最初のティックの後に全部消えてしまっている。

願わくば、このコードが実際にあなたにとって、私ほど気持ち悪いものに見えないことを祈ります。私は素人プログラマーです。もし誰かが助けてくれるなら、私は本当に感謝します。もっと経験豊富な人の目が必要です。完成すれば、かなり有益なものになると感じています。

-

以下は問題のあるコードの断片です。iCustomsは両方とも、価格履歴/チャートのバーの 合計数である2147483647の値を私に与えています。

int RISK = 4;

int AllBars = 250;

int MaMethod = 1;

int MaPeriod = 20;

//...

// ペスキー

//...

string Pesky_Trend_1 //-- , Pesky_Trend_5, Pesky_Trend_15, Pesky_Trend_30, Pesky_Trend_60, Pesky_Trend_240, Pesky_Trend_1440, Pesky_Trend_10080.など。

double Pesky_m_1=iCustom(NULL,PERIOD_M1, "PerkyAsctrend1", RISK, AllBars,0,shift_1).とします。

if ((Pesky_m_1 > 0)) { Pesky_Trend_1 = "UP"; x = 416; color_indic = Lime; UP_33 = 1; DOWN_33 = 0; }.

if ((Pesky_m_1 < 0)) { Pesky_Trend_1 = "DOWN"; x = 406; color_indic = Red; UP_33 = 0; DOWN_33 = 1; } } // Pesky_Trend_1 = "DOWN"; x = 406; color_indic = Red; DOWN_33 = 1

// ...

// インジケータ(Heiken)

//...

string HA_Trend_1 //-- , HA_Trend_5, HA_Trend_15, HA_Trend_30, HA_Trend_60, HA_Trend_240, HA_Trend_1440, HA_Trend_10080;

double HA_1_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1);

double HA_2_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1+1); double HA_2_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1+1)

if ((HA_1_1 > HA_2_1)) { HA_Trend_1 = "UP"; x = 466; color_indic = Lime; UP_41 = 1; DOWN_41 = 0; }.

if ((HA_1_1 < HA_2_1)) { HA_Trend_1 = "DOWN"; x = 456; color_indic = Lime; UP_41 = 0; DOWN_41 = 1; }.

//...

シフトの値が異例ですが、原作者はこのようにしています。

int start()

{

//...

// インジケータ用のシフト計算(テストのみ)

double shift_1, shift_5, shift_15, shift_30, shift_60, shift_240, shift_1440, shift_10080;

if( test == true )

{

shift_1=iBarShift(NULL,PERIOD_M1,look_time_shift,false);

shift_5=iBarShift(NULL,PERIOD_M5,look_time_shift,false); shift_6=iBarShift(NULL,PERIOD_M5,look_time_shift,false);

shift_15=iBarShift(NULL,PERIOD_M15,look_time_shift,false); shift_16=iBarShift(NULL,PERIOD_M15,look_time_shift,false);

shift_30=iBarShift(NULL,PERIOD_M30,look_time_shift,false); shift_40=iBarShift(NULL,PERIOD_M30,look_time_shift,false);

shift_60=iBarShift(NULL,PERIOD_H1,look_time_shift,false); shift_60=iBarShift(NULL,PERIOD_H1,look_time_shift,false);

shift_240=iBarShift(NULL,PERIOD_H4,look_time_shift,false); shift_240=iBarShift(NULL,PERIOD_H4,look_time_shift,false);

shift_1440=iBarShift(NULL,PERIOD_D1,look_time_shift,false); shift_1440=iBarShift(NULL,PERIOD_D1,look_time_shift,false);

shift_10080=iBarShift(NULL,PERIOD_W1,look_time_shift,false);

}

さもなくば

{

shift_1=shift_indicators;

shift_5=shift_indicators。

shift_15=shift_indicators;

shift_30=shift_indicators;

shift_60=shift_indicators。

shift_240=shift_indicators。

shift_1440=shift_indicatorsです。

shift_10080=shift_indicators。

ありがとうございました...

 

更新されたバージョン

iCustomの方はまだ正しいのですが、PerkyAsctrendの値が正しく計算されていません。iCustomはまだ正しいようですが、PerkyAsctrendの値が正しく計算されず、Heikenのロジックはどうやら完全に間違っているようです。HeikenのMTFインジケータのiCustomに2倍の値を提供するのは夕方になっていないようです。まだ再確認していませんが、インジケータのiCustomの2倍値はどちらもヒストリーのバー数(2147483647)と同じでした・・・!?iCustomで何か完全に間違ったことをしているはずなのですが、どうしても見つけることができません。

もし、お時間や気力があれば、見ていただけるとありがたいです。

ファイル:
 

へ。Homicida & Ra457 re: アイ・カスタム

こんにちは。

iCustomを使った ときに出るあの大きな数字の値、私も苦労したような気がします。

お役に立てれば幸いです。

iCustomに入力するパラメータは、インジケータコード自体の外部変数で指定したものと全く同じで、同じ順番であることを確認してください。

ありがとうございました。

 

2147483647は、履歴とは関係ありません。

この値は、符号付き32ビット整数が持つ最大の値で、MT4ではインジケータのデフォルトの「空値」として使用されています。

表示すべき値でない場合、インジケータは「Empty Value」を返します。

 

iCustom()

こんにちは、私はインジケータから3つの変数を読み取る必要があります。

インジケーターの上部に裾を配置しました。

変数

double eaBid=0;

double eaAsk=0;

文字列 eaType="";

//==========================

変数名

#property indicator_separate_window(インディケーターウィンドウ

#プロパティ indicator_buffers 8

#property indicator_color1 ブラック

#property indicator_color2 ライム

#property indicator_color3 ライム

#property indicator_color3 ライム #property indicator_color4 イエロー

#property indicator_color5 レッド

#プロパティインジケータ_color6 レッド

#property indicator_color7 ブラック

#プロパティインジケータ_color8 黒

double eaEP=0;

double eaSL=0;

double eaType=0;

double iVars[];

スタッフ

#プロパティ indicator_buffers 2

#property indicator_color1 レッド

#property indicator_color2 フォレストグリーン

//---- 入力パラメータ

文字列 IndicatorName="TradeWatch";

double EntryBid=0;

double EntryAsk=0;

string EntryType="";

double eaBid=0;

double eaAsk=0;

string eaType="";

int init()

{

return (0);

}

スタート

{

EntryBid = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 1, 0);

EntryAsk = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 2, 0)です。

EntryType = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 3, 0)です。

}

3つの変数をEAに読み込むにはどうすればよいのでしょうか?

どこで間違っているのか分からないのですが?

ありがとうございます。

 

インジケーターのバッファ 値に反映させるべき変数の結果を読めばいいのでは? グラフにインジケータを配置した後のインジケータ設定の色を見てみると、それぞれの色がバッファを表しています。 一番上の色=バッファ0、上から2番目の色=バッファ1、といった具合です。

EAではこのようなものを使用します。

Buff0=iCustom(NULL,0, "Indicator Name",0,0); //インジケーターの一番上の色です。

Buff0=iCustom(NULL,0, "Indicator Name",0,1); //1-Back(バック)

Buff1=iCustom(NULL,0, "Indicator Name",1,0); //インジケーターの次の色

Buff1=iCustom(NULL,0, "インジケータ名",1,1); //1-Back(バック)

インジケータ自体の変数を変更し、インジケータを再コンパイルすると、バッファとグラフ上のインジケータが更新されます!

それでもわからない場合は、実際のEAとインジケータを送りますので、見てみてください。

Dave

<<<

 

iCustom()

Daveさん、ありがとうございます。

動作するようになったよ。

 

いってらっしゃい

 

私のEA

MQ4ビルダーでASCTrend.mq4というEAを作成したのですが、これはICustom関数でasctrendシグナルを使用します。

このEAにフィルターを追加したいのですが、いくつかのペアでバックテストをした ところ、BBands indを使ったフィルターが良さそうです。

Double Buy1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",0,1);

double Buy2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 4, 0, Current + 1);

double Buy2_2 = 1;

double Sell1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",1,1); double Buy2_1 = iCustom(NULL),0, "BBands_Stop_v1, 4, 0, Current + 1);

double Sell2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 5, 0, Current + 1);

double Sell2_2 = 1;

if (Buy1_1 && Buy2_1 > Buy2_2) Order = SIGNAL_BUY;

if (Sell1_1 && Sell2_1 > Sell2_2) Order = SIGNAL_SELL; if (Sell1_1 && Sell2_1 > Sell2_2) 注文 = SIGNAL_SELL;

ファイル:
理由: