コーディングのヘルプ - ページ 253

 

インジケータ改造のヘルプ

こんにちは、皆さん

このMAクロスインジケーターは、1ティック ごとにアラートを発生させます。どなたか、この問題を解決してくださる方、または少なくともその方法を教えてくださる方、いらっしゃいませんか?

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

double g_ibuf_76[];

double g_ibuf_80[];

int g_period_84 = 5;

int g_period_88 = 34;

extern bool Alerts = TRUE;

extern bool PopAlerts = TRUE;

extern bool PushAlerts = TRUE;

extern bool EmailAlerts = TRUE;

extern bool SoundAlerts = TRUE;

extern string SoundFileUp = "UP.wav";

extern string SoundFileDn = "DN.wav";

int gi_96 = 0;

int gi_100 = 0;

int init() {

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, g_ibuf_76);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, g_ibuf_80);

return (0);

}

int deinit() {

return (0);

}

int start() {

int li_20;

double l_ima_24;

double l_ima_32;

double l_ima_40;

double l_ima_48;

double l_ima_56;

double l_ima_64;

double ld_72;

double ld_80;

int li_88 = IndicatorCounted();

if (li_88 < 0) return (-1);

if (li_88 > 0) li_88--;

int li_12 = Bars - li_88;

for (int li_16 = 0; li_16 <= li_12; li_16++) {

li_20 = li_16;

ld_72 = 0;

ld_80 = 0;

for (li_20 = li_16; li_20 <= li_16 + 9; li_20++) ld_80 += MathAbs(High[li_20] - Low[li_20]);

ld_72 = ld_80 / 10.0;

l_ima_24 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16);

l_ima_40 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);

l_ima_56 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);

l_ima_32 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16);

l_ima_48 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);

l_ima_64 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);

if (l_ima_24 > l_ima_32 && l_ima_40 l_ima_64) {

g_ibuf_76[li_16] = Low[li_16] - ld_72 / 2.0;

if (li_16 <= 2 && Alerts && !gi_100) {

if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-BUY ");

if (PushAlerts) SendNotification(Symbol() + " PRE-BUY ");

if (SoundAlerts) PlaySound(SoundFileUp);

if (EmailAlerts) SendMail(Symbol() , " PRE-BUY ");

gi_96 = TRUE;

gi_100 = FALSE;

}

} else {

if (l_ima_24 l_ima_48 && l_ima_56 < l_ima_64) {

g_ibuf_80[li_16] = High[li_16] + ld_72 / 2.0;

if (li_16 <= 2 && Alerts && !gi_100) {

if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-SELL ");

if (PushAlerts) SendNotification(Symbol() + " PRE-SELL ");

if (SoundAlerts) PlaySound(SoundFileUp);

if (EmailAlerts) SendMail(Symbol() , " PRE-SELL ");

gi_100 = TRUE;

gi_96 = FALSE;

}

}

}

}

return (0);

}

よろしくお願いします。

Amin

 
aminhakim:
こんにちは、皆さん。

このMAクロスインジケーターは、1ティックごとにアラートを出しています。どなたか、この問題を解決してくださる方、あるいは少なくともその方法を教えてくださる方はいらっしゃいませんか?

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

double g_ibuf_76[];

double g_ibuf_80[];

int g_period_84 = 5;

int g_period_88 = 34;

extern bool Alerts = TRUE;

extern bool PopAlerts = TRUE;

extern bool PushAlerts = TRUE;

extern bool EmailAlerts = TRUE;

extern bool SoundAlerts = TRUE;

extern string SoundFileUp = "UP.wav";

extern string SoundFileDn = "DN.wav";

int gi_96 = 0;

int gi_100 = 0;

int init() {

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, g_ibuf_76);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, g_ibuf_80);

return (0);

}

int deinit() {

return (0);

}

int start() {

int li_20;

double l_ima_24;

double l_ima_32;

double l_ima_40;

double l_ima_48;

double l_ima_56;

double l_ima_64;

double ld_72;

double ld_80;

int li_88 = IndicatorCounted();

if (li_88 < 0) return (-1);

if (li_88 > 0) li_88--;

int li_12 = Bars - li_88;

for (int li_16 = 0; li_16 <= li_12; li_16++) {

li_20 = li_16;

ld_72 = 0;

ld_80 = 0;

for (li_20 = li_16; li_20 <= li_16 + 9; li_20++) ld_80 += MathAbs(High[li_20] - Low[li_20]);

ld_72 = ld_80 / 10.0;

l_ima_24 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16);

l_ima_40 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);

