MMA_Breakout_strategy_volume I (MMまたはMFなし)-WhooDoo22によってコード化された。 - ページ 4

 

サイモン

1. ...それはどのようなチケット番号を選択していますか?

RE 1..:OrderSelect()関数とOrdersHistoryTotal()関数を組み合わせて使用する際に、誤解がありました。どちらの関数も他の関数とは関係ありません。これを理解した上で、最初の注文送信コードブロックの先頭からOrderSelect()関数を削除すればよいのです。これは不要です(このコードは厳密にテスト目的で書かれたものであり、デモやライブで実行するためのものではないことをお忘れなく。明らかに、最終的にはデモやライブ口座で使用できるように修正されなければなりません)。

また、あなたの繰り返しのポイント、"GetLastError()関数で 戻り値をチェックする "を理解できたと思います。GOT ITです。ハハハ :)

2.OrderHistoryTotal()を理解していれば、...

RE 2.: OrdersHistoryTotal()関数の目的は理解しました。OrderSelect()関数とOrdersHistoryTotal()関数の組み合わせで使用することを誤解していました。

3.中括弧の働きを理解していれば...。

RE 3.:中括弧の正しい使い方は理解しているつもりです。また、この場合、中括弧は不要であることも理解しています。

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

私は、各コードブロックの式が、使用されている特定のコードブロックごとに関数呼び出しを分離していることを確認するために、不要な中括弧を使用することにしました。EAのコードブロックが中括弧の不足で誤って関数呼び出しをスキップしてしまわないように、非常に整然としたものにしました。

4.4.iという 変数をチケット番号として使用する。

RE 4.: 変数 i をチケット番号ではなく、ダミーのチケット番号として使うという私の解釈が理解できないとは、ちょっと驚きです。変数iは、OrderClose()関数が実行されるたびに追加される単なる桁数です。変数 i は、実際のチケット番号として定義されていません。 私は、部分的な注文のクローズを扱っています。これは、このタスクを達成するために私が知っている唯一の方法です。 私は別の解決策に心を開いています。もっと良い解決策があるのでしょうか?) 他の方法があるかもしれませんが、今のところ、使用しているプロセスを変更する理由は見当たりません。繰り返しになりますが、私は生産的なアイデアに対してオープンです。

5. ... もし、OrderSend()が失敗したら、ticket= -1 になります。

RE 5:どの OrderSend() 関数を指しているのか、具体的に教えて ください(「ボールローラー」、 最初のオーダー送信、またはオーダークローズ関数呼び出し内のオーダー送信の いずれか)この明確化は、我々の考えを同じ方向に導き、この議論の両方のメンバー間のコミュニケーションを強化することになります。

1.なぜ1回目や2回目(正しい表現)の注文送信が失敗するのでしょうか?(OrderSelect()とOrdersHistory...()関数の使い方が間違っているからでしょうか?これは修正されます)

2.注文送信に失敗した場合、なぜticket変数に-1が表示されるのでしょうか?注文送信に失敗した場合、ticket変数は-1ではなく、0を表すと思うのですが。説明お願いします。

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

 
WhooDoo22:

サイモン

RE 5..:どの OrderSend() 関数を指しているのか、具体的に教えて ください(「ボールローラー」、 最初の注文送信、またはOrder Close 関数呼び出し内の注文送信の いずれか)この明確化は、我々の考えを同じ方向に導き、この議論の両方のメンバー間のコミュニケーションを強化することになります。

1.なぜ1番目または2番目(これを訂正するplz)の順序の送信は失敗するのでしょうか?(多分OrderSelect()とOrdersHistory...()関数の間違った使用によるものでしょうか?これは修正されるでしょう)

2.注文送信に失敗した場合、なぜticket変数に-1が表示されるのでしょうか?注文送信に失敗した場合、ticket変数は-1ではなく、0を表すと思うのですが。説明お願いします。

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

OrderSend() が何らかの理由で失敗した場合、 ."取引サーバによって注文に割り当てられたチケットの番号 、または失敗した場合は -1返します。"ドキュメントから 引用しました。 返された値を保持するために、変数ticket を使用します .もし、OrderSend()が失敗したら、チケットの番号は-1です。


あなたは、変数iを チケット番号として使用しています。このコードでは.. .

OrderClose(i, 0.01, Ask, 30, CLR_NONE);

OrderClose() のドキュメントによると、関数呼び出しの最初の変数はint...ticket - オーダーチケットの固有番号です。それでは、チケット番号34282694を クローズしたと仮定して、次にi++;を実行することがどのような形で役に立つとお考えですか? おそらく、この特定のポイントに答え、それがどのように動作するかを説明することができますか?



EAのコードブロックが、中括弧の不足によって、誤って関数呼び出しをスキップしてしまわない ようにしたいのです。「というのは、CPUが咳き込んだり、風邪をひいたりするからです。


つまり、あなたはすべての問題を完全に理解しているにもかかわらず、ストラテジーテスターと ライブ/デモ環境で動作するコードを書くのではなく、ストラテジーテスターでのみ動作するようにコードを書くことによって、あなたのコードを不自由にすることを選択したと言っているのですか? これは、あなたが言っていることですか?

 

サイモン

1.もしOrderSend()が何らかの理由で失敗したら ..

