MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1917

 
Valeriy Yastremskiy #:

質問の趣旨と違いますね。Dimitriの関数は、引数を参照で返さない。なぜ参照渡しを使うのか?はい、ローカルエリアでは、自分自身で変数を宣言し、関数が呼び出された後にその変数への応答を得ることができるようになります。

で、それだけですか?

変数がグローバルに宣言されている場合、同じ名前の変数は存在しないはずです。例のように、複数の関数から呼び出される場合は、そのことを忘れて、各関数で同じ名前の変数を宣言すればよいのです。これは便利だ...。

 
Valeriy Yastremskiy #:

質問の趣旨と違いますね。Dimitriの関数は、引数を参照で返さない。なぜ参照渡しを使うのか?はい、ローカルエリアでは、自分自身で変数を宣言し、関数が呼び出された後にその変数への応答を得ることができるようになります。

で、それだけですか?

1.つまり、関数内部では、特定のグローバル変数ではなく、渡された任意の変数を変更し、返すことができるのです。

2.配列、構造体、テキスト文字列など、サイズの大きな変数をコピーしないようにするためです。

 
Alexey Viktorov #:

変数がグローバルに宣言されている場合、同じ名前の変数は存在しないはずです。例のように複数の関数から呼び出す場合は、そのままにして、各関数で同じ名前の変数を宣言すればよいでしょう。便利です...

すなわち、参照による引数の名前が同じで、ローカルで使用する場合のローカライズの問題でしかないのです。まああまりないですが、何かありますね。もっとあるかと思った。

 
JRandomTrader #:

1.特定のグローバル変数ではなく、関数内部で渡された任意の変数を変更し、返すことができるように。

2.配列、構造体、文字列など、サイズの大きな変数を関数にコピーしない。

質問は別のことだった。3つ目の例では、1つ目の答えですね。2й.フィールドやエンティティエレメントを変更できるかどうかの問題ではないと思うのです。ほとんどの場合、それらは一定ではないので、参照引数はほとんどの場合において自明である。しかし、もし実体が一定であるならばしかし、開発者たちは、それを気にしないことにした。

 
Valeriy Yastremskiy #:

すなわち、同じ引数名を持つローカル向けの用途を、参照によってローカライズする程度の問題である。まあ、たいしたことはないのですが、何かあるんです。もっとあるかと思った。

これらは、あくまで自分が納得していることです。きっと、メモリの冗長性とか、他の利点があるのでしょう。フェドセーエフに直接聞いてみたらどうだ?
 
Alexey Viktorov #:
それは、私が知っていること、私にとって心地よいことだけ確かに、メモリの冗長性とか、他のメリットもありそうですね。フェドセーエフに直接聞いてみたらどうだ?

知覚のレベルが違う))当たり前のことを他人に伝えるのはとても難しい、私自身が罪なのかもしれません)))。

 
Valeriy Yastremskiy #:

グローバルスコープでrを宣言することで、1つの引数xで行うことが可能です。

xをグローバルスコープで宣言することで、引数を全く取らないことも可能である。さらに、結果を返さず、グローバル変数に書き込むことも可能である。しかし、コードの混乱を招き、どこに何が保存されているかを覚えておく必要があり、プログラムコードの増加に伴い、プログラマーの生活は地獄と化すだろう。
 
こんにちは。何が足りないのか、教えていただけませんか?私の目的は、最初のトレードを最小限の 量で決済することです。現在、出来高が0.01の注文だけを選択しています。
     for(int i=0; i<OrdersTotal(); i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderLots()==0.01){ 
     OrderClose(OrderTicket(),0.01,OrderType()==OP_BUY?Bid:Ask,3,clrWhite);return;}}}    }

0.01からでなければ、0.02からの注文を選択しなければならない、というように。この点はどう書けばいいのでしょうか。

 
Rustam Bikbulatov 最小限の 取引量で最初の取引を終了することです。私のEAは現在、出来高が0.01の注文のみを選択しています。

0.01からでなければ、0.02からの注文を選択しなければならない、というように。この点はどう書けばいいのでしょうか。

if(OrderLots()==0.01)

本当に自分で見ていないのですか?

"この点をどう確認するか?" - ロットの最小値0.01を計算する必要があるのです。

おそらく、スリッページは3ではなく、3*Point()のようにポイントで指定する必要があります。

 
Rustam Bikbulatov 最小限の 量で決済することです。私のロボットは現在、出来高が0.01の注文だけを選択しています。

0.01からでなければ、0.02からの注文を選択しなければならない、というように。この点はどう書けばいいのでしょうか。

2つのサイクルが必要です。最初のサイクルで最小のボリュームを獲得し、2番目のサイクルでそれをクローズする必要があります。また、注文を決済すると1ポジション分ずれるので、最大ポジションから0になるサイクルを作ることも考慮する必要があります。