l_ima_56 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);

l_ima_32 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16);

l_ima_48 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);

l_ima_64 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);

if (l_ima_24 > l_ima_32 && l_ima_40 l_ima_64) {

g_ibuf_76[li_16] = Low[li_16] - ld_72 / 2.0;

if (li_16 <= 2 && Alerts && !gi_100) {

if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-BUY ");

if (PushAlerts) SendNotification(Symbol() + " PRE-BUY ");

if (SoundAlerts) PlaySound(SoundFileUp);

if (EmailAlerts) SendMail(Symbol() , " PRE-BUY ");

gi_96 = TRUE;

gi_100 = FALSE;

}

} else {

if (l_ima_24 l_ima_48 && l_ima_56 < l_ima_64) {

g_ibuf_80[li_16] = High[li_16] + ld_72 / 2.0;

if (li_16 <= 2 && Alerts && !gi_100) {

if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-SELL ");

if (PushAlerts) SendNotification(Symbol() + " PRE-SELL ");

if (SoundAlerts) PlaySound(SoundFileUp);

if (EmailAlerts) SendMail(Symbol() , " PRE-SELL ");

gi_100 = TRUE;

gi_96 = FALSE;

}

}

}

}

return (0);

}

回答

Amin

Amin それは、あなたが気づいた問題を持つリペイントインジケータの逆コンパイル版です。代わりにこの投稿にあるインジケータを使用してください :https://www.mql5.com/en/forum/173574/page447

 

親愛なるコーダーの皆様、こんにちは。

このインジケーターに、色が変わった瞬間のアラートオプションを追加することは可能でしょうか?

一番重要なのは、できるだけ早くアラートを出すことです(それは常にローソクのオープニングで起こります)。

オプション1:メール。 (真/偽)

オプション2:ボックス。 (真/偽)

電子メールまたはボックスの件名に表示するテキスト。[PAIR] TF [TF]をオンにしました。

私はあなたの時間を尊重するので、私はそれをコード化するために最初に自分自身を試してみましたが、運がなかった。

うまくいけば、誰かが私を助けることができる。

事前にありがとうございました

hama.mq4

ファイル:
hama.mq4  4 kb
 

こんにちは、私はステップMA平均式で価格バーを描くインジケータを作成しようとしています。このインジケータはエリートインジケータなので、ここに載せていいか迷いましたが、iCustom関数を使って そのインジケータのMTFバージョンを作成したので、私のコードには元の式の痕跡がありません。

コンパイラは全くエラーを出さないのですが、インジケータがうまく動きません。バッファで何か混乱を起こしてしまったようです。助けていただけませんか?

よろしくお願いします。

以下は私のコードです。

//------------------------------------------------------------------

#property copyright "mladen"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 DarkGreen

#property indicator_width1 1

#property indicator_color2 FireBrick

#property indicator_width2 1

#property indicator_color3 LimeGreen

#property indicator_width3 2

#property indicator_color4 Orange

#property indicator_width4 2

//

//

//

extern int TimeFrame = 0; // Timeframe

extern int MaLength = 10; // Ma Length

extern int MaMethod = 18; // Ma method

extern double Sensitivity = 3; // Sensivity Factor

extern double StepSize = 3; // Constant Step Size

extern int Shift = 0; // OShify

extern bool HighLow = false; // High/Low Mode Switch (more sensitive)

extern color WickBuyColor = DarkGreen;

extern color WickSellColor = FireBrick;

extern color BodyBuyColor = LimeGreen;

extern color BodySellColor = Orange;

extern int WickWidth = 1;

extern int BodyWidth = 2;

extern bool alertsOn = false;

extern bool alertsOnCurrent = false;

extern bool alertsMessage = false;

extern bool alertsNotification = false;

extern bool alertsSound = false;

extern bool alertsEmail = false;

extern string MaMethods = "";

extern string __0 = "SMA";

extern string __1 = "EMA";

extern string __2 = "Double smoothed EMA";

extern string __3 = "Double EMA (DEMA)";

extern string __4 = "Triple EMA (TEMA)";

extern string __5 = "Smoothed MA";

extern string __6 = "Linear weighted MA";

extern string __7 = "Parabolic weighted MA";

extern string __8 = "Alexander MA";

extern string __9 = "Volume weghted MA";

extern string __10 = "Hull MA";

