//--- подготавливаем рабочие графики// "EURUSD,GBPUSD,GBPCHF,CADCHF,AUDCAD,AUDUSD,AUDNZD,NZDUSD,CHFJPY,USDCAD,USDCHF,USDJPY" список//symbolsInMW=0, // Все символы selectedSymbol=false//symbolsInMW=1, // Только в обзоре рынка selectedSymbol=true//symbolsInMW=2, // Все открытые графики selectedSymbol=true//symbolsInMW=3, // Список торгуемых символов selectedSymbol=false//symbolsInMW=4, // Текущий график с советником selectedSymbol=true
selectedSymbol=(symbolsInMW==0 || symbolsInMW==3)?false:true;
totalSymbols=SymbolsTotal(selectedSymbol); // Достаточное количество символовif(symbolsInMW!=4) { // Если работаем в мультивалютном режимеfor(int i=0; i<totalSymbols; i++) { // цикл по списку символов (либо в обзоре рынка, либо по всем)string symbol_name=SymbolName(i,selectedSymbol); // наименование символа
chart_id=get.GetChartID(symbol_name); // найдём ID графика//--- график выбранного символа не открытif(symbolsInMW==3 && StringFind(ListOfSymbols,symbol_name)<0) continue; // если работаем со списком и символа в списке нет - идём дальшеif(chart_id<0 && symbolsInMW!=2) { // если графика нету и не выбрана работа только с открытыми графикамиif(symbolsInMW==0 && !SymbolInfoInteger(symbol_name,SYMBOL_SELECT)) // если работаем со всеми символами и символ не выбран ...,SymbolSelect(symbol_name,true); // ... выберем символ в обзоре рынка
chart_id=ChartOpen(symbol_name,PERIOD_H4); // откроем график символа
}
//--- график выбранного символа уже открытif(chart_id>=0) {
if(symbol_name!=symbol) { // если выбранный символ не символ текущего графика
graph.Message("Load template \"Agent.tpl\" on "+symbol_name);
ResetLastError();
if(ChartApplyTemplate(chart_id,"Agent.tpl")) { // если загрузили шаблон - закинем подложкуChartSetInteger(chart_id,CHART_BRING_TO_TOP,true); // График поверх других
SetCanvas(symbol_name,chart_width,0,0,0);
}
//--- иначе - сообщение с ошибкойelse graph.Message("Failed to load the template \"Agent.tpl\" on chart "+symbol_name+", error "+IntegerToString(GetLastError()));
}
}
}
}
SetCanvas(symbol,chart_width,0,0,0); // Подложка основного графика с советником (здесь шаблон не нужен)
この機能が使われているコードの一部を紹介します。この例では、ユーザー定義のシンボルがマーケットウォッチウィンドウ(シンボル配列)に含まれており、そのようなシンボルが存在しない場合、対応するメッセージが表示されます。この機能のヘルプを読むことを怠らないでください、そこに明確に書かれています。
追伸
Expert Advisor(インジケーター)を正しく動作させるには、シンボルが「Market Watch」ウィンドウで有効になっている必要があり、この機能はそのためのものです。
ロボットの件、修正します。やりますね。何か質問があれば、ここに書きます。心からありがとうございました。
すべてはプログラムの要件とニーズに依存します。また、OnInit()の中で、EAの設定に応じて必要なシンボルやグラフを準備するコードも紹介します。
まあ、ここでは原理を見るしかないのですが。もしかしたら、それが役に立つかもしれない ;)
すべてはプログラムの要件とニーズに依存します。また、OnInit()の中で、EAの設定に応じて必要なシンボルやグラフを準備するコードも紹介します。
まあ、ここでは原理を見るしかないのですが。もしかしたら、それが役に立つかもしれない ;)
アルテム 「直接お手紙を差し上げました。チェックしてみてください。Plz.
アーテム 「直接お手紙を差し上げました。チェックしてみてください。Plz.
もう一度見てみたが、何もない...。
15分後に出発することになったんだ。急いでください ;)
もう一度見てみたが、何もない...。
15分後に出発しなければならないのです。急いでください ;)
が書けない - どうやって - そこにそのオプションがない...。
を助ける...
どう書くか......そこにその選択肢はないんです......。
を助ける...
私の名前をクリックし、プロフィールにアクセスすると、右上に「メッセージを書く」ボタンがあります。
でももう自分で書いたんだから、答えろよ。
私の名前をクリックし、プロフィールにアクセスすると、右上に「Write a message」というボタンがあります。
とはいえ...もう自分で書いたんだから、答えろよ。
どう書くか......そこにその選択肢はないんです......。
を助ける...
やれやれ...。そろそろ潮時かな。
ええ、まあ...とプライベートメッセージで送ったのが馬鹿だった。
まあ、いいや...。書かれ、読まれ、食べられた。