インジケーター概要

Beginner Alertはmql5.comで無償公開されているインジケーターです。
Beginner Alertはサポートレジスタンスとして機能するインジケーターであり、売買シグナルを表すインジケーターではありません。
このインジケーターはリペイントするためシグナルは移動してしまいますが、シンプルなシグナルであるため非常に見やすいシグナルとなっています。
サポートレジスタンスと言えば下記の様なンジケーターが一般的で、機能的に問題は無いのですが、チャートに線が多く表示されてしまうので、チャートが見にくくなってしまいます。
Beginner Alertが表示するサポートレジスタンスラインの精度を確認するために、Beginner AlertとSupport and Registanceを重ねて表示させてみました。
※太丸印がBeginner Alertです。
重ねて確認してみると、Support and Registanceは無駄ラインが多く表示されておりチャートがゴチャついて見えてしまいますが、Beginner Alertの方はスッキリしたシグナルになっていることが確認出来ます。
インジケーターの使い方
シンプルにサポートレジスタンスとしてお使いください。
上昇抵抗となるレジスタンスは赤丸で表示され、下降抵抗となるサポートは青丸で表示されます。
サポート・レジスタンスは抵抗となるため、反発する可能性が高いと考え、シグナル箇所で逆張りやシグナルを超えた箇所で順張りの予約注文を入れることで、フレキシブルに相場と向き合うことが出来ます。
シグナルの表示箇所は係数でヒゲより離れて表示されておりますが、おおよその値としてお考えください。
例えば、シグナル近辺で反発を予想するのであれば、SELLIMITやBUYLIMITで逆張りの予約注文を行います。
シグナルをブレイクすると予想するのであれば、SELLSTOPやBUYSTOPで順張りの予約注文を行います。
いずれにせよ、抵抗近辺では激しい攻防戦が行われることが多いのでBeginner Alertはリアルタイムで使うよりも、4時間や日足などの比較的大きいレベルの時間足で予約注文を前提に使うことをお勧めします。
コード修正方法
このインジケーターはおそらくロシアの人が作成した物だと思うのですが、文字コードの関係でコメントクローズ箇所が文字化けしてしまい、ダウンロードするだけではコンパイルエラーになると思います。
原因は下記コードのコメントの箇所です。
int CB=IndicatorCounted(); /*ここのコメントが文字化けのせいでクローズできていない*/ if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
このインジケーターを使いたいのであれば、上記コメントの箇所を削除するか、下記コードをコピペしてコンパイルしてお使いください。
//+------------------------------------------------------------------+ //| Beginner.mq4 | //| Copyright ゥ 2007 | //| | //+------------------------------------------------------------------+ #property copyright "Copyright ゥ 2007, Heaven" #property link "http://Beginner.com" //---- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red #define SH_BUY 1 #define SH_SELL -1 //---- ツ蓖鐱 ・・・ extern bool SoundON=true; extern int AllBars=0;//ト・ 鸙・・矜・頸瑣・ 0 - 蓁 糂襄. extern int Otstup=30;//ホ・ extern double Per=9;//マ褞韶・ //---- int SH,NB,i,UD; double R,SHMax,SHMin; double BufD[]; double BufU[]; int flagval1=0; int flagval2=0; //+------------------------------------------------------------------+ //| ヤ・・ 竟頽鞨・鈞・ | //+------------------------------------------------------------------+ int init() { //ツ NB 鈞・籵褌 ・・粽 矜・蓁 ・・頸瑯・竟蒻・・ if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars; IndicatorBuffers(2); IndicatorShortName("SHI_SilverTrendSig"); SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexBuffer(0,BufU); SetIndexBuffer(1,BufD); SetIndexDrawBegin(0,Bars-NB);//ネ淸韭瑣ⅱ 碯蒟碣琥瑣・ ・・ 蓁 NB 矜・ SetIndexDrawBegin(1,Bars-NB); ArrayInitialize(BufD,0.0);//ヌ珮・・髜・碯 濵・・・. ネ浯 碯蒟・・・・・褊・鴈裨・. ArrayInitialize(BufU,0.0); return(0); } //+------------------------------------------------------------------+ //| ヤ・・ 蒟竟頽鞨・鈞・ | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| ム髜・竟蒻・・ | //+------------------------------------------------------------------+ int start() { int CB=IndicatorCounted(); /* メ 粽・ ・ ⅰ・鈞・浯 ・ ツ 鍄・粐裝褊・渼, ・ 粽鈔褪 ・・粽 ・頸瑙燾・矜・ ・顆ク・ⅸ褊・・ マ ・黑 糺鉋粢 竟蒻・ 0, 糂ク ・・・ 襌ク 湜胛 淲 頸琿ⅲ・ ・鈞・糺萵ク・・・粽 髜頸瑙燾・矜・・炫・鮏竟. メ.・ 褥・ 糂裙・矜・100, 渼 粢ク・99. ゚ 粐ク・・・・・ 糺 ・・・ ⅰ蒟・・ NB - ・・粽 矜・・蓁褂瓊頷 髜ク. ツ ・竟・ ・・・ ・跫・・糺・炫, 鮏浯・ 蓁 ・・・・渼・(I80286) ・跫・ ・ⅲ粨. メ瑕 粽・ 鈕褥・ ・・・黑 糺鉋粢 NB ⅲク ・褂淲・ ・・・・裝・・褊・瑯 蒡 ・裝淲胛 矜, ・・ 1 齏・2, 炫 齏・鸙・・・ⅲ・ ・頸瑣・*/ if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB; for(SH=1;SH<NB;SH++)//マ籵褌 胙瑶韭 ⅳ 1 蒡 NB { for(R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);} R/=55; //---- SHMax=High[Highest(NULL,0,MODE_HIGH,Per,SH)]; SHMin=Low[Lowest(NULL,0,MODE_LOW,Per,SH)]; if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { // Pop an Alert if (SH==1 && flagval1==0) { flagval1=1; flagval2=0; if (SoundON) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period()); } BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; } if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { // pop an Alert if (SH==1 && flagval2==0) { flagval2=1; flagval1=0; if (SoundON) Alert("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period()); } BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; } } return(0); } //+------------------------------------------------------------------+
自動リフレッシュ版
このインジケーターはシグナルを自動でリフレッシュしません。
時間軸を切り替えるなどして強制的にインジケーターを初期化しないと最新のシグナルが表示されません。
これは面倒なので、自動でシグナルを再描画する仕組みに変更した物が下記のコードになるのですが、これはこれで使いにくい仕様になってしまいました。
シグナルが出るには出るのですが、一度出たシグナルが点灯しっぱなしなので、見づらいチャートになってしまうのです。
手動でリフレッシュさせる版は上記のコンパイルエラーを取り除いた版を使い、自動リフレッシュさせる版はこんな状態ですが、よろしければお使いください。
//+------------------------------------------------------------------+ //| Beginner.mq4 | //| Copyright � 2007 | //| | //+------------------------------------------------------------------+ #property copyright "Copyright � 2007, Heaven" #property link "http://Beginner.com" //---- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red #define SH_BUY 1 #define SH_SELL -1 //---- ??????? ????????? extern bool SoundON=true; extern int AllBars=0;//??? ??????? ????? ???????. 0 - ??? ????. extern int Otstup=30;//??????. extern double Per=9;//??????. //---- int SH,NB,i,UD; double R,SHMax,SHMin; double BufD[]; double BufU[]; int flagval1=0; int flagval2=0; //+------------------------------------------------------------------+ //| ??????? ????????????? | //+------------------------------------------------------------------+ int init() { //? NB ?????????? ?????????? ????? ??? ??????? ??????? ????????? if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars; IndicatorBuffers(2); IndicatorShortName("SHI_SilverTrendSig"); SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexArrow(0,159); SetIndexArrow(1,159); SetIndexBuffer(0,BufU); SetIndexBuffer(1,BufD); SetIndexDrawBegin(0,Bars-NB);//????????? ????????????????? ?????? ??? NB ????? SetIndexDrawBegin(1,Bars-NB); ArrayInitialize(BufD,0.0);//?????? ??? ?????? ????????. ????? ????? ????? ??? ????? ??????????. ArrayInitialize(BufU,0.0); return(0); } //+------------------------------------------------------------------+ //| ??????? ??????????????? | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| ?????? ????????? | //+------------------------------------------------------------------+ int start() { int CB=IndicatorCounted(); /* ??? ??? ?? ????? ??????????????? ?????. ? ???? ??????? ???????, ??????? ?????????? ?????????? ??????????? ?????, ?????? ????? ?????. ??? ?????? ?????? ?????????? ??? 0, ??? ???????, ??? ?????? ?? ?????????, ? ????? ?????? ?????????? ??????????? ????? ????? ????. ?.?. ???? ????? ????? 100, ?? ??????? ?????? 99. ? ???? ????? ???, ???? ? ???? ???????????? NB - ???-?? ????? ?????????? ???????. ? ???????? ???? ???????? ????? ? ????????, ?????? ??? ??? ??? ? ????? (I80286) ????? ? ????????. ??? ???, ?????, ??? ?????? ?????? NB ???????? ???????, ? ??? ??????????? ??????????? ?? ?????????? ????, ?.?. 1 ??? 2, ?? ??? ??????? ??? ???????? ?????????*/ if(CB<0) return(-1); else if(NB>Bars-CB) NB=(Bars-CB)+1; for(SH=1;SH<NB;SH++)//??????????? ?????? ?? 1 ?? NB { for(R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);} R/=55; //---- SHMax=High[Highest(NULL,0,MODE_HIGH,Per,SH)]; SHMin=Low[Lowest(NULL,0,MODE_LOW,Per,SH)]; if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { // Pop an Alert if (SH==1 && flagval1==0) { flagval1=1; flagval2=0; if (SoundON) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period()); } BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; } if(UD==SH_SELL) BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { // pop an Alert if (SH==1 && flagval2==0) { flagval2=1; flagval1=0; if (SoundON) Alert("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period()); } BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; } if(UD==SH_BUY) BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; } return(0); } //+------------------------------------------------------------------+