extern string __11 = "Triangular MA";

extern string __12 = "Sine weighted MA";

extern string __13 = "Linear regression";

extern string __14 = "IE/2";

extern string __15 = "NonLag MA";

extern string __16 = "Zero lag EMA";

extern string __17 = "Leader EMA";

extern string __18 = "Super smoother";

extern string __19 = "Smoother";

//

//

//

double MABuffer[];

double UpBuffer[];

double DnBuffer[];

double UpbBuffer[];

double DnbBuffer[];

double slope[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);

SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);

SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);

SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);

SetIndexBuffer(4,MABuffer);

SetIndexBuffer(5,slope);

IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");

MaLength = MathMax(MaLength,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

MABuffer=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,0,y);

slope = slope;

if (MABuffer>MABuffer) slope = 1;

if (MABuffer<MABuffer) slope = -1;

if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }

if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }

}

return(0);

}

//+------------------------------------------------------------------+
 
thefxpros:
こんにちは、プログラマの皆さん。私は、ステップMA平均式で価格バーを描くインジケータを作ろうとしています。このインジケータはエリートインジケータなので、ここに載せていいのか迷いましたが、iCustom関数を使ってそのインジケータのMTFバージョンを作成したので、私のコードにはオリジナルの式の痕跡はありません。

コンパイラは全くエラーを出さないのですが、インジケータがうまく動きません。バッファで何か混乱を起こしてしまったようです。助けていただけますか?

よろしくお願いします。

以下は私のコードです。

//------------------------------------------------------------------

#property copyright "mladen"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 DarkGreen

#property indicator_width1 1

#property indicator_color2 FireBrick

#property indicator_width2 1

#property indicator_color3 LimeGreen

#property indicator_width3 2

#property indicator_color4 Orange

#property indicator_width4 2

//

//

//

extern int TimeFrame = 0; // Timeframe

extern int MaLength = 10; // Ma Length

extern int MaMethod = 18; // Ma method

extern double Sensitivity = 3; // Sensivity Factor

extern double StepSize = 3; // Constant Step Size

extern int Shift = 0; // OShify

extern bool HighLow = false; // High/Low Mode Switch (more sensitive)

extern color WickBuyColor = DarkGreen;

extern color WickSellColor = FireBrick;

extern color BodyBuyColor = LimeGreen;

extern color BodySellColor = Orange;

extern int WickWidth = 1;

extern int BodyWidth = 2;

extern bool alertsOn = false;

extern bool alertsOnCurrent = false;

extern bool alertsMessage = false;

extern bool alertsNotification = false;

extern bool alertsSound = false;

extern bool alertsEmail = false;

extern string MaMethods = "";

extern string __0 = "SMA";

extern string __1 = "EMA";

extern string __2 = "Double smoothed EMA";

extern string __3 = "Double EMA (DEMA)";

extern string __4 = "Triple EMA (TEMA)";

extern string __5 = "Smoothed MA";

extern string __6 = "Linear weighted MA";

extern string __7 = "Parabolic weighted MA";

extern string __8 = "Alexander MA";

extern string __9 = "Volume weghted MA";

extern string __10 = "Hull MA";

extern string __11 = "Triangular MA";

extern string __12 = "Sine weighted MA";

extern string __13 = "Linear regression";

extern string __14 = "IE/2";

extern string __15 = "NonLag MA";

extern string __16 = "Zero lag EMA";

extern string __17 = "Leader EMA";

extern string __18 = "Super smoother";

extern string __19 = "Smoother";

//

//

//

double MABuffer[];

double UpBuffer[];

double DnBuffer[];

double UpbBuffer[];

double DnbBuffer[];

double slope[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);

SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);

SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);

SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);

SetIndexBuffer(4,MABuffer);

SetIndexBuffer(5,slope);

IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");

MaLength = MathMax(MaLength,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

MABuffer=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,0,y);

slope = slope;

if (MABuffer>MABuffer) slope = 1;

if (MABuffer<MABuffer) slope = -1;

if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }

if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }

}

return(0);

}

//+------------------------------------------------------------------+

thefxpros

必要なのはslopeバッファへの呼び出しだけです(残りはすべて無視できます)

もしスロープが1であれば、それは上昇トレンドです。

もし勾配が-1なら、それはダウントレンドです。

 
thefxpros:
こんにちは、私はステップMA平均式で価格バーをペイントするインジケータを作成しようとしています。このインジケータはエリートインジケータなので、ここに載せていいか迷いましたが、iCustom関数を使ってそのインジケータのMTFバージョンを作成したので、私のコードには元の式の痕跡はありません。

