どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 705

 
exsistentia:

どうやら、問題を正確に説明していなかったようです。GBPUSDのオープンオーダー(ペンディングではない)があり、オープンプライスは1.61029であるということです。関数OrderOpenPriceは、私の理解では、注文の実際のオープン価格(1.61029)を返すことになっています。 しかし、小数点以下4桁に丸められた値、1.6103が返されます。異なる建値の注文でテストしたところ、結果は同じで、最後の桁が欠けていました。


そのために、DoubleToStr()があり、これは本当のDigitで 書きますが、4で書きます!左上のドキュメンテーションをご覧ください。

これでよしとする。

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
[Deleted]  
borilunad:


DoubleToStr()を使えば、実際の桁数で書けますが、この方法では4桁で書いてしまいます。左上のドキュメンテーションをご覧ください。

これでよしとする。



ありがとうございました。そして、チュートリアルを読みながら、EAを書いているところです。

また、もう一つの質問ですが、ある注文が(チケットによって)クローズされたことを知る最も簡単な方法は何でしょうか?OrderCloseTime関数を使うべきでしょうか、それともこの目的のために特別な関数があるのでしょうか?

 
exsistentia:



ありがとうございました。チュートリアルを読みながらEAを書いているところです。

また、もう一つの質問ですが、注文が終了したかどうかを知る最も簡単な方法は何ですか(チケットによる)?OrderCloseTime関数を使うべきでしょうか、それともこの目的のために特別な関数があるのでしょうか?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

ticket変数には、チェック対象の注文のチケット番号が格納される必要があります
 
artmedia70:

ticket変数には、チェック対象の注文のチケット番号が格納される必要があります

注文が終了している場合、履歴(MODE_HISTORY)に残っているはずでは?
[Deleted]  
artmedia70:

ticket 変数には、確認中の注文のチケット番号を格納する必要があります。

ありがとうございます。

もうひとつ質問です。EAには、成行注文の終了に応じて、保留中の注文を削除 すべきブロックがあります。

OrderSelect(T1,SELECT_BY_TICKET);
datetime cls1;
cls1=OrderCloseTime(); // 1注文を閉じる時間
OrderSelect(T2,SELECT_BY_TICKET).OrderSelect(T2,SELECT_BY_TICKET).OrderSelect(T1,SELECT_BY_TICKET);
datetime cls2;
cls2=OrderCloseTime(); // 2つの注文を決済する時間
Alert(cls1," ",cls2);

if(cls1==0 && cls2==0) //両方の注文が開いている場合
return(0);
else
CLS++;//いずれかのオーダーのクローズフラグ

if(cls1>0 && CLS==1) //どの注文が決済されたかに応じて、保留中の注文を削除
OrderDelete(T3);
if(cls2>0 && CLS==1)
OrderDelete(T4);
return(0);
}.

ブロックは何らかの理由で機能せず(保留中の注文を閉じない)、Alertは常に「0 0」と表示されます。私は具体的にオープンオーダーの1つをクローズしましたが、何も起こりません。EAが注文が既に終了しているかどうかを確認せず、古いデータを処理しているように感じられます。何が問題なのでしょうか?

 
exsistentia:

ありがとうございます。

もうひとつ質問です。EAには、成行注文の終了に応じて、保留中の注文を削除すべきブロックがあります。


ブロックは何らかの理由で機能せず(保留中の注文は決済されない)、アラートは常に「0 0」と表示されます。わざと未決済の注文を1つ閉じたのですが、何も起こりません。EAが注文が既に終了していることを検知せず、古いデータを処理しているように感じられます。何が問題なのでしょうか?

オーダーチケットは どこで確認するのですか?また、注文がまだ有効である場合(少なくとも、コードによって有効なものの中から選択される)、OrderCloseTimeはどこから来るのでしょうか?
 
evillive:
オーダーチケットはどこで確認するのですか?また、注文がまだ有効である(少なくともコードによって有効なものの中から選択されている)場合、OrderCloseTimeはどこから来るのでしょうか?
あ、暴れるのはやめましょう。この場合、Poolは 無視されます。終値が0より大きいか等しい場合のみ、どのリストから注文が選択されたかを判断することができる。この基本を知らないのは勿体ない;)
 
evillive:

注文が終了した場合、履歴(MODE_HISTORY)で探すべきではないでしょうか?
インデックスで選択された場合 - はい、履歴で、チケットプールで 選択された場合は無視されます。数学を学ぶ ;)
 
artmedia70:
ああ、暴れるのはやめてくれ。この場合、Poolは 無視されます。終了時間が0より大きいか、または0に等しい場合にのみ、どのリストから注文が選択されたかを判断することができます。この基本を知らないのは勿体ない;)


私はチケットで検索することはほとんどなく、インデックスで検索することが多いので、残念ですが仕方ありません;)

が、正しいチケットの探し方がそこに引用されていない、もしかしたら探し方を間違えて、コードが動かないと文句を言っているのかもしれない......。

 
evillive:

私はチケットで検索することはほとんどなく、インデックスで検索することが多いので、残念ですが仕方ありません;)

が、コード内のそこにある正しいチケットを探しても見つからず、もしかしたら探し方を間違えて、コードが動かないと文句を言っているのかもしれません...。

外は大変なことになっている......。