初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1406

 
Marco Nicholas #:
こんにちは。この条件をコードで正しく実装する方法を教えてください。

設定で指定した時間(時、分、例「23-55の後に最初の取引を開く」)の後に最初のポジションを開き、この条件を無視する必要があります。

このコードは完全に動作しますが、"one_time_current.hour" と "one_time_open.min" の後にあるすべてのディールを絶対に開いてしまいます。私はこの条件を一度だけ(1つのポジションを開くために)実行し、次のポジションには適用しないようにしなければなりません。

マルコさん、こんにちは。

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min && PositionsTotal()==0)

ウラジミールさん、ありがとうございます。

 
MrBrooklin #:

マルコさん、こんにちは。


敬具 ウラジミール

ありがとうございます、ちょっと語弊がありますね。このコードでは、多くのポジションを開くことはできません。それがないと、もっと開くんです。
 
Marco Nicholas #:
こんにちは。この条件をコードで正しく実装する方法を教えてください。

設定で指定した時間(時、分、例「23-55の後に最初の取引を開く」)の後に最初のポジションを開き、この条件を無視する必要があります。

このコードは完全に動作しますが、"one_time_current.hour" と "one_time_open.min" の後にあるすべてのディールを絶対に開いてしまいます。私はこの条件を一度だけ実行 (1つのポジションを開くため)、それ以降のポジションには適用しないようにする必要があります。

マルコさん、こんにちは。ポジションが1つ 空くように、協力をお願いしたんですね。今はそう書いていますね。

Спасибо, немного не то. Такой код не дает открыть много позиции. Без него открывает намного больше.

まず、いくつのポジションを開設するか、たくさんか 一つかを 決める必要があります。おそらく、言葉の機械翻訳では、要望を正しく伝えることができないのでしょう。

ウラジミールさん、ありがとうございます。

 
Marco Nicholas #:
こんにちは。この条件をコードで正しく実装する方法を教えてください。

設定で指定した時間(時、分、例「23-55の後に最初の取引を開く」)の後に最初のポジションを開き、この条件を無視する必要があります。

このコードは完全に動作しますが、"one_time_current.hour" と "one_time_open.min" の後にあるすべてのディールを絶対に開いてしまいます。この条件は1回だけ実行すればよく(1ポジションのオープンの場合)、それ以降のポジションには適用しない

ということは、「23時55分以降」という条件を無視せずに、次の条件があるはずですが、そのように理解してよいのでしょうか?

 
MrBrooklin #:

マルコさん、こんにちは。1つのポジション を空けるために協力を仰いだのですね。今はそう書いていますね。

まず、いくつのポジションを開設するのか、たくさんか 一つかを 決める必要があります。おそらく、言葉の機械翻訳では、あなたの要求を正しく表現することができないのでしょう。

ウラジミールさん、ありがとうございます。

そうなんです、お互い誤解していたんです。と書いたとき。

"このコードは正常に動作しますが、絶対にすべてのトレードは "one_time_current.hour" と "one_time_open.min" の後にオープン します。が、この条件を実行するのは一度だけ(1つのポジションをオープン するため)で、 それ以降のポジションには適用しない"

このことを明確にしたかったのです。1つのポジションを「1ポジション」開くのではなく(そのように理解されたのでしょう)、最初のポジションだけを開く条件を適用し、それ以降のポジションには適用しない、という意味です。

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

 
Alexey Viktorov #:

つまり、「23時55分以降」の条件を無視することなく、次のポジションの条件をもう一つ用意する必要がある、という理解でよろしいでしょうか。

そうです、次のポジションではこの条件を適用(キャンセル)する必要は ないのです。最初のポジション(EAの開始時、ある時間と分の後)だけオープンすればよく、それ以降のポジションではこの条件を適用する必要は ないのです。

ワンコンディションで可能なのでしょうか?

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
 
Marco Nicholas #:

そうです、次のポジションに適用(キャンセル)する必要は なく、最初のポジション(EA起動時、ある時分以降)をオープンするときに適用すればよく、それ以降のポジションはこの条件を適用する必要は ないことがわかりました。

ワンコンディションで可能なのでしょうか?

  bool first_position_was_opened=false;
  ...
  if(first_position_was_opened || ( one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min))

そして、どのポジションを開いた後でも、"first_position_was_opened=true "を設定することを忘れないでください。

first_position_was_opened "変数は、グローバルまたは静的でなければなりません。
 
助けてください!!!
特定のシンボルとマジックの過去1週間の利益を計算する関数が必要です。
マジックを使わない例もありましたが、マジックを使うのは無理です((
 
JRandomTrader #:

そして、どのポジションを開いた後でも、"first_position_was_opened=true "を設定することを忘れないでください。

first_position_was_opened "変数は、グローバルまたは静的でなければなりません。

ありがとうございます。面白い働き方をするバリアント。

また、私が最初に提案した方法も、ある条件下で、最初のポジションとそれ以降のポジションの空きを分けることで、もともと有効であったことを記しておきます。他の経由でも可能です。

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
if(item_positions==0) для первой


if(item_positions>0) для последующих

皆さんの回答のおかげで、mql5の学習がかなり早くなりました。
 

または、@JRandomTrader のコードにあるfirst_position_was_opened 変数の代わりにPositionsTotal() を使用することもできます:

if(PositionsTotal() > 0 || (one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)) {}

この場合、この変数は必要なく、すべてのポジションをオープンした後にこの変数をTrueに設定し、すべてのポジションをクローズした後にFalseに設定する必要もありません。

理由: