アスク! - ページ 176

 

iCustom()呼び出しの3番目のパラメータは、インディケータ名です。最初のパラメータはシンボル、2番目のパラメータは希望する時間枠です。

mladen:
このようにします。
array[0]=iClose("EURUSD",0,0); [/PHP]

and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following :

[PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0);
 

MLaden

icustomを使用してカスタムインジケータを 複数のペアでループして呼び出しています。エキスパートタブで、インジケータがアンロードされ、次のペアのために再ロードされるのがわかります。 これは、iCustomの呼び出しがロードされるたびに、チャートの最大バー全体の値を再計算しているということでしょうか? また、バーNとバーN+1に対して別々の連続した呼び出しとして呼び出した場合、2番目の呼び出しは完全な再計算を必要としますか? また、連続した呼び出しが異なるバッファに対して行われた場合、それぞれ再計算されるのでしょうか。

iCustomの各コールは別々のインスタンスを生成するとおっしゃったのを覚えているので、私の推測では、それぞれが全体的に再計算されます。

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

Tzuman

 

Tzumanです。

メタトレーダーは、新しいパラメータ値(例外はバッファ番号と インデックス)のセットごとに、新しいインジケータのインスタンスを作成します。

例として、次の2つの呼び出しがあります。

iCustom(NULL,0, "name",1,0,0);

iCustom(NULL,0, "name",2,0,0);

は、2つのインジケータを作成します。(例えば、1や2の代わりに「n」を使用し、iCustom()を新たに呼び出す前にnに異なる値を割り当てても、別々のインスタンスが作成されます。そのため、iCustom()を使って書くことができない適応型インジケータがあり、それは関数の形で行わなければなりません)

さて、ここまでがインスタンスについてです。しかし、もしインジケータがロードされ、その後アンロードされた場合、それは通常パラメータの問題です(アンロードの部分は通常それを示しています)。もしパラメータのタイプが一致しない場合、「ロード-アンロード」スタントを行います。iCustomに渡されたパラメータの一部が期待されたタイプでない(またはパラメータの一部が誤って省略され、それがパラメータのタイプが混在する原因となる)かどうかを確認してください。

Tzuman:
MLaden

私は、いくつかのペアのループでicustomを使用してカスタムインジケータを呼び出しています。エキスパートタブで、インディケータがアンロードされ、次のペアのために再ロードされるのを見ることができます。 これは、iCustomの呼び出しがロードされるたびに、チャートの最大バー全体の値を再計算しているということでしょうか? また、バーNとバーN+1に対して別々の連続した呼び出しとして呼び出した場合、2回目の呼び出しでは完全な再計算が必要なのでしょうか? また、連続した呼び出しが異なるバッファに対して行われた場合、それぞれ再計算されるのでしょうか。

iCustomの各コールは別々のインスタンスを生成するとおっしゃったのを覚えているので、私の推測では、それぞれが全体的に再計算されます。

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

ツマン
 

最近の議論を邪魔したくはなかったのですが

この新しいスレッドをご覧ください。

https://www.mql5.com/en/forum/182212

 

mrtoolsがすでに解決したようです。

MaaTini:
私はあなたの最近の議論を中断したくなかった

この新しいスレッドを見てください

https://www.mql5.com/en/forum/182212
 
mladen:
ツマンネー。

メタトレーダーは、新しいパラメータ値(バッファ番号とインデックスを除く)のセットごとに、新しいインジケータのインスタンスを作成します。

例として、次の2つのコール:

iCustom(NULL,0, "name",1,0,0);

iCustom(NULL,0, "name",2,0,0);

は2つのインジケータのインスタンスを作成します(例えば、1や2の代わりに「n」を使用し、iCustom()を新たに呼び出す前にnに異なる値を代入しても、別々のインスタンスが作成されます。そのため、いくつかの適応型インジケータはiCustom()を使用して記述することができず、関数の形で行う必要があります)

さて、これでインスタンスについてです。しかし、もしインジケータがロードされ、その後アンロードされた場合、通常はパラメータの問題です(アンロードの部分は通常それを示しています)。もしパラメータのタイプが一致しない場合、「ロード-アンロード」の動作をします。iCustomに渡されたパラメータの一部が偶然にも期待されたタイプでない場合(またはパラメータの一部が偶然に省略され、それがパラメータのタイプが混在する原因となる可能性がある)を確認してください。

説明どうもありがとうございます。ロード/アンロードは、ループの繰り返しごとにSymbolが変化するため、新しいデータ値をすべてロードしなければならないことが原因だと推測していました。

例:iCustom("EURUSD",0, "name" ,1,0,0); & iCustom("GBPUSD",0,name" ,1,0,0) です。

パラメータをよく確認しますが、若干の盗用で自作のMA平均関数を 書き進めました。 タスクマネージャでプロセッサの使用率を見ただけでも、CPUの使用率が90~95%減ったような気がします。 うれしいです。

 

こんにちは、達人です。コーディングの初心者ですが、「stop opening multiple order when takeprofit hit」について教えてください。

static datetime closeT;

for(int a=OrdersHistoryTotal()-1; a>=0; a--) {if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true || sell==true) && closeT==Time[0]){buy=false; sell=false;} {false(time[0]);}; if(buy==true || sell==true) && closeT==time[1]){buy=false; sell=false } } }

 

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

 
RBarias:
hello guru im newbie in coding can you help me in "stop opening multiple order when takeprofit hit" I try code like this but not working. Please can you help me.

staticdatetime closeT;

for(int a=OrdersHistoryTotal()-1; a>=0; a--){if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true || sell==true) && closeT==Time[0]){buy=false; sell=false;} {if(a)==true; (buy=false) && closeT==Time[0]){f(a)==true; (sell=false) {if(sail=false) {f(sail=false) && closeT==Time(0)}}}

このようなコードを試すことができます(最後に閉じた注文が現在のバーで閉じているかどうか、テイクプロフィットが ヒットしたかどうかをチェックします)。

datetime closeT= 0;

int ticket=-1;

for(int a=OrdersHistoryTotal()-1; a>=0; a--)

{

if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY))

if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime())

{

closeT=OrderCloseTime();

ticket=OrderTicket();

}

}

if (ticket>-1)

{

OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(iBarShift(symb,0,closeT)==0 && OrderClosePrice()==OrderTakeProfit())

{

buy =false;

sell=false;

}

}
 

こんにちは、mladenです。

Symbols.mq4スクリプトはMT4ビルド509では完璧に動作しましたが、ビルド636ではファイルエラーが発生します(symbols.rawを開くとき)。

MT4ビルド636用の更新版を教えていただけませんか?

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

よろしくお願いします。

Timo.