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

 
Alexey Kozitsyn:
こう言ってはどうだろう。注文を通すコードを「こうすればいい」という説明付きで見せていただいて、初めて何が正しくて何が間違っているのかがわかるのです。関数の名前だけでは、結果に近づけません。

こんにちは...私を助けるために同意していただきありがとうございます...受注を締め括るための小さな仕事は、必要なイベントを適切なフォルダに追加するだけで済むように思えたのですが、そう簡単ではないことが判明しました......。以下は、MQL4 ReferenceTrading Functions から引用したサンプルコードです

intOrdersHistoryTotal();

// 取引履歴から情報を取得する
int i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- 選択結果を確認 する
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("履歴データベースへのアクセスエラー(",GetLastError(),")).Print("履歴データベースへのアクセスエラー");
壊れる
}
// オーダーメイドで作業する...

}

...この関数は、クライアント端末に読み込まれた現在の口座の履歴のうち、決済された注文と削除された注文 の量を返します。履歴リストのサイズは、端末の「アカウント履歴」タブの現在の設定に依存します。

どのように検索するのか、なぜそれが必要なのか、私にはよくわかりません...。もしかしたら、邪魔にならないように、暗記して捨てることも必要なのでは?

新しく閉じた注文は、閉じた瞬間に短いビープ音で鳴らすことになっているんです。私のクライアントターミナルで決済されるすべての注文はTrailStopLossとTakeProfitの 平均化による2つの タイプのみです。注文(注文グループ)を閉じるとき、どの方向(売り または買いであっても、それらはStopLossまたはTakeProfitによってのみ分離され、対応するPlaySound関数に送信されなければならない

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

こんにちは...私を助けるために同意していただきありがとうございます...受注を締め括るための小さな仕事は、必要なイベントを適切なフォルダに追加するだけで済むように思えたのですが、そう簡単ではないことが判明しました......。以下は、MQL4 ReferenceTrading Functions から引用したサンプルコードです

intOrdersHistoryTotal();

// 取引履歴から情報を取得する
int i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- 選択結果を確認 する
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("履歴データベースへのアクセスエラー(",GetLastError(),")).Print("履歴データベースへのアクセスエラー");
壊れる
}
// オーダーメイドで作業する...

}

...この関数は、クライアント端末に読み込まれた現在の口座の履歴のうち、決済された注文と削除された注文 の量を返します。履歴リストのサイズは、端末の「アカウント履歴」タブの現在の設定に依存します。

どのように検索するのか、なぜそれが必要なのか、私にはよくわかりません...。もしかしたら、邪魔にならないように、暗記して捨てることが必要なのでは?

新しく閉じた注文は、閉じた瞬間に短いビープ音で鳴らすことになっているんです。私のクライアントターミナルで決済されるすべての注文はTrailStopLossとTakeProfitの 平均化による2つの タイプのみです。注文(注文グループ)を閉じるとき、どの方向(売り または買い)であっても、StopLossまたはTakeProfit の閉じるコマンドによってのみ分離され、対応するPlaySound関数に送信れなければ なりません。

0が一番最初、accTotal-1が最後なので、順序は逆順に検索する必要があります。このコードでは、"// work with order "の後に、コメントを記憶して、SLやTPに終了コメントがあるかどうかをチェックします。
 
Alexey Kozitsyn:
0が一番最初、accTotal-1が一番最後なので、順序は逆順に検索する必要があります。このコードでは、"// work with order "の後にコメントを記憶し、SLまたはTPの終了コメントがあるかどうかをチェックします。

intOrdersHistoryTotal();

// 取引履歴から情報を取得する
int i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- 選択結果を確認 する
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("履歴データベースへのアクセスエラー(",GetLastError(),")).Print("履歴データベースへのアクセスエラー");
壊れる
}
// オーダーメイドで作業する...

}

stringOrderComment()。

文字列コメント です
if(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect() "はエラーを返しました",GetLastError());
return(0) です。
}
comment=OrderComment()。

// ...

返信ありがとうございました.OrdersHistoryTotal 関数で選択した注文のコメントを返すOrderComment 関数(MQL4Trading FunctionsReference)のコードを追加すると、以下のようなコードになります・・・。が、端末の履歴で新規に決済した注文を追跡する機能はないのでしょうか?"0- very first.accTotal-1- last" - 端末の履歴で「最初に閉じた」「最後に閉じた」という意味ですが、時間によるものでしょうか......?は、正しく理解できたでしょうか?


Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

が、端末の履歴で新規に決済した注文を追跡する機能はないのでしょうか?

標準的なものがないのです。

  int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
ある線が別の線に含まれているかどうかを判断するには - 線を扱う機能を使用します。
 
Alexey Kozitsyn:

標準的なものがないのです。

  int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
一方の文字列が他方の文字列に含まれているかどうかを判断するには、 - 文字列関数を使用します。

ありがとうございます ...StringFind= 文字列の中の部分文字列を検索する関数のことですね。

int StringFind()
文字列 string_value, //検索する文字列
文字列 match_substring, //何を検索しているか
int start_pos=0 //検索を開始する場所

);

パラメータ
文字列の値
[in] 検索対象となる文字列。
match_substring(マッチサブストリング
[in] 検索対象となるMatch_substring。
start_pos=0
[in] 検索を開始する文字列の位置。
戻り値

検索したい部分文字列が始まる文字列の位置番号を返す。

...またはStringCompare 関数 -2つの文字列を比較 する?


StringCompare - Строковые функции - Справочник MQL4
StringCompare - Строковые функции - Справочник MQL4
  • docs.mql4.com
StringCompare - Строковые функции - Справочник MQL4
 
bablusut:

ありがとうございます ...StringFind= 文字列の中の部分文字列を検索する関数のことですね。

int StringFind()
文字列 string_value, // 検索する文字列
文字列 match_substring, //何を検索しているか
int start_pos=0 //検索を開始する場所

);

パラメータ
文字列の値
[in] 検索対象となる文字列。
match_substring(マッチサブストリング
[in] 検索対象となるMatch_substring。
start_pos=0
[in] 検索を開始する文字列の位置。
戻り値

検索したい部分文字列が始まる文字列の位置番号を返す。

...


本当です。
 
Alexey Kozitsyn:
正解です。

ありがとうございます ...とすると、次のようなコードになります。

 int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int  StringFind(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск

   ); 



 

 
bablusut:

ありがとうございます ...という形になります。

 int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int  StringFind(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск

   ); 



 

いいえ、自分が何をしているのか理解しようとします。あなたが書いたものは、単なるプロトタイプ関数(つまり、何をするのかを記述しただけのもの)です。つまり、ドキュメントの一部を切り取っただけなんですね。使う必要があります。だから、自分の価値観を引数に代える必要があるのです。そして、この関数はその結果を返します。そして、この結果を処理する必要があります。
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

初心者の方からの質問

A1exPit, 2016.11.30 22:14

SELECT_BY_POSによるOrderSelectで、どの0オーダーが最後に発注されたのか、最初に発注されたのか教えてください。両方試しているのですが、逆にエラーモディファイ#0が飛んできてしまいます。

 
Vladimir Karputov:

は、そのコードを見てみましょう。