初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 20

 
Vitalie Postolache:
もう一度言います。オーダーを扱うときは、OrderSelect が最初に 来るようにしなければならない。それから、他のすべて。
返信ありがとうございました.if(OrderSelect(i=0;i<accTotal;i++)==true) という行が正しく書かれていない、またはコードの間違った 場所にあるということでしょうか?
 
bablusut:
返信ありがとうございました.if(OrderSelect(i=0;i<accTotal;i++)==true) という行が正しく書かれていない、またはコードの間違った場所に あるということでしょうか?...
そこに詳細を追記しました。
 

Renat Akhtyamov:
по ссылке пройдите, она у Вас в посте выделена.

すでに見ていますが、必要な情報がありません。 空のバッファに10桁の値、シグナルがあるときの価格の値...。mql4のコードでは、バッファ内の値の有無はどのように表現されるのですか?(何度も使っているのに忘れた.)

if( iCustom(NULL,t, "T...c",1,b) != .......).

 

atik441:уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение  а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...) 

if( iCustom(NULL,t, "T...c",1,b) !=EMPTY_VALUE) ・・・・・・・・・・・・・・。
 
Vitalie Postolache:
if( iCustom(NULL,t, "T...c",1,b) !=EMPTY_VALUE) ...必要なもの..............................................。ご指摘ありがとうございます。
 

理解を助ける。異なる方向性を持つ2つの注文が ある場合、順次実行 することは可能ですか?

オープントレードは、まず、いずれかのトレードのTPをトリガーし、その後、唯一のSLは、取引の過程で、SLレベルであるが

トレードのどれが先に成立したのでしょうか?

 
ganri:

理解を助ける。異なる方向性を持つ2つの注文が ある場合、順次実行 することは可能ですか?

オープントレードは、まず、いずれかのトレードのTPをトリガーし、その後、唯一のSLは、取引の過程で、SLレベルですが

トレードのどれが先に成立したのでしょうか?

アナライズアスク/ビッド
 
Vitalie Postolache:

もう一度言います。オーダーを扱うときは、OrderSelect が最初に 来るようにしなければならない。そして、その他もろもろ。

順序評価のループで動作させる場合、動作の順序は次のようになります。

1.チェック if(OrderSelect())

2.正しい注文かどうかを確認するため、通常はシンボルとマジックナンバーを確認し、次にタイプを確認します if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - この場合、現在のシンボルで指定されたマジックナンバーの成行き注文のみが処理されます。

OrderComment()、OrderProfit()などの他のデータの処理。

こんな感じでしょうか。

for(int i=OrdersHistoryTotal()-1; i>=0; i--) //перебираем историю торгов
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //если ордер выбран то работаем дальше, иначе смысла нет
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
         {
            if(StringFind(OrderComment(),"[tp]",0)>-1) //если найден признак закрытия профитом
            Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
            if(StringFind(OrderComment(),"[sl]",0)>-1) //если найден признак закрытия стоплосс
            Print("Order #",OrderTicket()," loss: "OrderTakeProfit());
         }
      }
}

ご返信ありがとうございます.そこで、取引履歴から注文を検索するために、関数OrdersHistoryTotalを 使用します。これは、不要なものをすべて削除すると、次のようになります。

for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - ここで質問ですが、我々が破棄した関数テンプレートのaccTotal」は どういう意味ですか?また、なぜテンプレートのようにi++」ではなくi--」 としたのでしょうか?
- 2番目の関数OrderComment は、前の関数OrdersHistoryTotal によって選択された場合、選択されたオーダーのコメントを返し、次のような形式になる。

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- ここで、"i", これは 前の関数から"i>=0" 、 "SELECT_BY_TICKET" は "SELECT_BY_POS" で置き換えられ、 "MODE_HISTORY" が 追加さ れた- なぜ?

- 3行目は定義ですが、この履歴にはTPとSLによって閉じられた成行注文しかないので、実際には必要な注文をチェックする必要はありません(閉じられた保留中の注文があるかもしれませんが、それは稀でしょう)、他のすべての注文パラメータは私たちにとって重要ではありません。ただ、履歴の中のクローズドオーダーの量がどんどん増えていくのですが、全部ではなく、例えば5~10件など、一定量の最後のオーダーを再計算することは可能でしょうか。

- 最後の4行は非常に明確です。唯一の問題はPlaySound関数についてで、そのコードは次のフォームの各「Print("..."」 行の後に挿入する必要があります

bool PlaySound()

文字列 // ファイル名

);

...それとも、これも何らかの方法で変換されているのでしょうか?

 
bablusut:

ループについて、ループがどのように制限されているか、ループがどのように機能するか、一般的に、初心者向けのC++の教科書を読むと良いでしょう、C++はMQLと非常に似ています、唯一の違いは取引関数です。

また、 MQLのチュートリアルや コンパイラのヘルプも読んでみてください。 フォーラムの記事は、ウィンドウの上の枠にある青い背景のところにあります。掲示板で講座の全容を語り、説明することはできません。

Учебник по MQL4
Учебник по MQL4
  • book.mql4.com
Учебник по MQL4
 
Vitalie Postolache:

ループについて、ループがどのように制限されているか、ループがどのように機能するか、一般的に、初心者向けのC++の教科書を読むといいでしょう、C++はMQLと非常に似ています、唯一の違いは、取引関数です。

また、 MQLのチュートリアルや コンパイラのヘルプも読んでみてください。 フォーラムの記事は、ウィンドウの上の枠にある青い背景のところにあります。掲示板で講座の全容を語り、説明することはできません。

ヴィタリー・ポストラッシュ さん、ありがとうございました!6歳の誕生日に教科書を全部読むなんて遅すぎるよ~、そんなに勉強できないよ、もっと早くやればよかったけど時間が なかったんだよ。ここで本当に退屈させてしまった、ごめん、もう迷惑かけないよ。