[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 176

 
eddy:
最後の注文はどのように定義するのですか? 時間で。 では、どの注文が時間的に最も新しいか、コードを見てみましょう。


もう、自分で考えたんです。しかし、最後のヒントがまだ理解できません。すべての注文を引き出して、どの注文が時間的に一番遅かったかを確認することは可能でしょうか?つまり、すべての注文を引き出して、すべての注文の終値を比較したいのですね。これを行うためのコードを教えてください。

私はこのように解決しました。

int z;
int _bar;

int start()

{

z=OrdersHistoryTotal()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit()> 0)
PlaySound("profit.Original"); If(OrderCloseTime() > 1& OrderCloseTime() < 7); If(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() > 7)wav");
if(OrderProfit()== 0)
PlaySound("zero.wav");
if(OrderProfit()< 0)
PlaySound("loss.wav");
}

zに1を代入すると、論理的に最新の注文が選択されることがわかったので、OrdersHistoryTotal()(履歴の注文 数を返す)をとってきて、インデックスの代わりに代入してみました。しかし、OrdersHistoryTotal()は実際より1多く返すことが判明しました。履歴には6件の注文がありますが、OrdersHistoryTotal()は7件の注文を返します。そこで、z=OrdersHistoryTotal()-1;と書きました。しかし、最後の1枚を選択するために、インデックスに何を使えばいいのか、以前はわかりませんでした。誰も何も教えてくれないので、自分で考えるしかなかったんです。

 
Reaktiv:

if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7))

これは根本的に間違っており、テスターでも常に動作するわけではありません。
 
sergeev:
は根本的に間違っており、テスターであっても常に動作するわけではありません。

だから、正しいやり方を教えてください。 教科書には、存在しない例がたくさんあるでしょ。
 
Reaktiv:

だから、教科書にはあまり例題が載っていないことを知っているので、正しい方法を教えてください。

どのような解決策を講じるかは、設定された目標に依存します。

履歴の中の最後の注文を見つけたいのであれば、それは一つのことですが、あなたのEAの最後の注文がどのように閉じられたかを判断したいのであれば、それはまた別のことです。

 
sergeev:

どのような解決策を講じるかは、設定した目標によって異なります。

履歴から最後の注文を見つけたいのであれば、それは一つのことですが、EAの最後の注文がどのように終了したかを伝えるだけであれば、それは別のことです。


注文が成立した後に音楽が流れ始め、利益の内容によって音楽が流れるようにしたいのです。この例では、注文が閉じられてから1〜7秒経過したときに再生するようにしました。
 

であれば、以下のようなスキームとなるはずです。

1.OrderSendが 成功した時点で、オーダーチケット(GlobalVariableSet)を覚えておく必要があります。

2.各ティックで、この記憶された注文のチケット(GlobalVariableGet)のクローズ(OrderCloseTime)を確認します。

注文が成立した場合、適切な利食い音を出し、記憶しているTicketを削除する(GlobalVariableDel)

4.それでも1~7秒のチェックをしたい場合は、このチェックを分析に含めることができますが、10秒以上遅れてティックが来て、シグナルを見逃す可能性があることを忘れてはいけません。

 
sergeev:

であれば、以下のようなスキームとなるはずです。

1.OrderSendが 成功した時点で、オーダーチケット(GlobalVariableSet)を覚えておく必要があります。

2.各ティックで、この記憶された注文のチケット(GlobalVariableGet)のクローズ(OrderCloseTime)を確認します。

注文が成立した場合、適切な利食い音を出し、記憶しているTicketを削除する(GlobalVariableDel)

4.それでも1~7秒のチェックをしたい場合は、このチェックを分析に含めることができますが、10秒以上遅れてティックが来て、シグナルを見逃す可能性があることを忘れてはいけません。



OrderSendは Expert Advisorから送信する必要があるのか、それとも違いはないのか?このシステムは、私自身が手作業で案件を開設していることがベースになっています。Expert Advisor は、ポジションを開いた後に注文を変更し(ストップをかけ)、ポジションを閉じるときに音楽を奏でます。10秒遅れるかもしれないティックについては、理解しています。今のような時期にEAを使うつもりはない。私は、このような遅延が発生しにくい午前9時から午後18時までユーロバックスでEAを使用しています。
 
Reaktiv:

そして、取引開始時にアドバイザー自身が注文を修正する(ストップを置く)。

そうすると、あなたの場合はこのポイントがオーダーチケットの 撮影ポイントになります。
 
sergeev:
ということは、あなたの場合、これはオーダーチケットが取られる時点です。

しゃい
 
Reaktiv:
注文が終了してから1秒から7秒経過した場合に音楽を再生するようにしてほしかった。
なぜかというと、注文が終了した時点で音楽を再生すればいいのです