こんばんは!スクリプトをループさせることは可能ですか?そうすれば、オープンチャートが終了した後、作業を終了するのではなく、もう一度やり直すことができます。
Skyline Real:
こんばんは!スクリプトをループさせることは可能ですか?オープンチャートが終了したら、作業を終了するのではなく、また最初からやり直すような。
原理的には可能です。しかし、何回繰り返せばいいのでしょうか?それとも万華鏡のように一日中ですか?
こんばんは!スクリプトをループさせることは可能ですか?オープンチャートが終了したら、作業を終了するのではなく、また最初からやり直すような。
Karputov Vladimir:
原則的にはできます。何サイクルやるんですか?それとも万華鏡のように一日中?
まあ、丸一日のほうがいいんだけど......。
原則的にはできます。何サイクルやるんですか?それとも万華鏡のように一日中?
Skyline Real:
まあ、丸一日の方が良いだろうが......。
まあ、丸一日の方が良いだろうが......。
その場合、OnTimer()でカルーセル全体を呼び出すEAが必要だ。考えてみます。
追記。テキストを修正しました。
とにかく、これが Expert Advisor だ。チャートが無限に表示されているとき、Expert Advisor をオフにしたりアンロードしたりするのはちょっと面倒だということを覚えておいてください :) 。従って、このExpert Advisorは「ナビゲーター」ウィンドウに表示されることをお忘れなく:

これがそのExpert Advisorだ:
//+------------------------------------------------------------------+ //|チャートをトップに持ってくる。mq5 //|著作権© 2016, ウラジーミル・カルプトフ|||Copyright © 2016, Vladimir Karputov //|http://wmua.ru/slesar/|( 英語 //+------------------------------------------------------------------+ #property copyright "Copyright © 2016, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" #property description "The indicator switches all open charts after a certain interval." //--- 入力パラメータ //--- 入力パラメータ input uchar Seconds=3; // インターバル // インターバル //--- bool IsCicle=false; // 真 - シクルの中 // 真 - シクルの中 //+------------------------------------------------------------------+ //| エキスパート初期化関数| //+------------------------------------------------------------------+ int OnInit() { //--- タイマーを作成する if(Seconds<3) { MessageBox("Interval must be greater than 3 seconds"); EventSetTimer(3); } else EventSetTimer(Seconds); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ |エキスパート初期化関数| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- タイマーを破壊する EventKillTimer(); } //+------------------------------------------------------------------+ //| エキスパート・ティック機能| //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| タイマー機能| //+------------------------------------------------------------------+ void OnTimer() { //--- if(IsCicle) return; IsCicle=true; //--- uchar temp_second; if(Seconds<3) temp_second=3; // チャートID用の変数 long currChart,prevChart=ChartFirst(); //--- 最初のグラフを表示する //--- 最初のチャートを表示する ChartBringToTop(prevChart); Sleep((int)MathAbs(temp_second*1000)); int i=0,limit=100; //Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart); // 私たちが開いているグラフは、おそらく100以上はないだろう。 // 私たちが開いているチャートは100を超えない。 while(i<limit)// { // 前のグラフを基に、新しいグラフを作成する。 // 以前のチャートIDを使用して新しいチャートIDを取得する。 currChart=ChartNext(prevChart); if(currChart<0) break; // チャートリストの最後に達した // チャートリストの最後に達した //Print(i," ",ChartSymbol(currChart)," ID =",currChart); ChartBringToTop(currChart); Sleep((int)MathAbs(temp_second*1000)); // ChartNext()のために、現在のチャートのIDを記憶する。 // ChartNext()のために、現在のチャートIDを保存しておこう。 prevChart=currChart; // カウンターを増やすのを忘れないようにしよう // カウンターを増やすのを忘れないこと i++; } IsCicle=false; } //+------------------------------------------------------------------+ //| ターミナルにコマンドを送り、グラフを他のすべてのグラフの上に表示させる。 //| ターミナルにコマンドを送り、チャートを他のものよりも上に表示させる。 //+------------------------------------------------------------------+ bool ChartBringToTop(const long chart_ID=0) { //--- エラー値をリセットする ResetLastError(); //--- グラフを他のすべての上に表示する if(!ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true)) { //--- エラーメッセージを "Experts "ログに出力する。 Print(__FUNCTION__+", Error Code = ",GetLastError()); return(false); } ChartRedraw(chart_ID); //--- 実行成功 return(true); } //+------------------------------------------------------------------+
ファイル:
迅速な対応に感謝します。しかし、Expert Advisorが正しく動作しません。2つ以上のチャートを開いている場合、Expert Advisorは1つ目のチャートから最後のチャートにジャンプし、その間はスキップされます。また、最後のチャートから最初のチャートへの遷移もありません。
EAバージョン1.01.バグを修正し、変数名を入れ替えました。代わりに
Seconds
の代わりに
Seconds_MQL4ではSecondsという単語を変数名として使用できないため。(Secondsに関する ヘルプ)。
Expert AdvisorはMetaTrader 5とMetaTrader 4の両方で使用できます(MT4の場合はファイル名を変更するだけです)。
ファイル:
無限モードで利用可能なすべてのチャートを切り替える万華鏡 - EAが動作しているビデオ:
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
チャートの切り替え:
作者: Vladimir Karputov