質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

0回答

1668閲覧

MT4矢印インジケーター アラートが鳴るのタイミング変更したい

marupon

総合スコア12

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/12/12 09:28

今現在のアラートのタイミングなのですが
Bar(ローソク足)が確定した時点で1度だけ鳴ります。
それを、アラート条件を一時的に満たした時点で、1Bar につき1度だけ
鳴るように変更したいのですがソースコードを見てもわかりません。
下のソースコードのどの部分をどのように変更したらよいか教えて下さい。
宜しくおねがいします。

コードint start() { int i,shift,counted_bars, min_bars, wpr_period; double wpr_value, avg_range, high_level,low_level; // Set levels high_level=HIGH_LEVEL+Risk; low_level=LOW_LEVEL-Risk; // Check for enough bars min_bars=3+Risk*2+1; if(Bars<=min_bars) return(0); // Get new bars counted_bars=IndicatorCounted(); if(counted_bars<0) return (-1); if(counted_bars>0) counted_bars--; shift=Bars-counted_bars; if (BarCount>0 && shift>BarCount) shift=BarCount; if (shift>Bars-min_bars) shift=Bars-min_bars; while(shift>=0) { // Calc Avg range for 10 bars i=shift; avg_range=0.0; for (i=shift; i<shift+10; i++) { if (i>=Bars) break; avg_range=avg_range+MathAbs(High[i]-Low[i]); } avg_range=avg_range/10.0; // Set period for WPR calculation. wpr_period=3+Risk*2; // Use alternative period if there has been a large move. i=shift; while (i<shift+6) { if (i>=Bars-3) break; if (MathAbs(Close[i+3]-Close[i])>=avg_range*RANGE_FACTOR) { wpr_period=ALT_PERIOD; break; } i++; } // Calc WPR wpr_value=100-MathAbs(iWPR(NULL,0,wpr_period,shift)); // Set current signal if (wpr_value>=high_level) signal[shift] = 1; else if (wpr_value<=low_level) signal[shift] = -1; else if (wpr_value>low_level && signal[shift+1]==1) signal[shift] = 1; else if (wpr_value<high_level && signal[shift+1]==-1) signal[shift] = -1; else signal[shift]=0; // Draw arrows dn_sig[shift]=0; up_sig[shift]=0; if (signal[shift]==-1 && signal[shift+1]==1) dn_sig[shift]=High[shift]+avg_range*0.5; if (signal[shift]==1 && signal[shift+1]==-1) up_sig[shift]=Low[shift]-avg_range*0.5; shift--; } // Alerts CheckAlert(Alert_OnBar); if (gbInit) gbInit=False; return(0); } //+------------------------------------------------------------------+ //----------------------------------------------------------------------------- // function: CheckAlert() // Description: Check for new alerts //----------------------------------------------------------------------------- void CheckAlert(int iBar) { static int iPrevAlert=0; int iCurSignal=0; if (Alert_Popup || Alert_Email || Alert_SoundUp|| Alert_SoundDn) { // range check error if (iBar<0 || iBar>=Bars) return; // Get current signal if (up_sig[iBar]>0) iCurSignal=1; else if (dn_sig[iBar]>0) iCurSignal=-1; else iCurSignal=0; // Show alert if (iPrevAlert!=iCurSignal) { iPrevAlert=iCurSignal; if (iCurSignal==1) AlertNow(Symbol()+", "+TF2Str(Period())+": AscTrend1 Buy Signal."); else if (iCurSignal==-1) AlertNow(Symbol()+", "+TF2Str(Period())+": AscTrend1 Sell Signal."); } } return; } //----------------------------------------------------------------------------- // function: AlertNow() // Description: Signal the popup and email alerts //----------------------------------------------------------------------------- void AlertNow(string sAlertMsg) { //PrintD(sAlertMsg); // No alerts on startup if (gbInit) return; //Popup Alert if (Alert_Popup) Alert(INDICATOR_NAME, ", ", sAlertMsg); if (Alert_SoundUp) PlaySound(StringSubstr(Symbol(),0,6)+".wav"); if (Alert_SoundDn) PlaySound(StringSubstr(Symbol(),0,6)+".wav"); //Email Alert if (Alert_Email) { if (Alert_Subject=="") SendMail( sAlertMsg, "MT4 Alert!\n"+INDICATOR_NAME+"\n" + TimeToStr(Time[0],TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); else SendMail( Alert_Subject, "MT4 Alert!\n"+INDICATOR_NAME+"\n" + TimeToStr(Time[0],TIME_DATE|TIME_SECONDS )+"\n"+sAlertMsg); } return;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問