オープンポジションをグループ分けする - ページ 2

 
Nikolay Kositsin:

このようなコードは、既製品として存在するにはあまりに個別的です。ポジションや注文に必要な属性のすべてのバリエーションについて、コメントを用意した構造と、ポジションや注文を分析してコメントを変更するExpert Advisorを作成します。 こうしたものは、独自に作成するか、フリーランサーに依頼するかになります。

もちろん賛成ですが、「既製品の......」は求めていませんし、懇願もしていませんし、注文もしていません。私は、私の考える面白いアイデアを実現するために応用できる(そして私自身が応用する)知識を共有することを提案します。実行したコードはこちらにも掲載しますので、参加される方はよろしくお願いします。

 
Sergey Voytsekhovsky:

もちろん、私もそう思いますが、「既製品の...」を求めているわけではなく、おねだりや注文をしているわけではありません。私は、私の考える面白いアイデアを実現するために応用できる(そして私自身が応用する)知識を共有することを提案します。私がやったことをここにも書いておきますので、どんな参加でも歓迎です。

私の記事を見てください。そこではすでに終わっている。どれに入れたか......覚えてない。でも、スピーチの中で読むことができます。2つの方法で作られています。2つ目は、作業用として残した、ユーザーIDをmagikに保存することです。
 
Artyom Trishkin:
私の記事もご覧ください。そこではすでに行われているのです。どれだったか......覚えていない。でも、スピーチの中で読むことができます。2つの方法で作られています。2つ目は、作業用として残した、ユーザーIDをmagikに保存することです。

ありがとうございます、非常にあなたのコードを見て、それを頻繁に使用し、あなたのハードワークのおかげで、しかし、あなたは私がまだこのトピックで発見されていない非常に多くの作品を持っています。カスタム識別子」のハッシュタグで検索してみます、ありがとうございました。

 
Sergey Voytsekhovsky:

ありがとうございます、非常にあなたのコードを見て、それを頻繁に使用し、あなたのハードワークのおかげで、しかし、あなたは私がまだこのトピックで発見されていない非常に多くの作品を持っています。カスタム識別子」のハッシュタグで検索してみます、ありがとうございました。

https://www.mql5.com/ru/articles/7394
 
Artyom Trishkin:
https://www.mql5.com/ru/articles/7394

ありがとうございます、本文に入りました:-)

 
Grigori.S.B:

コメント欄の使用はお勧めしません。もちろん最も簡単な方法ですが、このフィールドはDCによっていつでも変更可能なため、最も信頼性の低い方法でもあります。

まあ、トラッキングシステムは、コメントがポジションやオーダーの状態に対応しない場合は、いつでも変更できるように設計されています。ですから、視覚的に観察する分には、このケースは変わりません。
 
Sergey Voytsekhovsky:

ご質問の意味がわかりません

つまり、この https://www.mql5.com/ru/forum/48768

комментарий к ордеру
комментарий к ордеру
  • 2003.03.17
  • www.mql5.com
Общее обсуждение: комментарий к ордеру
 

こんばんは。

おすすめリンクをざっと検索してみたところ、当面はあまり複雑にしないほうがいいという結論に達しました。

とりあえず2次元配列で何とかしてみる。作って、そこにデータを書き込む。正しく動作しているかどうか確認しようと思ったら、間違っていることが判明しました

//+------------------------------------------------------------------+
int Array_Creating_Caste_Positions()
{
   int n = 0;
   int size = PositionsTotal();
   for(int i=0; i<size; i++)
   {
      if(m_position.SelectByIndex(i))
      {
         int profit = (m_position.Profit()+m_position.Commission()+m_position.Swap())>0?1:-1;
         int type   = m_position.Type()==POSITION_TYPE_BUY?0:1;
         ArrayResize(arr_position,size,2);
         
         arr_position[i][0] = m_position.Identifier();
         arr_position[i][1] = m_position.Magic();
         arr_position[i][2] = profit;
         arr_position[i][3] = type;
         arr_position[i][4] = -1; //N_Caste (-1 = нет данных)
         n++;
      }
   }
return(n);
}
//+------------------------------------------------------------------+

一時的に作成した変数を確認してCommentに 入れるには、正しく動作しない!

      int N = Array_Creating_Caste_Positions();
      
      int profit_Plus  = 0;
      int profit_Minus = 0;
      int N_Buy        = 0;
      int N_Sell       = 0;
      int size = PositionsTotal();
      
      for(int i=0; i<size; i++)
      {
         if(arr_position[i][2] > 0) profit_Plus++;
            else profit_Minus++ ;
         if(arr_position[i][3] < 1) N_Buy++;
            else N_Sell++ ;
      }
//+--- 
      if(InpCommentLog){
         Comment("Выводим данные \n"
         "всего записей в массиве ",N,"\n"
         "-----------------------: ",0,"\n"
         "profit_Plus:  ",profit_Plus,"\n"
         "profit_Minus: ",profit_Minus,"\n"
         "-----------------------: ",0,"\n"
         "N_Buy: ",N_Buy,"\n"
         "N_Sell: ",N_Sell,"\n"
         );}
//+--- 

どなたか、私が失敗したところを教えてください。

ファイル:
Sower_1_3.mq5  17 kb
 

テスターで実行すると、すべてのポジション(オープン)が利益確定されているように見え、すべてのポジションが購入されている

profit_Plus == N_Buy == N  чего в принципе не должно быть.
 

左上のコメント

大きくする方法がわかりません、すみません。