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

 
Falx:

皆さん、ごきげんよう。

ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。

彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。

これで、指標の条件が満たされれば、取引を開始することが判明しました。

テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここではもう必要なく、問題が生じています。

フィードバックすることが重要だと感じています。

1キャンドル-1ディールというように、厳密なものが必要です。

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

ポジションを建てる時間、ポジションを閉じる時間 - この時間とこのろうそくの開口部の時間。
 
Falx:

皆さん、ごきげんよう。

ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。

彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。

これで、指標の条件が満たされれば、取引を開始することが判明しました。

テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここですでに私には不要であり、問題が発生します。

フィードバックすることが重要だと感じています。

1キャンドル-1ディールというように、厳密なものが必要です。

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

また、フラグを使用することも可能です。

静的なbool変数またはグローバル変数を宣言し、それをflagとする。注文が開始された - フラグ = true、新しいローソク足が 開始された - フラグ = false と、このフラグを注文開始の条件に追加します。

 
Alexey Viktorov:

また、フラグを使用することもできます。

静的なbool変数またはグローバルレベルの変数を宣言し、flagとする。注文が開いた - フラグ = true、新しいローソク足 が開いた - フラグ = false、このフラグを注文開始条件に追加します。

このフラグはグローバルターミナルに保存され、再起動時に復元される必要があります。
 
Artyom Trishkin:
このフラグはグローバルターミナルに保存され、ターミナルを再起動すると元に戻るはずです。

どの期間での取引か、また、1バー内で注文を出しターミナルを再起動できるかどうかによります。

GVが嫌いで、GVなしでやっていこうとしています。EAを起動するときは、とにかく未決済注文の情報をすべて収集する必要があるので、起動時にフラグの値を元に戻すのはどうでしょうか。これもひとつの選択肢です。2つ目のバリエーションは、フラグの初期値が注文の開始を禁止し、次のバーだけが許可を与えるというものです。そのため、現在のバーでEAを開いて再起動しても、次のバーまで注文を開くことができないフラグになっています。

そういう機微に富んだアドバイスをすれば、何も考えなくてすむのです。だから、それに応じて質問数も増える...。なぜ、自分で何かを決めるのか...。フォーラムで質問すれば、動作するバージョンを入手することができます。そして、あとは製品を世に出すだけ...。

 
Alexey Viktorov:

どのような期間での取引か、また1バー内で注文を出しターミナルを再起動できるかによります。

GVが嫌いで、GVなしでやっていこうとしています。EAを実行するときも、未決済注文の情報をすべて収集する必要があるので、実行時にフラグの値を元に戻すのはどうでしょうか。これもひとつの選択肢です。2つ目のバリエーションは、フラグの初期値が注文の開始を禁止し、次のバーだけが許可を与えるというものです。そのため、現在のバーで新規注文を発注し、EAを再起動しても、次のバーまで注文の発注を禁止するフラグが立ってしまうのです。

そんな繊細なアドバイスをするだけで、私たちは何も考えなくてよくなります。その結果、質問数が増える可能性があります。なぜ、自分で何かを決めるのか...。フォーラムで質問すれば、動作するバージョンを入手することができます。そして、あとは製品を世に出すだけ...。

:)
まっすぐ前を見る習慣があるんです。
私としては、フラッグはまだ復元する必要があるからこそ、フラッグやその保管に煩わされることなく、ポジションのオープニング バーを見て、その周りで踊った方がいい。
 
Artyom Trishkin:
:)
私は、まっすぐ前を見る習慣があります。
フラグや格納にこだわらず、ポジションのオープニング バーを見てから踊りだす方が良いと思います。

好きな女性が違うのと同じ理由です。

フラグやポジションを開く時間など、どんな違いがあるのでしょうか?どう転んでも、何かを確認しなければならない...。
 

こんにちは!利益の出た注文の後に、最後に負けた注文の数を返す方法を教えてください。

以下は私のコードですが、何が間違っているのでしょうか?

int GetProfitLoss()// 注文を決済した際の損失額(最後に負けた注文の数)

{

int Loss = 0;

datetime lastCloseTime = 0;

int cnt = OrdersHistoryTotal();

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && lastCloseTime < OrderCloseTime())

{

lastCloseTime = OrderCloseTime();

}

if (OrderProfit()<0))

{

損失額 ++。

}

if(オーダープロフィット()>0)

{

break; // 最初に有益なものに出会ったときにループを終了する }.

}

}

}

}

return(Loss)です。

}

 
Falx:

皆さん、ごきげんよう。

ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。

彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。

これで、指標の条件が満たされれば、取引を開始することが判明しました。

テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここではもう必要なく、問題が生じています。

フィードバックすることが重要だと感じています。

1キャンドル-1ディールというように、厳密なものが必要です。

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

関数 NumberOfBarCloseLastPos()。

この関数は、最後に閉じた位置の小節番号、または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって設定される。

  • sy- 市場商品の名前。このパラメータを設定すると、この機能はこの楽器の位置のみを考慮します。デフォルト値-NULLは、 現在の市場商品を示す。
  • tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。
  • op-貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルトの値である- 1は、任意の識別子を意味する。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t=0;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t=0;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

NumberOfBarOpenLastPos()関数を使用します。

この関数は、最後にオープンしたポジションのバー番号または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって定義される。

  • sy- 市場商品の名前。このパラメータが設定されている場合、この関数は指定された楽器の位置のみを考慮します。デフォルト値-NULLは、 現在の市場商品を示す。
  • tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。
  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルトの値である- 1は、任意の識別子を意味する。

そして、これらの機能を使って、必要な条件を確認します。

 

よろしくお願いします。

私のロボットに以下のような関数を追加する必要があります。

取引開始後、40秒後に利益が15pips以上であれば即座に取引を終了し、それ以下であればtakeprofitを15pipsの利益水準に移動させます。

よろしくお願いします。

 
Vladimir Zubov:

NumberOfBarCloseLastPos()関数を使用します。

この関数は、最後の位置のバークローズ番号または-1を 返します。考慮すべき位置の選択は、外部パラメータによって定義される。

  • sy- 市場商品の名前。このパラメータを設定すると、この機能はこの楽器の位置のみを考慮します。デフォルト値-NULLは、 現在の市場商品を示す。
  • tf- タイムフレーム.デフォルト値-0は、現在のタイムフレームを示す。
  • op-貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルトの値である- 1は、任意の識別子を意味する。

NumberOfBarOpenLastPos()関数を使用します。

この関数は、最後にオープンしたポジションのバー番号または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって定義される。

  • sy- 市場商品の名前。このパラメータが設定されている場合、この関数は指定された楽器の位置のみを考慮します。デフォルト値-NULLは、 現在の市場商品を示す。
  • tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。
  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルトの値である- 1は、任意の識別子を意味する。

そして、これらの機能を使って、必要な条件を確認します。


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

調べてみます!!!