При написании индикатора, который использует краткую форму вызова функции OnCalculate(), можно упустить то обстоятельство, что индикатор может рассчитываться не только на ценовых данных, но и на данных другого индикатора (встроенного или пользовательского - не имеет значения). Вы хотите улучшить индикатор, чтобы он правильно считался не только на ценовых данных, но и значениях другого индикатора? В этой статье мы по шагам пройдем все необходимые этапы такой модификации и выведем дополнительные полезные правила для правильного написания индикатора.
string cookie=NULL,headers;
char post[],result[]; string TXT="";
int res=-1;
//--- to work with the server, you must add the URL "https://www.google.com/finance" //--- the list of allowed URL (Main menu-> Tools-> Settings tab "Advisors"):
cookie="accept-encoding: deflate";
string google_url="https://ec.forexprostools.com/?columns=exc_currency,exc_importance&importance=1,2,3&calType=week&timeZone=15&lang=1";
//--- ResetLastError();
//--- download html-pagesint timeout=500/*0*/; //--- timeout less than 1,000 (1 sec.) is insufficient at a low speed of the Internetint max_try=5;
int n=0;
while(res==-1)
{
res=WebRequest("GET",google_url,cookie,NULL,timeout,post,0,result,headers);
...
}
これが、入ってくるんです。
"<html><head><title> 406 Not Acceptable</title></head><body><center><h1> 406 Not Acceptable</h1></center><hr><center> nginx/1.16.1</center></body></html>" (length: 149)
クローズした注文を履歴で計算する方法を教えてください。こんな感じで試してみました。 クローズド・オーダーよりもずっと、意味不明なものが出ますね。
状況はどうですか?filled, canceled, expired, rejected?
状況はどうですか?filled, canceled, expired, rejected?
意味がわからないんですけど。ヘルプでは、以下のように記述されています。
履歴の中の注文 数を返します。HistoryOrdersTotal() 関数を呼び出す 前に、HistorySelect() またはHistorySelectByPosition() 関数を 使用して、取引と注文の履歴を取得する必要が あります。
どのようなステータスもありません。
クローズした注文を履歴にカウントするために何を使うか教えてください。こんな感じで試してみました。 クローズド・オーダーよりもずっと、意味不明なものが出ますね。
令状に触れないこと。DREAMSと一緒に仕事をする。\
参考
トランザクションのプロパティの セクションをすべて読み、トランザクションがどのようなプロパティを持つことができるかを確認してください。具体的には、'DEAL_ENTRY_OUT'プロパティが必要です。
enum_deal_entry
識別子
商品説明
DEAL_ENTRY_IN
市場参入
DEAL_ENTRY_OUT
市場の出口
取引参加者
ユーターン
取引参加者
カウンターポジションを閉じる
さて、あなたのアルゴリズムは次のようになります。
HistorySelect-> 全ての取引をループする -> 取引のプロパティを取得する -> 取引をまとめる'DEAL_ENTRY_OUT'.
令状に触れないこと。DREAMSと一緒に仕事をする。\
参考
トランザクションのプロパティの セクションをすべて読み、トランザクションがどのようなプロパティを持つことができるかを確認してください。具体的には、'DEAL_ENTRY_OUT'プロパティが必要です。
enum_deal_entry
識別子
商品説明
DEAL_ENTRY_IN
市場参入
DEAL_ENTRY_OUT
市場の出口
取引参加者
ユーターン
取引参加者
カウンターポジションを閉じる
さて、あなたのアルゴリズムは次のようになります。
HistorySelect-> 全ての取引をループする -> 取引のプロパティを取得する -> 取引をまとめる'DEAL_ENTRY_OUT'.
ありがとうございました。位置、順番、取引...これらの概念の分け方にまだ迷いがあるのです。特に注文と案件の間(HistoryOrdersTotalとHistoryDealsTotalは同じ値を返します)。さらに、履歴を手動でカウントしなければならないことが判明しました :/。
令状に触れないこと。DREAMSと一緒に仕事をする。\
参考
トランザクションのプロパティの セクションをすべて読み、トランザクションがどのようなプロパティを持つことができるかを確認してください。具体的には、'DEAL_ENTRY_OUT'プロパティが必要です。
enum_deal_entry
識別子
商品説明
DEAL_ENTRY_IN
市場参入
DEAL_ENTRY_OUT
市場の出口
取引参加者
ユーターン
取引参加者
カウンターポジションを閉じる
さて、あなたのアルゴリズムは次のようになります。
HistorySelect→全取引をループ→取引プロパティを取得→取引をまとめる'DEAL_ENTRY_OUT'。
FORTSでない場合です。さもなくばクリアが追加される。
あるいは、少なくともbegin != 0のときにこれらの状況が発生するコードを見ることができます。
ありがとうございます
onCalculate関数の beginパラメータに関する私の質問に対する回答を是非とも頂きたいのですが あるいは、少なくともbegin != 0のときにそのような状況が発生するコードを見てみたいです。 ありがとうございました。
MQL5でインジケータを使い 分ける」という記事です。ご参考までに、ブラウザで記事を開いた後、「Ctrl」+「F」キーを押しながら、検索欄に「begin」と入力することをお勧めします。記事中の「begin」という単語がすべてハイライトされるようになりました。
Ctrl+F 内蔵ヘルプの検索に使っているのですが、いつも見つからないんです。
ニュースをダウンロードするためのインジケーターがあります。そのサンプルコードを以下に示します。WebRequestは 406を返します。別のクッキーを指定すべきでしょうか、それとも何が問題なのでしょうか?半年前はすべてうまくいっていた。
これが、入ってくるんです。