[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 604

 
hoz:

しかし、こう言っては何だが。

この方法では、バーが開いた後、シグナルは永久に有効であり、...無限大になるまで。何のために必要なのか?パックではなく、バーオープンで1オーダーを開けるのがメインです。


И ...無限大へ - これは特殊なケースで、必要な条件である注文の設定が今日や明日に実現されない場合...です。

そして、パックの開封を避けるためには、開封の前に、開封済みの注文があるか、必要な期間内に開封が行われたかを確認すればよいのである。

 
rigonich:


実際には、注文を扱うすべてのオペで使用されます。 まず、注文を選択してから、その注文に対して何かを行う必要があります (注文情報の表示、サーバーに取引注文を送信して変更または決済)。ターミナルで注文を選択するには、チケット (特定の注文に対してサーバー上で割り当てられた変更しない番号) またはターミナルで注文が格納されている注文番号 (インデックス) によって行う 2 種類の方法があります。この数値は、注文の開始、設定、終了、削除の内容や数によって、1ティックごとに変化する可能性があります。

注文を処理するために、注文の評価サイクルを実装しています。


そんなループの始め方を知っているのです。

for(int i=0; i<total; i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

最後の2つのトレードが負けているときはTRUE、儲かっているときはFALSEを与える変数を取得するにはどうすればよいでしょうか。

またはこのように。

トレードがストップで決済されたとき、どこかのチェックボックスのカウンターがオンになっているはずです。しかし、閉じる瞬間はどうすればいいのでしょうか?

 
rigonich:


端末に存在する注文のデータが格納されている配列の中で、注文の位置を決定するためのインデックスである。

つまり、下線部(SELECT_BY_POSの下) bool OrderSelect(int index, int select, int pool=MODE_TRADES) です。



最後に閉じた注文のインデックスが1になることは正しく理解しています。そして、次のポジションをクローズした後、インデックス2...と、新しいポジションをクローズ するごとに、インデックスをクローズしていくのでしょうか?日次の集計は?昨日の取引もカウントされるのか?それとも毎日やり直しなのか?
 
lottamer:


そんなループの始め方を知っている...。

for(int i=0; i<total; i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

最後の2つのトレードが負けているときはTRUE、儲かっているときはFALSEを与える変数を取得するにはどうすればよいでしょうか。

またはこのように。

トレードがストップで決済されたとき、どこかのチェックボックスのカウンターがオンになっているはずです。しかし、閉じる瞬間はどうすればいいのでしょうか?


最も簡単な方法は、ループ内のすべての注文を調べ、最後に決済されたものを探し、注文がストップまたはプロフィットで決済されたかどうかを確認し、そのチケットを選び、ループをもう一度やり直し、保存したチケットの注文が 保存されていれば、それをスキップし、最後に決済されたものを見つけるが1...です。

追伸:あと、MODE_TRADESではなく、MODE_HISTORYです。

 
が、もう一つの質問...SecondsAfterOpenLastPos() 関数。EAが無効化された場合、この関数は昨日の最後のCLOSEDトレードの値を返すのでしょうか?(確認できない - 市場が停滞している)。
 
rigonich:


最も簡単な方法は、ループ内のすべての注文を調べ、最後に決済された注文を探し、ストップまたはプロフィットでその注文を見つけ、そのチケットを保存し、ループを再開し、保存したチケットの注文が選択されていれば、それをスキップし、最後に決済された注文を見つけ、1つ... というものでしょう。

追伸:あと、MODE_TRADESではなく、MODE_HISTORYです。


ロジックは明確なんだけど...僕にはコードに書くのは無理なんだ...複雑すぎる...今までブルートフォースループを使ったことがない...必要ないんだ...」と。だから、暗い森なんですね :)))と、私が見たループは、私にはよくわからないのですが...何かを試しているのは明らかで...それだけなんです。

ループの中で何が起こっているのか、どこで起こっているのかを理解するために、最もシンプルな例...ただし解説付きで教えていただけませんでしょうか?

 
lottamer:

ここから2つの選択肢をやり直せるかもしれません https://forum.mql4.com/ru/38949/page5#434244

関数 TimeOpenLastPos()。

この関数は、最後にポジションが開かれた時刻を返します。

前回のCLOSEDポジションのオープンタイムが必要です。

または

関数 SecondsAfterOpenLastPos()。

この関数は、最後にポジションを開いてからの秒数を返します。

そして、秒単位ではなく、時間単位でなければならない...。

こっちの方が近いですね。

最初の オプションは、最小限の変更で使用することができます(履歴と必要なものを探してください)。1日に1回しか取引しないようにしたいですか?
 
lottamer:
しかし、もう一つの質問......SecondsAfterOpenLastPos() 関数。EAが無効化された場合、この関数は昨日の最後のCLOSEDトレードの値を返すのでしょうか?(確認できない - 市場が停滞している)。


そうなります。

より正確には、閉じた状態ではなく、開いた状態になるのですが。

 
rigonich:


実際には、注文を扱うすべてのオペレーションで使用されます。 まず、注文を選択してから、その注文に対して何かを行う必要があります (注文情報の表示、取引注文をサーバーに送信して変更または決済) ターミナルで注文を選択するには、チケット (特定の注文に対してサーバー上で割り当てられた変更しない番号) またはターミナルで注文が格納されている注文番号 (インデックス) によって行う 2 通りの方法があります。この数値は、注文の開始、設定、終了、削除の内容や数によって、1ティックごとに変化する可能性があります。

注文を処理するために、注文の評価のサイクルがあります。


まあ、例えば、D1の始値で指値注文している。TPとSLは、日によっては動作しないことがあります。注文を確認すると、利用可能であり、新しい注文を開くことはありません。だから、よくないんです。したがって、潜在的な取引を見逃すことになります。
 
hoz:

えーと、例えば、D1のオープニングで指値注文をしています。TPとSLは数日間動作しないかもしれません、もし私たちが注文を確認したら...それは利用可能で、私たちは新しいものを開くことはありません。だから、よくないんです。したがって、潜在的な取引を見逃すことになります。

そして、すべての注文の開始時刻を 確認し、今日開いているものがあるかどうかを調べます。