В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
if (HistorySelect(0,TimeCurrent()))
ulong d_ticket;// deal ticket
{
// Получить общее количество сделок в историиint tot_deals = HistoryDealsTotal();
for(int j=0; j<tot_deals; j++)
{
d_ticket = HistoryDealGetTicket(j);
if(d_ticket>0)
{
mydeal.Ticket(d_ticket)
if(mydeal.Symbol()==SymbolTitle)
{
//формируем список сделок и анализируем его (если я правильно понял последняя сделка наша)
}
}
}
}
など
以下はEA内のコードです(インジケータライン 0の等価性を判断するために多くの関数を試しました)。
一番シンプルなものを選びました。
ここに、テスターのログからプリントアウトしたインジケータの値があります。
ゼロはないのですが、インジケーターを見ると、明らかにゼロで、その値には
の指標もゼロとなる。
なんじゃそら
グラフにupdateコマンドを実行した後、ログにこんなくだりが出てきました。
2011.02.03 02:24:51 HistoryBase '#IBM' 1つの無効なバーを削除しました。
2011.02.03 02:24:50 HistoryBase '#IBM' 1つの無効なバーを削除しました。
2011.02.03 02:24:49 HistoryBase '#IBM' 1つの無効なバーを削除しました。
2011.02.03 02:24:48 HistoryBase '#IBM' 1つの無効なバーを削除しました。
2011.02.03 02:24:47 HistoryBase '#IBM' 1つの無効なバーを削除しました。
2011.02.03 02:24:46 HistoryBase '#IBM' 1つの無効なバーを削除しました。
などを1秒ごとに表示します。
TF セントリー
ログのみ - 再評価はExpert Advisorのパフォーマンスに影響しません。
など
以下はEA内のコードです(インジケータライン 0の等価性を判断するために多くの関数を試しました)。
一番シンプルなものを選びました。
ここに、テスターのログからプリントアウトしたインジケータの値があります。
ゼロはないのですが、インジケーターを見ると、明らかにゼロで、その値には
の指標もゼロとなる。
なんじゃそら
アレイを反転させるのを忘れていませんか?
面白いことに、同じExpert Advisorでも、異なるコンピュータでは、異なる場所からチャートにテンプレートが追加されることが判明しました。
on 1 computer from MetaTrader 5 Profiles/Templates
on 2 computer from MetaTrader 5 ╱MQL5 ╱Files
ChartApplyTemplate(handle_Chart, "Sova15_30.tpl") に行を追加する。
どうしたんだろう、誰か教えてくれないかな?
最後にポジションを変更した時刻を取得する方法を教えてください。
最後にポジションを変更した時刻を取得する方法を教えてください。
シンボルのどの取引が最後であったかを判断する。
OnTrade()でキャッチするか、ヒストリーでキャッチするかのどちらかです。
https://www.mql5.com/ru/articles/138 find myposition.Time() there
このように、私の記憶が正しければ、ポジションを開いた時刻が返されます(つまり、私の理解する限りでは、最初にポジションを開いたトレードの時刻が返されます)。
言及されている記事としては、 myhistoryと mydealが 役に立つかもしれません(もしかしたら他のものが合うかもしれません)。
シンボルのどの取引が最後であったかを判断する。
OnTrade()でキャッチするか、ヒストリーでキャッチするかのどちらかです。
このように、私の記憶が正しければ、ポジションオープンの時刻が 返されます(つまり、私の理解では、ポジションをオープンした最初のトレードの時刻が返されます)。そう、それが問題なのです。つまり、必要なシンボルの最後の取引を見つけ、その時間を取得する必要があるのですが、もっと簡単な方法はないでしょうか?
特定のポジション(シンボルとそのIdがわかっている)、またはすべてのポジションの一般的なケースに興味がありますか?
履歴を見たり、案件の分析(mydealを 使用)だけなら、おおよそそうです。
1.期間中の総取引 件数を取得し、その中からシンボルおよび/またはポジション形成に参加したものだけを抽出します。
2.シンボルではなく、特定のポジションのIDでディールを選択する方が良い(その方が簡単で信頼性が高い)。
もっと正しくてシンプルなソリューションがあるはずですが。