KimIVの便利な機能 - ページ 11 1...456789101112131415161718...128 新しいコメント Rustamzhan Salidzhanov 2008.04.06 11:41 #101 KimIV: すべての人は、左の権利を持っている...然うちょっとだけ楽しむつもりでIlnar さんが、Pending Fractal Ordersという トピックで、Pending Orders on fractalsを作るにはどうしたらいいのか? イルナーは、フラクタルの価格水準を見抜くのに苦労したのではと推測します。だから、私の機能を使うことをお勧めします。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 07.10.2006 | //| Описание : Поиск ближайшего фрактала. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента (NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| mode - тип фрактала (MODE_LOWER|MODE_UPPER) | //+----------------------------------------------------------------------------+ double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) { if (sy=="" || sy=="0") sy=Symbol(); double f=0; int d=MarketInfo(sy, MODE_DIGITS), s; if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2; for (s=2; s<100; s++) { f=iFractals(sy, tf, mode, s); if (f!=0) return(NormalizeDouble(f, d)); } Print("FindNearFractal(): Фрактал не найден"); return(0); } 関数 FindNearFractal() は、指定されたシンボルで、指定されたタイムフレームで、指定されたタイプの最も近いフラクタルを検索し、その価格水準を返します。フラクタルがある場所の価格水準を知っていれば、その水準で注文を出すのはもう簡単です。 この関数が2つの値、例えばフラクタルがあるバーの番号を返すことは可能でしょうか、それとももう1つつなぐべきでしょうか。 Igor Kim 2008.04.06 15:45 #102 xrust писал (а): この関数が2つの値、例えばフラクタルが位置するバー番号も返すことは可能でしょうか、それとも別のものを接続すべきでしょうか。 また、バーナンバーは1つで十分なのに、なぜ2つの値を返すのでしょうか?このため、文中ではreturn(NormalizeDouble(f, d)); は、価格水準ではなく、バーカウンターSの 値を書き込む。出力にはフラクタルのバーナンバーが表示されます。そして、フラクタルタイプに応じてiHigh() またはiLow() 関数のいずれかで価格水準を取得することになります。 Rustamzhan Salidzhanov 2008.04.06 16:05 #103 いや、ここに書いてあることはすべてクリアしている、基本的に聞いているのだ。ありがとうございます、あなたの書き込みはとても参考になります。 Igor Kim 2008.04.06 16:36 #104 xrust: いや、はっきり言って、基本的にお願いしているんです。 あまあ、原理的に言えば、参照渡しされる配列は使えるんですけどね。そうすると、返されるパラメータの数は、配列のサイズ によって制限されることになります。 Igor Kim 2008.04.07 14:41 #105 関数 ExistOrdersByLot()。 指定されたロット数の注文が存在するかどうかのフラグを返します。True- order exists (set),False- order doesn't exist (not set).関数のパラメータを使用して、チェックする注文のリストを制限することができます。 sy- 楽器の名称。このパラメータを設定すると、指定した商品の注文のみをチェックします。NULLは 現在の計測器、""(デフォルト)は任意の計測器を意味する。 op- 操作、保留中の注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。デフォルトの値である- 1は、任意のオーダータイプを示す。 mn- オーダー識別子(MagicNumber)。初期値の- 1は任意のMagicNumberを意味する。 lo- 小数点以下2桁の精度でのロットの大きさ。デフォルト値は0- 任意のロットサイズです。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает флаг существования ордера по размеру лота. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любой ордер) | //| mn - MagicNumber (-1 - любой магик) | //| lo - лот ( 0 - любой лот) | //+----------------------------------------------------------------------------+ bool ExistOrdersByLot(string sy="", int op=-1, int mn=-1, double lo=0) { int i, k=OrdersTotal(), ot; lo=NormalizeDouble(lo, 2); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot>1 && ot<6) { if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (lo<=0 || NormalizeDouble(OrderLots(), 2)==lo) return(True); } } } } } return(False); } 「KimIVの便利な機能」のみ。 Useful features from KimIV [ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. Igor Kim 2008.04.07 14:44 #106 ExistOrdersByLot()関数の使用例です。 ロットサイズ0.2の注文があるか確認するExistOrdersByLot("", -1, -1, 0.2); 現在のチャートシンボルでロットサイズ0.3の注文を確認する。ExistOrdersByLot(NULL, -1, -1, 0.3); 任意のシンボルに対して、ロットサイズ0.5のBuyLimit注文があるかどうかを確認します。ExistOrdersByLot("", OP_BUYLIMIT, -1, 0.5); EURUSDでロットサイズ0.1、マジックナンバー123456のSellStop注文の有無を確認する。ExistOrdersByLot("EURUSD", OP_SELLSTOP, 123456, 0.1); USDJPYのロット0.4、マジックナンバー987の注文の有無を確認する。ExistOrdersByLot("USDJPY", -1, 987, 0.4); いつものように、上記の例で動作するスクリプトを添付します。 ファイル: test_existordersbylot.mq4 5 kb Igor Kim 2008.04.08 06:19 #107 GetLotLastOrder()関数。 最後に発注した注文のロットサイズまたは-1 を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。 sy- 楽器の名前です。このパラメータが指定された場合、この関数は指定された商品の注文のみをチェックします。NULLは 現在の楽器、""(デフォルト)は任意の楽器を意味します。 op- 操作、保留中の注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。初期値の- 1は任意の順序を意味する。 mn- オーダー識別子(MagicNumber)。デフォルト値-1 は任意のMagicNumberを意味する。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает размер лота последнего выставленного ордера или -1 | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetLotLastOrder(string sy="", int op=-1, int mn=-1) { datetime o; double l=-1; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (o<OrderOpenTime()) { o=OrderOpenTime(); l=OrderLots(); } } } } } } } return(l); } Igor Kim 2008.04.08 06:22 #108 GetLotLastOrder()の使用例です。 最後に発注されたロットの大きさを調べるGetLotLastOrder(); 現在のシンボルで最後に発注された注文のロットサイズを検索します。GetLotLastOrder(NULL); 任意のシンボルにおける最後のBuyLimit注文のロットサイズを検索します。GetLotLastOrder("", OP_BUYLIMIT); EURUSDのマジックナンバー123456の最後のSellStop注文のロットサイズを検索します。GetLotLastOrder("EURUSD", OP_SELLSTOP, 123456); 現在のシンボルに対するマジックナンバー2345の最後の注文のロットサイズを指定します。GetLotLastOrder(NULL, -1, 2345); 上記の例で従来から動作しているスクリプトを添付します。 ファイル: test_getlotlastorder.mq4 4 kb Igor Kim 2008.04.08 08:21 #109 GetOrderOpenPrice()関数。 最後にオープンした注文の設定価格または0 を返します。関数パラメータでチェックする注文のリストを制限することができます。 sy- 楽器の名前です。このパラメータが指定された場合、この関数は指定された商品の注文のみをチェックします。NULLは 現在の楽器、""(デフォルト)は任意の楽器を意味します。 op- 操作、保留中の注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。デフォルトの値である- 1は、任意の順序を示す。 mn- オーダー識別子(MagicNumber)。デフォルト値-1 は任意のMagicNumberを意味する。 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Возвращает цену установки последнего ордера или 0. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double GetOrderOpenPrice(string sy="", int op=-1, int mn=-1) { datetime t; double r=0; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()>1 && OrderType()<6) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderOpenPrice(); } } } } } } } return(r); } Igor Kim 2008.04.08 08:24 #110 GetOrderOpenPrice()の使用例です。 最後に行われた注文の始値を取得するGetOrderOpenPrice(); 現在のシンボルで最後に発注された価格を検索するGetOrderOpenPrice(NULL); 任意のシンボルにおける最後のBuyLimit注文の設定価格を検索します。GetOrderOpenPrice("", OP_BUYLIMIT); EURUSDでマジック123456で発注された最後のSellStop注文の価格を検索するGetOrderOpenPrice("EURUSD", OP_SELLSTOP, 123456); 現在のシンボルに対してマジック2345で最後に発注された価格を指定するGetOrderOpenPrice(NULL, -1, 2345); 上記の例で完全に動作するスクリプトを添付します。 ファイル: test_getorderopenprice.mq4 4 kb 1...456789101112131415161718...128 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
すべての人は、左の権利を持っている...然うちょっとだけ楽しむつもりで
Ilnar さんが、Pending Fractal Ordersという トピックで、Pending Orders on fractalsを作るにはどうしたらいいのか?
イルナーは、フラクタルの価格水準を見抜くのに苦労したのではと推測します。だから、私の機能を使うことをお勧めします。
関数 FindNearFractal() は、指定されたシンボルで、指定されたタイムフレームで、指定されたタイプの最も近いフラクタルを検索し、その価格水準を返します。フラクタルがある場所の価格水準を知っていれば、その水準で注文を出すのはもう簡単です。
この関数が2つの値、例えばフラクタルが位置するバー番号も返すことは可能でしょうか、それとも別のものを接続すべきでしょうか。
いや、はっきり言って、基本的にお願いしているんです。
関数 ExistOrdersByLot()。
指定されたロット数の注文が存在するかどうかのフラグを返します。True- order exists (set),False- order doesn't exist (not set).関数のパラメータを使用して、チェックする注文のリストを制限することができます。
ExistOrdersByLot()関数の使用例です。
いつものように、上記の例で動作するスクリプトを添付します。
GetLotLastOrder()関数。
最後に発注した注文のロットサイズまたは-1 を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。
GetLotLastOrder()の使用例です。
上記の例で従来から動作しているスクリプトを添付します。
GetOrderOpenPrice()関数。
最後にオープンした注文の設定価格または0 を返します。関数パラメータでチェックする注文のリストを制限することができます。
GetOrderOpenPrice()の使用例です。
上記の例で完全に動作するスクリプトを添付します。