RE 1.: 仮に、注文が失敗したとしましょう...。もし、あなたが言ったことが本当なら、チケット数は1だけ減算されます(チケットの合計から-1)。つまり、EAが25枚の注文を送信し、成功裏に決済したとします。注文を送信するシグナルが届き、OrderSend()関数が失敗しました。現在のチケットカウントは24ですか? もしそうなら、i変数は1も引かないので(-1)、偽のチケット・カウントを述べていることになります。正しいチケット枚数は24枚で、i変数のチケット枚数は25枚です。OrderSelect() 関数は、今、誤ったチケット番号を選択しています。お互いに同意しているのでしょうか?) ですから、OrderSend()関数が失敗したら、i変数から1を引くというのが、明白な解決策になるようです。ふぅ...。汗を拭き拭き。)

2. CPUが咳き込んだり、風邪をひいたりする?

RE 2.:通常、私はインフルエンザにかかると、話すときに賢明な考えを少し省略する傾向があります。CPUも同じだと思ったのですが......。)ユーモアはともかく、"{ }"がないために関数呼び出しがスキップされる可能性は、簡単に修正できる問題だと思うのですが。なぜ、注意しないのでしょうか?本当に関数呼び出しがスキップされる心配がないのであれば、中括弧を削除しない理由はないと思うのです。

3.OK, つまり...

RE 3.:これまであなたが提示してくれた問題点は理解できたと思います。

4.あなたは、Strategy Testerでしか動作しないようにコードを書くことによって、特に不自由にすることを選んだのですか?

RE 4.: 優先順位が低いと思われるものを犠牲にし、最も優先順位が高いと思われるものを維持することを選びました。これは、時間の制限と優先順位に基づいて選択したものです。

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

 
WhooDoo22:

サイモン

1.もしOrderSend()が何らかの理由で失敗したら ..

RE 1.: 仮に、注文が失敗したとしましょう...。もし、あなたが言ったことが本当なら、チケット数は1だけ減算されます(チケットの合計から-1)。つまり、EAが25枚の注文を送信し、成功裏に決済したとします。注文を送信するシグナルが届き、OrderSend()関数が失敗しました。現在のチケットカウントは24ですか? もしそうなら、i変数は1も引かないので(-1)、偽のチケット・カウントを述べていることになります。正しいチケット枚数は24枚で、i変数のチケット枚数は25枚です。OrderSelect() 関数は、今、誤ったチケット番号を選択しています。お互いに同意しているのでしょうか?) ですから、OrderSend()関数が失敗したら、i変数から1を引くというのが、明白な解決策になるようです。ふぅ...。この件で眉間の汗を拭いています :).

もし私が言ったことが本当なら、自分でドキュメントを読んでみてください。

チケット番号はストラテジーテスターの中で順番に実行されるだけです ... チケット番号は減算されません ... あなたがチケット番号を保持するために使用している変数 = -1 あなたのコードの何から変数チケットを 減算することはありません ..... .

「注文を送信する信号が届き、OrderSend()関数が 失敗しました。現在のチケット番号は24ですか?OrderType()の呼び出しもOrderSelect()が失敗したので失敗します ... ... そして OrderModify(ticket, ...) も失敗します ... ....

あなたはこれらの問題をすべて理解していると言っていますが、それらを無視してcodebaseeにこのコードを提出することを選択しました。 あなたはすでにそれをうまく処理しているので、私はこのいずれかを説明しようとする時間を無駄にする必要はないと思います。 不都合を申し訳ありませんが、私は助けるためにあなたの時間を取ることはこれ以上しないでしょう。

 

サイモン

ご要望の通り、ドキュメントを読ませていただきます。

1. チケット番号を保持するために使用している変数 = -1

RE 1..:どの変数を指しているのでしょうか? 変数i OR 変数ticket?

2.チケット番号を保持するために使用している変数 = -1

RE 2: これは、"注文送信に失敗したとき、チケット番号はマイナス1(-1) "とも言えるのでしょうか?

もしそうなら、EAが24個の注文を送信して成功裏に決済し、25個目の注文の送信に失敗した場合、現在のチケット番号はマイナス1(-1)です。正しいですか?)

明らかにOrderSelect()関数を 含むすべてのコードブロックは、「無効なチケット番号」エラーのために失敗します。エラー番号は、以前お書きになったとおり4108だと思いますし、ドキュメントにもそう書いてあります。

私は、"これらの問題をすべて理解している "とは書いていません。私は、" あなたがこれまでに提示した問題を理解して いると思います "と書きました。

3."あなたはこれらの問題をすべて理解していると言いましたが、それらを無視してこのコードをcodebaseeに提出することを選択しました。 不便をおかけして申し訳ありませんが、私はこれ以上あなたの時間を取ることはありません。"

RE 3: 私は現在、これらの問題を無視しているわけではありません。あなたとの議論がそれを示しています。私は、あなたがこれまで指摘し、これからも指摘し続けるすべての点に興味があります。また、私はあなたのMQL4ドキュメントに関する知識を尊重し、あなたの助けたいという気持ちに感謝しています。それは気づかれていないわけではなく、私はこのことに感謝します。

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

 

皆さん、こんにちは。

このコードでは、ロット価格のいずれも変更できないことに気づきました。

これを実行しようとしている間、ずっとエラーが発生しました。

ありがとうございます...そして、あなたの答えを待っています...。

非常に良い仕事WhooDoo22!!! ;)