コーディングのヘルプ - ページ 514 1...507508509510511512513514515516517518519520521...786 新しいコメント Triip 2015.08.05 15:37 #5131 mladen: トリプこちらをご覧ください :https://www.mql5.com/en/forum/general fast maの期間を1に設定すると、価格が移動平均(slo ma)を横切った場合と同じになります。 素晴らしいありがとうございます。 ms03-039 2015.08.05 17:14 #5132 インジケーターがエラーになります。修正方法は? ファイル: xxc.jpg 188 kb Mladen Rakic 2015.08.05 17:40 #5133 popej30: インジケータがエラーになっています。どのように修正すればよいですか? その画像からは、どこにエラーがあるのかわかりません。 ms03-039 2015.08.05 18:23 #5134 スマートフォンにアラートを 表示させるには? コード:.... .... しかし、アラートは、各今ローソクを表示する!!!。 私は番号 'プッシュ' MetaQuotesのIDを持っています。 テストはOKです。 何が間違っているのですか? ファイル: xxc_1.jpg 97 kb xxv.jpg 115 kb Mladen Rakic 2015.08.05 18:52 #5135 popej30: スマートフォンでアラートを表示させるには? コード:.... .... しかし、アラートは、各今ローソクを表示する!!!。 私は番号 'プッシュ' MetaQuotes IDを持っています。 テストはOKです。 どうしたんですか? あなたは、通知が送信されるべきかを決定する任意の基準を持っていない(のような何か "if (condition==true) SentNotification("alert");).いつ実行されるべきか、"if "基準を追加してください。 そして、それはdeinitの中ではなく、startプロシージャの中にあるべきです(deinitは、インジケータが何らかの理由で停止したときのみ実行されるため)。 ms03-039 2015.08.05 19:00 #5136 それはオープンキャンドルにあるアラート - エラー 唯一の変更カラーキャンドルであることが警告されます。 #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_width1 4 #property indicator_color2 Red #property indicator_width2 4 #property indicator_minimum 0 #property indicator_maximum 1 //---- input parameters extern string TimeFrame = "Current time frame"; extern int Price = 12; extern int Length = 4; extern int Displace = 0; extern int Filter = 1; extern double Deviation = 0; extern string _ = "alerts settings"; extern bool alertsOn = true; extern bool alertsOnCurrent = true; extern bool alertsMessage = true; extern bool alertsSound = false; extern bool alertsEmail = false; double Cycle = 4; //---- indicator buffers double MABuffer[]; double UpBuffer[]; double DnBuffer[]; double price[]; double trend[]; string indicatorFileName; bool returnBars; bool calculateValue; int timeFrame; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SendNotification("smartfon alert"); int ft=0; string short_name; //---- indicator line IndicatorBuffers(5); SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,MABuffer); SetIndexBuffer(3,price); SetIndexBuffer(4,trend); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); //---- name for DataWindow and indicator subwindow label SetIndexLabel(0,"NLMA"); SetIndexLabel(1,"Up"); SetIndexLabel(2,"Dn"); //---- SetIndexShift(0,Displace); SetIndexShift(1,Displace); SetIndexShift(2,Displace); SetIndexDrawBegin(0,Length*Cycle+Length); SetIndexDrawBegin(1,Length*Cycle+Length); SetIndexDrawBegin(2,Length*Cycle+Length); //---- indicatorFileName = WindowExpertName(); returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0); calculateValue = (TimeFrame=="calculateValue"); if (calculateValue) return(0); timeFrame = stringToTimeFrame(TimeFrame); short_name=timeFrameToString(timeFrame)+" XXX ("+Length+")"; IndicatorShortName(short_name); return(0); } //+------------------------------------------------------------------+ //| NonLagMA_v4 | //+------------------------------------------------------------------+ int start() { int i,shift, counted_bars=IndicatorCounted(),limit; double alfa, beta, t, Sum, Weight, g; double pi = 3.1415926535; double Coeff = 3*pi; int Phase = Length-1; double Len = Length*Cycle + Phase; if ( counted_bars > 0 ) limit=Bars-counted_bars; if ( counted_bars < 0 ) return(0); if ( counted_bars ==0 ) limit=Bars-Len-1; if ( returnBars) { UpBuffer[0] = limit+1; return(0); } if (calculateValue || timeFrame==Period()) { if ( counted_bars < 1 ) for(i=1;i<Length*Cycle+Length;i++) { MABuffer=0; UpBuffer=0; DnBuffer=0; } for(shift=limit;shift>=0;shift--) { Weight=0; Sum=0; t=0; for (i=0;i<=Len-1;i++) { g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1; beta = MathCos(pi*t); alfa = g * beta; //if (shift>=1) price = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); //else price = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i); Sum += alfa*price; Weight += alfa; if ( t < 1 ) t += 1.0/(Phase-1); else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1); } if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight; if (Filter>0) { if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1]; } trend[shift]=trend[shift+1]; if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1; if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1; if (trend[shift]>0) { UpBuffer[shift] = 1; DnBuffer[shift] = EMPTY_VALUE; } if (trend[shift]<0) { DnBuffer[shift] = 1; UpBuffer[shift] = EMPTY_VALUE; } } manageAlerts(); return(0); } // // // // // for(i = limit; i >=0; i--) { int y = iBarShift(NULL,timeFrame,Time); UpBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,0,y); DnBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,1,y); trend = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,4,y); } manageAlerts(); return(0); } //+------------------------------------------------------------------- //| //+------------------------------------------------------------------- // // // // // string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"}; int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200}; int stringToTimeFrame(string tfs) { tfs = stringUpperCase(tfs); for (int i=ArraySize(iTfTable)-1; i>=0; i--) if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period())); return(Period()); } string timeFrameToString(int tf) { for (int i=ArraySize(iTfTable)-1; i>=0; i--) if (tf==iTfTable) return(sTfTable); return(""); } // // // // // string stringUpperCase(string str) { string s = str; for (int length=StringLen(str)-1; length>=0; length--) { int tchar = StringGetChar(s, length); if((tchar > 96 && tchar 223 && tchar < 256)) s = StringSetChar(s, length, tchar - 32); else if(tchar > -33 && tchar < 0) s = StringSetChar(s, length, tchar + 224); } return(s); } // // // // // void manageAlerts() { if (!calculateValue && alertsOn) { if (alertsOnCurrent) int whichBar = 0; else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar)); if (trend[whichBar] != trend[whichBar+1]) { if (trend[whichBar] == 1) doAlert(whichBar,"buy"); if (trend[whichBar] == -1) doAlert(whichBar,"sell"); } } } // // // // // void doAlert(int forBar, string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; if (previousAlert != doWhat || previousTime != Time[forBar]) { previousAlert = doWhat; previousTime = Time[forBar]; // // // // // message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" NonLagMa slope ",doWhat); if (alertsMessage) Alert(message); if (alertsEmail) SendMail(StringConcatenate(Symbol()," XXX "),message); if (alertsSound) PlaySound("alert2.wav"); } } Coding help マルチタイムフレーム・インディケーター [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 Mladen Rakic 2015.08.05 19:26 #5137 popej30: それはオープンキャンドルにあるアラート - エラー唯一の変更色ろうそくであることを警告する。#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_width1 4 #property indicator_color2 Red #property indicator_width2 4 #property indicator_minimum 0 #property indicator_maximum 1 //---- input parameters extern string TimeFrame = "Current time frame"; extern int Price = 12; extern int Length = 4; extern int Displace = 0; extern int Filter = 1; extern double Deviation = 0; extern string _ = "alerts settings"; extern bool alertsOn = true; extern bool alertsOnCurrent = true; extern bool alertsMessage = true; extern bool alertsSound = false; extern bool alertsEmail = false; double Cycle = 4; //---- indicator buffers double MABuffer[]; double UpBuffer[]; double DnBuffer[]; double price[]; double trend[]; string indicatorFileName; bool returnBars; bool calculateValue; int timeFrame; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SendNotification("smartfon alert"); int ft=0; string short_name; //---- indicator line IndicatorBuffers(5); SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,MABuffer); SetIndexBuffer(3,price); SetIndexBuffer(4,trend); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); //---- name for DataWindow and indicator subwindow label SetIndexLabel(0,"NLMA"); SetIndexLabel(1,"Up"); SetIndexLabel(2,"Dn"); //---- SetIndexShift(0,Displace); SetIndexShift(1,Displace); SetIndexShift(2,Displace); SetIndexDrawBegin(0,Length*Cycle+Length); SetIndexDrawBegin(1,Length*Cycle+Length); SetIndexDrawBegin(2,Length*Cycle+Length); //---- indicatorFileName = WindowExpertName(); returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0); calculateValue = (TimeFrame=="calculateValue"); if (calculateValue) return(0); timeFrame = stringToTimeFrame(TimeFrame); short_name=timeFrameToString(timeFrame)+" XXX ("+Length+")"; IndicatorShortName(short_name); return(0); } //+------------------------------------------------------------------+ //| NonLagMA_v4 | //+------------------------------------------------------------------+ int start() { int i,shift, counted_bars=IndicatorCounted(),limit; double alfa, beta, t, Sum, Weight, g; double pi = 3.1415926535; double Coeff = 3*pi; int Phase = Length-1; double Len = Length*Cycle + Phase; if ( counted_bars > 0 ) limit=Bars-counted_bars; if ( counted_bars < 0 ) return(0); if ( counted_bars ==0 ) limit=Bars-Len-1; if ( returnBars) { UpBuffer[0] = limit+1; return(0); } if (calculateValue || timeFrame==Period()) { if ( counted_bars < 1 ) for(i=1;i<Length*Cycle+Length;i++) { MABuffer=0; UpBuffer=0; DnBuffer=0; } for(shift=limit;shift>=0;shift--) { Weight=0; Sum=0; t=0; for (i=0;i<=Len-1;i++) { g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1; beta = MathCos(pi*t); alfa = g * beta; //if (shift>=1) price = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); //else price = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i); Sum += alfa*price; Weight += alfa; if ( t < 1 ) t += 1.0/(Phase-1); else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1); } if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight; if (Filter>0) { if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1]; } trend[shift]=trend[shift+1]; if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1; if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1; if (trend[shift]>0) { UpBuffer[shift] = 1; DnBuffer[shift] = EMPTY_VALUE; } if (trend[shift]<0) { DnBuffer[shift] = 1; UpBuffer[shift] = EMPTY_VALUE; } } manageAlerts(); return(0); } // // // // // for(i = limit; i >=0; i--) { int y = iBarShift(NULL,timeFrame,Time); UpBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,0,y); DnBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,1,y); trend = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,4,y); } manageAlerts(); return(0); } //+------------------------------------------------------------------- //| //+------------------------------------------------------------------- // // // // // string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"}; int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200}; int stringToTimeFrame(string tfs) { tfs = stringUpperCase(tfs); for (int i=ArraySize(iTfTable)-1; i>=0; i--) if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period())); return(Period()); } string timeFrameToString(int tf) { for (int i=ArraySize(iTfTable)-1; i>=0; i--) if (tf==iTfTable) return(sTfTable); return(""); } // // // // // string stringUpperCase(string str) { string s = str; for (int length=StringLen(str)-1; length>=0; length--) { int tchar = StringGetChar(s, length); if((tchar > 96 && tchar 223 && tchar < 256)) s = StringSetChar(s, length, tchar - 32); else if(tchar > -33 && tchar < 0) s = StringSetChar(s, length, tchar + 224); } return(s); } // // // // // void manageAlerts() { if (!calculateValue && alertsOn) { if (alertsOnCurrent) int whichBar = 0; else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar)); if (trend[whichBar] != trend[whichBar+1]) { if (trend[whichBar] == 1) doAlert(whichBar,"buy"); if (trend[whichBar] == -1) doAlert(whichBar,"sell"); } } } // // // // // void doAlert(int forBar, string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; if (previousAlert != doWhat || previousTime != Time[forBar]) { previousAlert = doWhat; previousTime = Time[forBar]; // // // // // message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" NonLagMa slope ",doWhat); if (alertsMessage) Alert(message); if (alertsEmail) SendMail(StringConcatenate(Symbol()," XXX "),message); if (alertsSound) PlaySound("alert2.wav"); } } なぜあなたは、単にすでに正しくコード化された非ラグMASのいずれかを使用しないのですか?あなたのt変数の値は、適切な値が割り当てられていない - それだけで適切に計算されているから、すべてを防ぐことができるので、残りのdUはチェック しなかった Mladen Rakic 2015.08.06 12:29 #5138 triip: 素晴らしい!mladen ありがとうございます。 ハッピートレード ms03-039 2015.08.06 18:49 #5139 mladen: なぜあなたは、単にすでに正しくコード化された非ラグマサのいずれかを使用しないのですか?あなたのt変数の値は、適切な値が割り当てられていない - それだけで適切に計算されていることから、すべてを防ぐことができるので、残りのdUはチェックしなかった あなたは私の "プッシュsmartfon "を助ける。 Mladen Rakic 2015.08.06 20:02 #5140 popej30: 私の "push smartfon "を助けてくれているのですね。 残りの部分(MetQuotesIDとその他)がすべて問題なく設定されていれば、必要なのはSendNotificaton()で、それはうまくいくはずです。 1...507508509510511512513514515516517518519520521...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
トリプ
こちらをご覧ください :https://www.mql5.com/en/forum/general
fast maの期間を1に設定すると、価格が移動平均(slo ma)を横切った場合と同じになります。素晴らしいありがとうございます。![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
インジケーターがエラーになります。修正方法は?
インジケータがエラーになっています。どのように修正すればよいですか?
その画像からは、どこにエラーがあるのかわかりません。
スマートフォンにアラートを 表示させるには?
コード:....
.... しかし、アラートは、各今ローソクを表示する!!!。
私は番号 'プッシュ' MetaQuotesのIDを持っています。
テストはOKです。
何が間違っているのですか?
スマートフォンでアラートを表示させるには?
コード:....
.... しかし、アラートは、各今ローソクを表示する!!!。
私は番号 'プッシュ' MetaQuotes IDを持っています。
テストはOKです。
どうしたんですか?あなたは、通知が送信されるべきかを決定する任意の基準を持っていない(のような何か "if (condition==true) SentNotification("alert");).いつ実行されるべきか、"if "基準を追加してください。
そして、それはdeinitの中ではなく、startプロシージャの中にあるべきです(deinitは、インジケータが何らかの理由で停止したときのみ実行されるため)。
それはオープンキャンドルにあるアラート - エラー
唯一の変更カラーキャンドルであることが警告されます。
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_width1 4
#property indicator_color2 Red
#property indicator_width2 4
#property indicator_minimum 0
#property indicator_maximum 1
//---- input parameters
extern string TimeFrame = "Current time frame";
extern int Price = 12;
extern int Length = 4;
extern int Displace = 0;
extern int Filter = 1;
extern double Deviation = 0;
extern string _ = "alerts settings";
extern bool alertsOn = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double Cycle = 4;
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SendNotification("smartfon alert");
int ft=0;
string short_name;
//---- indicator line
IndicatorBuffers(5);
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(2,MABuffer);
SetIndexBuffer(3,price);
SetIndexBuffer(4,trend);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
SetIndexLabel(0,"NLMA");
SetIndexLabel(1,"Up");
SetIndexLabel(2,"Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);
SetIndexDrawBegin(0,Length*Cycle+Length);
SetIndexDrawBegin(1,Length*Cycle+Length);
SetIndexDrawBegin(2,Length*Cycle+Length);
//----
indicatorFileName = WindowExpertName();
returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0);
calculateValue = (TimeFrame=="calculateValue"); if (calculateValue) return(0);
timeFrame = stringToTimeFrame(TimeFrame);
short_name=timeFrameToString(timeFrame)+" XXX ("+Length+")";
IndicatorShortName(short_name);
return(0);
}
//+------------------------------------------------------------------+
//| NonLagMA_v4 |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
double alfa, beta, t, Sum, Weight, g;
double pi = 3.1415926535;
double Coeff = 3*pi;
int Phase = Length-1;
double Len = Length*Cycle + Phase;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if ( returnBars) { UpBuffer[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if ( counted_bars < 1 )
for(i=1;i<Length*Cycle+Length;i++)
{
MABuffer=0;
UpBuffer=0;
DnBuffer=0;
}
for(shift=limit;shift>=0;shift--)
{
Weight=0; Sum=0; t=0;
for (i=0;i<=Len-1;i++)
{
g = 1.0/(Coeff*t+1);
if (t <= 0.5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta;
//if (shift>=1) price = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//else
price = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
Sum += alfa*price;
Weight += alfa;
if ( t < 1 ) t += 1.0/(Phase-1);
else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1);
}
if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight;
if (Filter>0)
{
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1];
}
trend[shift]=trend[shift+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;
if (trend[shift]>0)
{
UpBuffer[shift] = 1;
DnBuffer[shift] = EMPTY_VALUE;
}
if (trend[shift]<0)
{
DnBuffer[shift] = 1;
UpBuffer[shift] = EMPTY_VALUE;
}
}
manageAlerts();
return(0);
}
//
//
//
//
//
for(i = limit; i >=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
UpBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,0,y);
DnBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,1,y);
trend = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,4,y);
}
manageAlerts();
return(0);
}
//+-------------------------------------------------------------------
//|
//+-------------------------------------------------------------------
//
//
//
//
//
string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
int stringToTimeFrame(string tfs)
{
tfs = stringUpperCase(tfs);
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));
return(Period());
}
string timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tf==iTfTable) return(sTfTable);
return("");
}
//
//
//
//
//
string stringUpperCase(string str)
{
string s = str;
for (int length=StringLen(str)-1; length>=0; length--)
{
int tchar = StringGetChar(s, length);
if((tchar > 96 && tchar 223 && tchar < 256))
s = StringSetChar(s, length, tchar - 32);
else if(tchar > -33 && tchar < 0)
s = StringSetChar(s, length, tchar + 224);
}
return(s);
}
//
//
//
//
//
void manageAlerts()
{
if (!calculateValue && alertsOn)
{
if (alertsOnCurrent)
int whichBar = 0;
else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar));
if (trend[whichBar] != trend[whichBar+1])
{
if (trend[whichBar] == 1) doAlert(whichBar,"buy");
if (trend[whichBar] == -1) doAlert(whichBar,"sell");
}
}
}
//
//
//
//
//
void doAlert(int forBar, string doWhat)
{
static string previousAlert="nothing";
static datetime previousTime;
string message;
if (previousAlert != doWhat || previousTime != Time[forBar]) {
previousAlert = doWhat;
previousTime = Time[forBar];
//
//
//
//
//
message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" NonLagMa slope ",doWhat);
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(StringConcatenate(Symbol()," XXX "),message);
if (alertsSound) PlaySound("alert2.wav");
}
}それはオープンキャンドルにあるアラート - エラー
唯一の変更色ろうそくであることを警告する。
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_width1 4
#property indicator_color2 Red
#property indicator_width2 4
#property indicator_minimum 0
#property indicator_maximum 1
//---- input parameters
extern string TimeFrame = "Current time frame";
extern int Price = 12;
extern int Length = 4;
extern int Displace = 0;
extern int Filter = 1;
extern double Deviation = 0;
extern string _ = "alerts settings";
extern bool alertsOn = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
double Cycle = 4;
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
string indicatorFileName;
bool returnBars;
bool calculateValue;
int timeFrame;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SendNotification("smartfon alert");
int ft=0;
string short_name;
//---- indicator line
IndicatorBuffers(5);
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(2,MABuffer);
SetIndexBuffer(3,price);
SetIndexBuffer(4,trend);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
SetIndexLabel(0,"NLMA");
SetIndexLabel(1,"Up");
SetIndexLabel(2,"Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);
SetIndexDrawBegin(0,Length*Cycle+Length);
SetIndexDrawBegin(1,Length*Cycle+Length);
SetIndexDrawBegin(2,Length*Cycle+Length);
//----
indicatorFileName = WindowExpertName();
returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0);
calculateValue = (TimeFrame=="calculateValue"); if (calculateValue) return(0);
timeFrame = stringToTimeFrame(TimeFrame);
short_name=timeFrameToString(timeFrame)+" XXX ("+Length+")";
IndicatorShortName(short_name);
return(0);
}
//+------------------------------------------------------------------+
//| NonLagMA_v4 |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
double alfa, beta, t, Sum, Weight, g;
double pi = 3.1415926535;
double Coeff = 3*pi;
int Phase = Length-1;
double Len = Length*Cycle + Phase;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if ( returnBars) { UpBuffer[0] = limit+1; return(0); }
if (calculateValue || timeFrame==Period())
{
if ( counted_bars < 1 )
for(i=1;i<Length*Cycle+Length;i++)
{
MABuffer=0;
UpBuffer=0;
DnBuffer=0;
}
for(shift=limit;shift>=0;shift--)
{
Weight=0; Sum=0; t=0;
for (i=0;i<=Len-1;i++)
{
g = 1.0/(Coeff*t+1);
if (t <= 0.5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta;
//if (shift>=1) price = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//else
price = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
Sum += alfa*price;
Weight += alfa;
if ( t < 1 ) t += 1.0/(Phase-1);
else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1);
}
if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight;
if (Filter>0)
{
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1];
}
trend[shift]=trend[shift+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;
if (trend[shift]>0)
{
UpBuffer[shift] = 1;
DnBuffer[shift] = EMPTY_VALUE;
}
if (trend[shift]<0)
{
DnBuffer[shift] = 1;
UpBuffer[shift] = EMPTY_VALUE;
}
}
manageAlerts();
return(0);
}
//
//
//
//
//
for(i = limit; i >=0; i--)
{
int y = iBarShift(NULL,timeFrame,Time);
UpBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,0,y);
DnBuffer = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,1,y);
trend = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",Price,Length,Displace,Filter,Deviation,4,y);
}
manageAlerts();
return(0);
}
//+-------------------------------------------------------------------
//|
//+-------------------------------------------------------------------
//
//
//
//
//
string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
int stringToTimeFrame(string tfs)
{
tfs = stringUpperCase(tfs);
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));
return(Period());
}
string timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tf==iTfTable) return(sTfTable);
return("");
}
//
//
//
//
//
string stringUpperCase(string str)
{
string s = str;
for (int length=StringLen(str)-1; length>=0; length--)
{
int tchar = StringGetChar(s, length);
if((tchar > 96 && tchar 223 && tchar < 256))
s = StringSetChar(s, length, tchar - 32);
else if(tchar > -33 && tchar < 0)
s = StringSetChar(s, length, tchar + 224);
}
return(s);
}
//
//
//
//
//
void manageAlerts()
{
if (!calculateValue && alertsOn)
{
if (alertsOnCurrent)
int whichBar = 0;
else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar));
if (trend[whichBar] != trend[whichBar+1])
{
if (trend[whichBar] == 1) doAlert(whichBar,"buy");
if (trend[whichBar] == -1) doAlert(whichBar,"sell");
}
}
}
//
//
//
//
//
void doAlert(int forBar, string doWhat)
{
static string previousAlert="nothing";
static datetime previousTime;
string message;
if (previousAlert != doWhat || previousTime != Time[forBar]) {
previousAlert = doWhat;
previousTime = Time[forBar];
//
//
//
//
//
message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" NonLagMa slope ",doWhat);
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(StringConcatenate(Symbol()," XXX "),message);
if (alertsSound) PlaySound("alert2.wav");
}
}なぜあなたは、単にすでに正しくコード化された非ラグMASのいずれかを使用しないのですか?あなたのt変数の値は、適切な値が割り当てられていない - それだけで適切に計算されているから、すべてを防ぐことができるので、残りのdUはチェック しなかった
素晴らしい!mladen
ハッピートレード![](https://c.mql5.com/forextsd/smiles/smile.png)
なぜあなたは、単にすでに正しくコード化された非ラグマサのいずれかを使用しないのですか?あなたのt変数の値は、適切な値が割り当てられていない - それだけで適切に計算されていることから、すべてを防ぐことができるので、残りのdUはチェックしなかった
あなたは私の "プッシュsmartfon "を助ける。
私の "push smartfon "を助けてくれているのですね。
残りの部分(MetQuotesIDとその他)がすべて問題なく設定されていれば、必要なのはSendNotificaton()で、それはうまくいくはずです。