コンパイラは全くエラーを出さないのですが、インジケータがうまく動きません。バッファで何か混乱を起こしてしまったようです。助けていただけますか?

よろしくお願いします。

このように.

//------------------------------------------------------------------

#property copyright "mladen"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 DarkGreen

#property indicator_width1 1

#property indicator_color2 FireBrick

#property indicator_width2 1

#property indicator_color3 LimeGreen

#property indicator_width3 2

#property indicator_color4 Orange

#property indicator_width4 2

//

//

//

extern int TimeFrame = 0; // Timeframe

extern int MaLength = 10; // Ma Length

extern int MaMethod = 18; // Ma method

extern double Sensitivity = 3; // Sensivity Factor

extern double StepSize = 3; // Constant Step Size

extern int Shift = 0; // OShify

extern bool HighLow = false; // High/Low Mode Switch (more sensitive)

extern color WickBuyColor = DarkGreen;

extern color WickSellColor = FireBrick;

extern color BodyBuyColor = LimeGreen;

extern color BodySellColor = Orange;

extern int WickWidth = 1;

extern int BodyWidth = 2;

extern bool alertsOn = false;

extern bool alertsOnCurrent = false;

extern bool alertsMessage = false;

extern bool alertsNotification = false;

extern bool alertsSound = false;

extern bool alertsEmail = false;

extern string MaMethods = "";

extern string __0 = "SMA";

extern string __1 = "EMA";

extern string __2 = "Double smoothed EMA";

extern string __3 = "Double EMA (DEMA)";

extern string __4 = "Triple EMA (TEMA)";

extern string __5 = "Smoothed MA";

extern string __6 = "Linear weighted MA";

extern string __7 = "Parabolic weighted MA";

extern string __8 = "Alexander MA";

extern string __9 = "Volume weghted MA";

extern string __10 = "Hull MA";

extern string __11 = "Triangular MA";

extern string __12 = "Sine weighted MA";

extern string __13 = "Linear regression";

extern string __14 = "IE/2";

extern string __15 = "NonLag MA";

extern string __16 = "Zero lag EMA";

extern string __17 = "Leader EMA";

extern string __18 = "Super smoother";

extern string __19 = "Smoother";

//

//

//

double UpBuffer[];

double DnBuffer[];

double UpbBuffer[];

double DnbBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);

SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);

SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);

SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);

IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");

MaLength = MathMax(MaLength,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(MathMax(Bars-counted_bars,3*TimeFrame/Period()),Bars-1);

for(int i=limit;i>=0;i--)

{

int y = iBarShift(NULL,TimeFrame,Time);

int slope=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,5,y);

if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }

if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }

}

return(0);

}

//+------------------------------------------------------------------+

そして、同じパラメータで それらは同じになるつもりです。

ファイル:
 
mladen:
このように:
//------------------------------------------------------------------

#property copyright "mladen"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 DarkGreen

#property indicator_width1 1

#property indicator_color2 FireBrick

#property indicator_width2 1

#property indicator_color3 LimeGreen

#property indicator_width3 2

#property indicator_color4 Orange

#property indicator_width4 2

//

//

//

extern int TimeFrame = 0; // Timeframe

extern int MaLength = 10; // Ma Length

extern int MaMethod = 18; // Ma method

extern double Sensitivity = 3; // Sensivity Factor

extern double StepSize = 3; // Constant Step Size

extern int Shift = 0; // OShify

extern bool HighLow = false; // High/Low Mode Switch (more sensitive)

extern color WickBuyColor = DarkGreen;

extern color WickSellColor = FireBrick;

extern color BodyBuyColor = LimeGreen;

extern color BodySellColor = Orange;

extern int WickWidth = 1;

extern int BodyWidth = 2;

extern bool alertsOn = false;

extern bool alertsOnCurrent = false;

extern bool alertsMessage = false;

extern bool alertsNotification = false;

extern bool alertsSound = false;

extern bool alertsEmail = false;

extern string MaMethods = "";

extern string __0 = "SMA";

extern string __1 = "EMA";

extern string __2 = "Double smoothed EMA";

extern string __3 = "Double EMA (DEMA)";

extern string __4 = "Triple EMA (TEMA)";

extern string __5 = "Smoothed MA";

extern string __6 = "Linear weighted MA";

extern string __7 = "Parabolic weighted MA";

extern string __8 = "Alexander MA";

extern string __9 = "Volume weghted MA";

extern string __10 = "Hull MA";

extern string __11 = "Triangular MA";

extern string __12 = "Sine weighted MA";

extern string __13 = "Linear regression";

extern string __14 = "IE/2";

extern string __15 = "NonLag MA";

extern string __16 = "Zero lag EMA";

extern string __17 = "Leader EMA";

extern string __18 = "Super smoother";

extern string __19 = "Smoother";

//

//

//

double UpBuffer[];

double DnBuffer[];

double UpbBuffer[];

double DnbBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);

SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);

SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);

SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);

IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");

MaLength = MathMax(MaLength,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(MathMax(Bars-counted_bars,3*TimeFrame/Period()),Bars-1);

for(int i=limit;i>=0;i--)

{

int y = iBarShift(NULL,TimeFrame,Time);

int slope=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,5,y);

if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }

if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }

}

return(0);

}

//+------------------------------------------------------------------+

[/PHP]

And then with same parameters they are going to be the same :

OK ありがとうございます。

Mladen、この言語を真剣に学ぶために、どこで材料を手に入れられるか知っていますか?

このタイプのコードについての質問です。

[PHP]if (MABuffer>MABuffer) slope = 1;

それは、もし(MABuffer[現在のバー]>MA Buffer[of current bar + 1, so next bar]) of slope[of current bar] is equal to 1.という意味です。

という意味ですよね?

 
thefxpros:
OK ありがとうございます。

ムラデン、この言語を真剣に学ぶために、どこで材料を手に入れることができるか知っていますか?

このタイプのコードについての質問です。

if (MABuffer>MABuffer) slope = 1;

MABuffer[of current bar]>MA Buffer[of current bar + 1, so next bar] of slope[of current bar] is equal to 1.It means: if (MABuffer[of current bar]>MA Buffer[of current bar + 1, so next bar] of slope[of current bar] is 1;

って感じでしょうか?

そうです。少し言い換えると、if current ma > previous ma then slope = 1 となります。

学習の :私は最高の場所は、このポストで始まることだと思うhttps://www.mql5.com/en/forum/172969/page2(そしてもちろん、尋ねる。 誰も今まで尋ねることなく学んだことがない)。

 

リクエスト

非常にシンプルなEAが欲しいです。

- 1つのEAは、2つのキャンドルが同じ方向に閉じると取引を開始し、同じろうそくの終わりにそれを閉じている場合のみ。

もっと説明する...大丈夫?2本のローソク足が緑でクローズした場合、私は買い取引を開始します、私が開いたこの取引は、同じローソクの終わりに閉じられます、したがって、それはまた、2つの赤いローソクのクローズの後に売り取引を開かれます......だからこれは、唯一の簡単に制限されています。

 

こんにちは。

icustomを使ってMTFでいくつかのインジケータを回すのが楽しいです。このインジケータは動作しますが、色と矢印が正しく表示されません、なぜでしょうか?

どこにエラーがあるのでしょうか?

ワイルダーズ_トレイリングストップ_mtf.mq4

ワイルダーズ_トレイリングストップ.mq4

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern int LineWidth = 1;

extern int ArrowWidth = 1;

extern color UpLineClr = LimeGreen;

extern color DnLineClr = Orange;

extern color UpArrowClr = LimeGreen;

extern color DnArrowClr = Orange;

//

double WTS[];

double WTSDn[];

double arrUp[];

double arrDn[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,WTS); SetIndexStyle(0,DRAW_LINE, EMPTY, LineWidth, DnLineClr);

SetIndexBuffer(1,WTSDn); SetIndexStyle(1,DRAW_LINE, EMPTY, LineWidth, UpLineClr);

SetIndexBuffer(2,arrUp); SetIndexStyle(2,DRAW_ARROW, EMPTY, ArrowWidth, UpArrowClr); SetIndexArrow(2,SYMBOL_ARROWUP);

SetIndexBuffer(3,arrDn); SetIndexStyle(3,DRAW_ARROW, EMPTY, ArrowWidth, DnArrowClr); SetIndexArrow(3,SYMBOL_ARROWDOWN);

IndicatorShortName("Wilders trailing stop MTF ("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

WTS=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,0,y);

WTSDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,1,y);

arrUp=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,2,y);

arrDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,3,y);

}

return(0);

}

//+------------------------------------------------------------------+