"ダミー "からの質問 - ページ 135

 
Cmu4:

カウンターオーダーでボリュームを減らし、コメントを書き込むのですが、コメントが入ったままになってしまい、ポジションに「しがみつく」ことができません...。

最も興味深いのは、ポジションの方向に コメントを付けて注文を送ると、このコメントを受信し、反対なら受信しないことです。

もしかしてバグ?

可視化モードで自分のEAを見たところ、コメントが「付く」ときと「付かない」ときがあることがわかりました。まだ何も言えない(私にとっては致命的ではない)。さらに観察し、再現できるパターンを見つけたら、サービスデスクに連絡してください。
 
tol64:
可視化モードで見てみると、コメントが「付く」ときと「付かない」ときがあることがわかりました。まだ何も言えない(私にとっては致命的ではない)。さらに観察して、再生にパターンがあればサービスデスクに 連絡してください。

もうやったよ。うーん、いつも間違えちゃうんだよなぁ。コメントを「抜粋する」なんてとんでもないことですし。ウフフ...

ところで、あるポジションの最後のトレードのコメント(コメントの数字のみ)を取得する簡単な関数ですが、これでよいのでしょうか?そうでなければ、もしかしたら「削り方」が間違っているのかも...。

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 }
 
Cmu4:

もうやったよ。うーん、いつも間違えちゃうんだよなぁ。コメントを「抜粋する」なんてとんでもないことですし。ウフフ...

ところで、あるポジションの最後のトレードのコメント(コメントの数字のみ)を取得する簡単な関数ですが、これでよいのでしょうか?それとも、私が「正しく理解」できていないのか......。

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 } 

HistoryDealGetString() 関数の最初のパラメータはトランザクションのチケットで、ここまでは履歴にあるディールの数 です。

 
Yedelkin:

HistoryDealGetString()数の第1パラメータはトランザクションチケットであるべきですがここまでは履歴のトランザクション 数を指定して います。

修正しましたが、まだうまくいきません。皆さん、迷っているのでアドバイスお願いします...。

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 int ticket = HistoryDealGetTicket(total);
 double Comments = StringToDouble(HistoryDealGetString(ticket,DEAL_COMMENT));
 if (Comments!=0)
  {Print("commentttt = ", ticket);
   return(Comments);
  }
 else return(0);
 }
 
 
 
Cmu4:

直したのですが、まだうまくいきません。皆さん、迷っているのでアドバイスお願いします...。

よし、次に行こう :)

これがそのセリフです。

int ticket = HistoryDealGetTicket(total);
は、リスト内の項目の番号付け(案件リスト内の案件の番号付けも含む)が、「1」ではなく「0」から始まることを考慮していません。したがって、値totalを「トランザクションリスト内のトランザクション番号」と指定することは、存在しない数値を指定することになる。MQL5 Reference /Trading Functions / HistoryDealGetTicketの例を参照してください。
 
Yedelkin:

よし、次に行こう :)

以下はそのセリフです。

は、リスト内の項目の番号付け(案件リスト内の案件の番号付けも含む)が、「1」ではなく「0」から始まることを考慮していません。したがって、「取引リスト内の取引番号」として値totalを 指定することは、存在しない番号を指定することになります。 MQL5 Reference /Trading Functions / HistoryDealGetTicketの例をご覧ください。
どうもありがとうございます!-1を追加することで全て解決しました(解決したかな~とりあえずプリントで確認しました)。:)
 
不思議ですね...。
   datetime Arr[], time1;
   int t;

   t=CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];
Print(time1) は、このバージョンのコードでは何も表示されません。
   datetime Arr[], time1;

   CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];

- の出力になります。

これはバグなのでしょうか、それとも機能なのでしょうか?

 
tはdatetimeとして定義すべきなのでは?
 
Cmu4:
tはdatetimeとして定義すべきなのでは?

t はdatetime にはできないので、CopyTime のヘルプをよく読んでください。

"戻り値"です。

コピーされた配列の項目 数,またはエラーの場合は -1"

直感的には、この関数の戻り値が処理されて、無事に変数tに代入されたように感じるのですが...。というメッセージが表示され、この時点でプログラムがハングアップし、まるでArrに何もコピーしたくなかったかのようになります。しかし、本来は配列へのコピーを先に行い、その後にt変数にコピーされた項目の戻り値を代入するものだと考えていました。でも、こうしてみると...。
 
alph:

こんにちは。

私はEAを書きました、すべてが動作します。しかし、「request.type_filling =ORDER_FILLING_AON;'-undeclared identifer and implicit enum conversion」の最初の行でエラーが発生しました。

何が悪いのかわからない、これまで同じ文字列でコンパイルしたEAはすべて以前と同じように動作している。

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

ORDER_FILLING_AONの リンクをクリックすると、名称が変更になっただけです。
理由: