KimIVの便利な機能 - ページ 58

 

イゴールさん、こんにちは。

mql4 - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3)で、この演算子を置き換える演算子を教えていただけませんか。

よろしくお願いします。

 
現在のバーの終値で 注文を閉じる方法について教えてください。すなわち、バーが注文と一緒に閉じる。
 

イゴールさん、こんにちは。

関数や演算子をすべて調べてみましたが、見つかりません。もしあったとしても、すべてのオープンポジションを修正するような関数は見当たりません。

を使用すると、選択した1つのポジションを毎ティックで変更するのではなく、すべてのオープンポジションを 一度に変更することができます。

差し支えなければ、アドバイスをお願いします。

 
KimIV >> :

このスレッドでは、私がMQL4で作成した関数のコードを掲載し、その使用例を示し、その使用に関する質問に回答していきます。各機能は2回に分けて掲載する予定です。最初の投稿には機能コード、2番目の投稿には使用例と短い説明が含まれます。実際に機能をテストして結果を表示するために、2番目の投稿にスクリプトのコードを添付することもあります。

トピック「2つのEAを 同時に動かす方法」のLukyanovさんの ご要望通り、注文を処理する機能については、最後にご紹介します。

最初の機能を注文設定機能(MT4テスター用バージョン)とします。

こんにちは、Igorさん。 AlterTraderをご存知ですか? もしそうなら、私の質問の3つか4つに答えていただけませんか?

 
ipm писал(а)>>
イゴール良い一日。
あなたのための簡単な問題を描くことができます:
シグナル線がMACDを交差する、または他の言葉でMACDヒストグラムがゼロに等しくなるどのような価格値で設定 します。

Olegさん、こんにちは。

そのような問題は、実際には解決したことがありません。そして、理論的にはどうすればいいのか、漠然としたイメージを持っています。おそらく、マクダク値をx、価格をxとし、関数y=f(x)でマクダク値の価格依存性を表現するのだろう。そんな簡単なことなら、xをypc x=F(y)で表せば、関数y=f(x)を反転させることができるはずだ。しかし、難しいのは、関数y=f(x)が複数のxに依存することだ。大学ではこのような講義はスキップしていました :-)

 
Duke3D писал(а)>>

イゴールさん、こんにちは。

mql4 - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3)で、この演算子を置き換える演算子を教えていただけませんか。

よろしくお願いします。

どうやらOrderType() になりそうです。

 
mozg писал(а)>>
現在のバーの終値で注文を閉じる方法について教えてください。すなわち、バーが注文と一緒に閉じる。
static datetime prevTimeOpen=0
if ( prevTimeOpen>0 && prevTimeOpen<Time[0]) {
  for ( цикл перебора позиций) {
    if ( выбрана позиция, которую надо закрыть) {
      OrderClose(...);
    }
  }
}
prevTimeOpen=Time[0];
 
amur писал(а)>>

イゴールさん、こんにちは。

関数や演算子をすべて調べてみましたが、見つかりません。もしあったとしても、すべてのオープンポジションを修正するような関数は見当たりません。

もしあるとすれば、1ティックごとに選択された1つのポジションではなく、すべてのオープンポジションを一度に修正するような機能が見当たりません。

差し支えなければ - アドバイスをお願いします。

そのような行為は適切ではないと思います。結局のところ、それぞれのポジションには個別のパラメーターがあるのが普通です。だから、1つ、特定のものを選ぶ...。

また、具体的に何を修正したいのでしょうか?

 

NameDayOfWeek()関数

パラメータとして渡された数字をもとに、曜日の名前を返します。

  • ndw - 曜日を表す数字。必須パラメータです。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование дня недели                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    ndw - номер дня недели                                                  |
//+----------------------------------------------------------------------------+
string NameDayOfWeek(int ndw) {
  if ( ndw==0) return("Воскресенье");
  if ( ndw==1) return("Понедельник");
  if ( ndw==2) return("Вторник");
  if ( ndw==3) return("Среда");
  if ( ndw==4) return("Четверг");
  if ( ndw==5) return("Пятница");
  if ( ndw==6) return("Суббота");
}
 

関数 NormalizeLot()。

この関数は、取引されているロットの正規化された値を返します。正規化以外に、ディーリングセンターで指定された限界にロットサイズを合わせる機能があります(ロットの最小値、最大値、ロット変更ステップをチェックします)。関数NormalizeLot() は、以下のパラメータを受け付ける。

  • lo- NormalizeLotの値.必須パラメータです。
  • ro- 丸め方式.False- 小さくなった側へ、True- 大きくなった側へ。初期値 -False- 下側へ。
  • sy- 取引商品の名称。NULL または""- 現在のシンボル。デフォルト値 -""。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro= False, string sy="") {
  double l, k;
  if ( sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo( sy, MODE_LOTSTEP);
  double ml=MarketInfo( sy, MODE_MINLOT);
  double mx=MarketInfo( sy, MODE_MAXLOT);

  if ( ml==0) ml=0.1;
  if ( mx==0) mx=100;

  if ( ls>0) k=1/ ls; else k=1/ ml;
  if ( ro) l=MathCeil( lo* k)/ k; else l=MathFloor( lo* k)/ k;

  if ( l< ml) l= ml;
  if ( l> mx) l= mx;

  return( l);
}

NormalizeLot()関数をテストするスクリプトを添付します。

ファイル: