structMqlTick { datetime time; // Time of the last prices update double bid; // Current Bid price double ask; // Current Ask price double last; // Price of the last deal (Last) ulong volume; // Volume for the current Last price long time_msc; // Time of a price last update in milliseconds uint flags // Tick flags };
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
( I would like to mention today while I was testing my EA's Orders Profit calculation, calculation was continuous updates ( / loops for nothing ) I was test it onEURUSD chart, and while I was testing, I saw very low volume almost 20 ( no over ) a minute.and I was testing. そして、私がテストしている間、もう一回私は確かに知っていた、私はそれが私にだけ 'ターミナル>トレード'ティックを与える方法を見つけることができました。もう一回言っておきますが、何の理由もありません。 ただ、OnTick()でティックだけを出す方法は、Chart Symbolからティックを出すことができると知っている。その他、OnTimer()では1秒間に4ティック...といった具合に、皆さんの有益で素晴らしいコメントから学んだものです、本当にありがとうございました。)
#注文の計算とアカウント 情報の更新 - オープン
( 一度質問したのですが、まだ助けを必要としています )
私はOnTick() またはStart() で計算関数を呼び出していますが、これらはチャートシンボルのティックに 依存しています。
そして、EAの計算更新をティックやシンボルに依存しない ようにするにはどうしたらいいか、研究を始めています(/ Chart - Ticks, Symbols )。
ただ、「すべての注文の計算と口座情報」が「ターミナル > トレード」と同期(/ リアルタイム)して 更新されるようにしようとしています。
私を助けてください、ありがとうございます。
事前にありがとうございます。
OnTimer()
https://www.mql5.com/en/docs/basis/function/events#ontimer
そして、SymbolName(x,1)。そして、SymbolName(x,1)。
良いコメント、それは私が助けられた、どうもありがとうございます。
今、OnTick()とOnTimer()を使って いますが、どちらもうまくいっています。(EAでOnTimer()を使うのは初めてです。)
---
また、Ticksも試してみたいです。Terminal > Trade'でどのシンボル(Pairs)と現在のチャートシンボルからのTicksだけが必要です。このSymbolName()は私を助けることができますか?
どうすればいいのか、アドバイスお願いします。
全て最高です。
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
素晴らしい例で、私にとって本当に役に立つコメント です。
ティックが トレードペア/シンボルから 来ることは可能でしょうか?
なぜなら、私のマーケットウォッチはほとんど常にすべてのシンボルを表示しているからです。特に、私はトレードのための新しい良いペアを探しており、それが私が現在トレードのティックを開くだけで、' Terminal > Trade ' シンボル/ペアを取得できる方法について研究している唯一の理由です。
ありがとうございました。
いいえ、しかし、あなたは、例えば250ミリ秒は4ティックに等しくなるように低い値に設定OnTimer()関数で 価格を更新することができますので、なぜあなたはそれを必要とするのでしょうか?
コメントありがとうございます。
( サブテーマ -#注文の計算と口座情報の更新 - オープン)私は注文の利益計算を使用していると述べたように、それは 'ターミナル>取引'と同期して実行されていない、それが唯一の理由です。
そのため、時々ボラティリティが非常に低く、ティックが最低量になり、私は関数が1秒間に4回実行される可能性があると思いますので、無駄に実行されています(/無駄)。
私はそれが私に与えることができる方法を見つけることができない場合 ' ターミナル > 取引' 注文利益計算とアカウント情報(/更新)同期のためのティック。私はあなたの非常に有用な方法を使用します - あなたの最後のコメントでその方法を教えてくれたのはどれ、どうもありがとうございました。(私はすでにテストし、その方法は私を動作します)。
事前にありがとうございました。
まあ、本当に好きな人なら使えると思います。
{
datetime time; // Time of the last prices update
double bid; // Current Bid price
double ask; // Current Ask price
double last; // Price of the last deal (Last)
ulong volume; // Volume for the current Last price
long time_msc; // Time of a price last update in milliseconds
uint flags // Tick flags
};
現在の価格を返す構造体(MqlTick)
これは、シンボルの最新価格を保存するための構造体です。これは、最も要求の多い現在の価格に関する情報をすばやく取得できるように設計されています。
MqlTick型の変数を使用すると、SymbolInfoTick() 関数を1回呼び出すだけで、Ask、Bid、Last、Volumeの値を取得することができます。
各ティックのパラメータは、前のティックと比較して変化があるかどうかに関係なく、記入されます。従って、ティック履歴で過去の値を検索することなく、過去のどの時点でも正しい価格を知ることができます。例えば、1ティック到着時にBid価格だけが変化していても、その前のAsk価格や出来高など、他のパラメータも構造的に含まれています。
ティックフラグを分析することで、どのデータが正確に変更されたかを調べることができます。
例
{
MqlTick last_tick;
//---
if(SymbolInfoTick(Symbol(),last_tick))
{
Print(last_tick.time,": Bid = ",last_tick.bid,
" Ask = ",last_tick.ask," Volume = ",last_tick.volume);
}
else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
}
以下もご参照ください。
https://www.mql5.com/en/docs/constants/structures/mqltick
構造体とクラス、CopyTicks()、SymbolInfoTick()
特定のシンボルに新しいティックがあるかどうかを確認するために使用することができますが、これは実際には価格水準を直接読み取るよりも一段階多くなるので、もう一度言いますが、なぜそれが必要なのでしょうか。
Marco vd Heijden:
さて、もしあなたが本当にそれに夢中になっているなら、あなたは以下を使用することができます:...
特定のシンボルに新しいティックがあるかどうかを確認するために使用することができますが、これは実際に直接価格レベルを読み取るよりも1つのステップになるので、もう一度、あなたはそれを必要とする理由です。
参考になるコメント、ありがとうございます。
---
もし私が正しければ、文のこの部分は質問です。
そして、私は私の状況を説明する必要があります。
その懸念はすべてここから来ています。
---
より明確に理解していただけたでしょうか?
では、よろしくお願いします。
もし、本当に各ティックで待ちたいのであれば、各シンボルに対して別々のEAを書き、OnTick()関数を 使用する必要があります。
しかし、私はマイクロコントローラをプログラムしていますが、彼らは電源障害や割り込みが発生するまで、エンドレスループ(永遠)になっていることを伝えることができます。
ある条件が真か偽かをチェックするには、最小のブール型データ型を使いますが、プロセッサはバックグラウンドで動作するすべてのプロセスとグラフィックスなどで、1秒間に何百万回、何十億回とそれを行っています。
これが問題になるのは、より大きなデータ型を含む重い計算をし始めたときです。