[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 261

 

OrderSend関 数のパラメータ10として無効な整数値の意味と修正方法について教えてください。

 
Pyxlik2009:

OrderSend関数のパラメータ10として無効な整数値の意味と修正方法について教えてください。

それが発生するコードの行を教えてください。

 
Pyxlik2009:

OrderSend関数のパラメータ10として無効な整数値の意味と修正方法について教えてください。


有効期限 は整数値で指定する。
 
Roll:

有効期限は整数値で指定する。
設定に分数的なものもありません
 
sergey_r:
しかし、私の注文はバーの終値で発注されるので、現在の価格が必要です。 もし現在の価格が前のバーの安値より低ければ...。現在の価格が前の価格より下がっていれば、注文が出されます。

やってみる

if (Bid<iLow(NULL, 0, 1)


 
Pyxlik2009:
設定に分数的なものもありません

上記機能の第10パラメータをご参照ください。0に設定する。
 
paukas:
台本というものがあるのです。必要なときに、実行すればいいのです。 。


ポイントは、その動作を一度行うことではありません。ポイントは、このスクリプトを実行すると、設定された時刻は読み込まれるが、トリガーされた時刻は読み込まれないということです。

そのため、注文が発生した時刻はターミナル内のどこにも保存されません。この時間を知りたいだけなので、もし存在するならば、MQL4の組み込み関数PendingOrderFilledTime()を使うのが理想的です。この場合、MT4自体が保留中の注文を監視し、準備のできた結果を私に提供します。

そのため、Expert Advisorやチャート上でループするスクリプトを使用する以外の解決策は見当たりません。なぜここで聞くのか?もしかしたら、同じような問題を抱えていた人がいて、Expert Advisorやスクリプトを使わずに、MQ4の手段だけで解決したのかもしれませんね。


LazarevDenis:

EAに満足していない理由がわからない、自己最適化で複雑なニューラルネットワーク取引システムを構築するつもりはないようだ、振り子が動いているかどうかを毎ティック確認し、トリガーがかかったら画面にテキストメッセージを表示するか音声の一方または両方を出力するだけだ、この作業は計算機が処理できる、コンピュータについて心配しないでください、それとも単に文章の問題があるのでしょうか。

書いていて 困ることはないです。端末からの情報を受け取るのに、即席の道具は使いたくない。Expert Advisorは、問題を正面から解決するものです。

MQ4の標準機能がないタスクはすべてExpert Advisorで解決できるため、端末にはExpert Advisorが搭載されています。そして、その連鎖の中にさらに弱いリンクを作るのはよくありません。たくさんのオープンターミナルがあり、それぞれにEAが必要で、EAがあるかないかをチェックする場合、不便で賢明でないことに同意するものとします。EAのアタッチメントのチェックを書いて、そこで強制的に実行させるというのは同じことなので、おそらく既存のMQL4関数の組み合わせですでに誰かがこの問題を解決しているのであれば、なぜ問題を複雑にするのでしょうか?

 
Starting:
...もしかしたら、既存のMQL4関数の組み合わせで同様の問題を既に解決している人がいるかもしれません。
読んでみたが、論理が理解できない。仮に必要な機能があったとして、それをどう使うか?いずれにせよExpert Advisorかスクリプトで挿入する必要があります。
つまり、問題は特殊な機能がないことではなく(くしゃみのたびに感謝することはできない)、要件を満たすコードを書くことの複雑さなのです。
 
granit77:
読んでみたが、理屈がわからない。さて、必要な機能があったとして、それをどのように使うのか?いずれにせよExpert Advisorやスクリプトに挿入する必要があります。つまり、問題は特殊な機能がないことではなく(すべてのくしゃみに感謝することはできない)、要件を満たすコードを書くことの難しさなのです。 。

使い方は簡単で、最後に決済したトレードの データを、最も早いオープンタイムで 書き出すスクリプトを実行するのです。スクリプトによってトリガーされたペンダントは、クローズドオーダーの行で混乱を引き起こします。スクリプトが起動した時点では、トリガーされた注文に関するデータを取得する場所がありません。なぜなら、トリガーされた日付は履歴で固定されており、完了した日付ではないからです。


簡単な例です。

保留命令 1は2011年01月01日に設定さ れました。

2011年01月02日 マーケットオーダー2が開設されました。

2011年1月3日に保留中の注文1がトリガーされ、成行注文1となり、OrderOpenTime()は2011年1月1日を示しますが、実際には2011年1月3日に成行注文となりました。

2011.01.04 マーケットオーダー2が終了しました。

2011.01.05 マーケットオーダー1がクローズされました。

履歴では、成行注文2の2011.01.02の日付が、最新のオープン日を持つ最後のクローズドオーダーのオープン日として与えられます。

実は、最後に決済された保留中の注文1の直近のオープン日(トリガー)は、2011年03月01日なのです。

そこで質問ですが、Expert Advisorがアカウントを監視していなくても、クローズした注文をオープンした日付で正しくソートするために、注文がトリガーされた実際の日付を取得することは可能でしょうか。


あなたが取引をしているとき、ずっと前に設定した保留中の注文があるとします。そして、ここでは、いくつかのトリガーが起動し、しばらくして閉じていることがわかります。しかし、1年前に配置され、今日になって発動・終了したものでも、配置された「ソシャゲ」の時期で判断されることになるのです。本当に最後にマーケットで開かれたもの、トリガーされたものを見たいわけですから、最後に渡されるわけで、本当に最近開かれたマーケットのものと一度開かれたものが混在しているわけではありません。私の質問に耳を傾けていただき、ありがとうございます。

 

皆さん、このタイミング機能をEAコードに挿入したとき、どこを間違えたか教えてください。

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
   return(0);
  }

コンパイラがエラーで溢れるだけだった。