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

 

こんにちは、MLADENまたは誰か。

mt4 プラットフォームにはデフォルトのインジケータがいくつかありますが、(いくつかはカスタムインジケータの 部分で繰り返されていますが)、コードは正確には同じではないと思います、これらのデフォルトインジケータのコードを取得または参照する方法、私に知らせてくれてありがとう。

 
kenwa:
こんにちは、mladenまたは誰でも、私はmt4プラットフォームは、いくつかのデフォルトの指標(一部はカスタム指標の部分で繰り返されているが、)、私はコードが正確に同じではないと思います、どのように取得またはそれらのデフォルトの指標のコードを参照してください、私に知らせるためにたくさんありがとうございます。

はできません。

これらはビルトインインジケーターです(ターミナルから直接実行されます)。

 

これらの組み込みの指標は、関数のカスタム指標 セッションのものよりも優れているようだ、本当にそれらのコードを知る方法はありません?

 

ある方から、1つのファイルから複数のタイムフレームを使用する方法(組み込み関数を呼び出すことができない場合)を尋ねられました。

以下は、簡単な例とその説明です。

_____________________________

添付のインジケータは3つのインジケータが1つになったようなもので、コードの中にいつ何が行われるのかのコメントがあります。私はこれが、単一ファイルの正しいマルチタイムフレームインジケータをどのように作ることができるか(とりわけ、ターゲットタイムフレームの何本のバーが変更されたかを仮定せずに、常に正しいバー数を 計算する)を明らかにするために、何人かの人々の助けになることを願っています。

このシンプルな単一ファイルのマルチタイムフレームインジケータは、マルチタイムフレームインジケータのテンプレートとして簡単に使用することができます。

ファイル:
 

こんにちは、mladenです。

iStochasticOnArrayを行うことが可能か、またどのように行うかご存知ですか? それを行うためのテンプレートや公式があれば教えてください。

 
kenwa:
iStochasticOnArrayを実行することは可能ですか、どのように実行しますか?

ケンワ

組み込みの機能というのはないんです。これらの投稿で、それを行うための関数がどのように書かれ、どのように使用されるかを見ることができます :https://www.mql5.com/en/forum/177239/page34

 

mladenさん、こんにちは。

ちょっと深い話ですが

例えば、double iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0) は double の中の double ですか? この方法は mq4 の中の indexbuffer の占有を減らすことができるでしょうか?

というのは、ちょっと不思議な機能 です。

stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i);

という関数があります。

 
mladen:
私はそれが他のwavファイルを受け入れない理由がわからない。

コード内で変更した場合は、それを受け入れる必要があります。

5回繰り返すには、それをループに配置する必要がありますが、それはいくつかの問題を引き起こす可能性があります(サウンドファイルが長すぎる場合)。

以下は、私が使用したコードです(私はループを行う方法を知っているために、コーディングについてほとんど知りません)。

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

#property copyright "https://www.forex-tsd.com"

#property link "https://www.forex-tsd.com"

#property indicator_chart_window (インジケータ・チャート・ウィンドウ)

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

extern int alertsForNotOlderThan = 300;

extern int alertsForMagicNumber = 0;

extern string alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true; extern bool alertsSound = true;

extern bool alertsNotification = false;

extern bool alertsEmail = false;

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

//

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

//

//

//

//

//

int tickets[];

bool alerted[];

文字列 symbols[];

int types[];

int times[];

int init() { return(0); }.

int deinit() { return(0); }.

int start()

{

//

//

// オーダーのデータを収集する

//

//

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS)) continue;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue; if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue;

if (alertsForNotOlderThan<(TimeCurrent()-OrderOpenTime()))継続。

//

//

//

//

//

for (int k=ArraySize(tickets); k>0; k--)

if (OrderTicket()==tickets[k-1])ブレーク。

if (k==0)

{

int size = ArraySize(tickets)+1;

ArrayResize(tickets,size); tickets = OrderTicket();

ArrayResize(alerted,size); alerted = false;

ArrayResize(symbols,size); symbols = OrderSymbol();

ArrayResize(types ,size); types = OrderType();

ArrayResize(times ,size); times = OrderOpenTime()。

}

}

//

//

// 注文にアラートが必要かどうかチェックする。

//

//

for (i=ArraySize(tickets)-1; i>=0; i--)

{

文字列タイプ = "";

if (!アラート)

{

alerted = true;

スイッチ (タイプ)

{

case OP_BUY : type = "買い"; break;

case OP_SELL : type = "売り"; break;

case OP_BUYSTOP : type = "買いストップ"; break;

case OP_BUYLIMIT : type = "買い指値"; break;

case OP_SELLSTOP : type = "売りのストップ"; break;

case OP_SELLLIMIT : type = "売り指値"; break;

}

doAlert(type+" open at :「シンボル)。

}

}

return(0);

}

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

//

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

//

//

//

//

//

void doAlert(string doWhat)

{

文字列メッセージ。

message = doWhat;

if (alertsMessage) アラート(メッセージ);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message).もし (alertsNotification) SendNotification("注文の警告")を送信します。

if (alertsNotification)SendNotification("注文のアラート "+メッセージ);

if (alertsSound) PlaySound("hallelujah.wav")。

}

というようにしましたが、トリガーされたときに通常のアラートが鳴るだけです。

もし、PlaySoundを変更できないのであれば、1秒ごとに短い通常のアラートを10回再生するループでコーディングすることは可能でしょうか?- 少なくとも、それはちょうど1つの通常のアラート音よりも私を目覚めさせるために多くのことを行うだろう... ...。

ありがとうございます。

 
person77:
以下は、私が使用したコードです(私はループを行う方法を知るために、コーディングについてほとんど知りません)。

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

#property copyright "https://www.forex-tsd.com"

#property リンク "https://www.forex-tsd.com"

#property indicator_chart_window(インジケーターチャートウィンドウ

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

extern int alertsForNotOlderThan = 300;

extern int alertsForMagicNumber = 0;

extern string alertsForSymbol = "";

extern bool alertsOn = true;

extern bool alertsSound = true;

extern bool alertsMessage = true; extern bool alertsSound = true;

extern bool alertsNotification = false;

extern bool alertsEmail = false;

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

//

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

//

//

//

//

//

int tickets[];

bool alerted[];

文字列 symbols[];

int types[];

int times[];

int init() { return(0); }.

int deinit() { return(0); }.

int start()

{

//

//

// オーダーのデータを収集する

//

//

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS)) continue;

if (alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) continue;

if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue; if (alertsForMagicNumber != 0 && alertsForMagicNumber!=OrderMagicNumber()) continue;

if (alertsForNotOlderThan<(TimeCurrent()-OrderOpenTime()))継続。

//

//

//

//

//

for (int k=ArraySize(tickets); k>0; k--)

if (OrderTicket()==tickets[k-1])ブレーク。

if (k==0)

{

int size = ArraySize(tickets)+1;

ArrayResize(tickets,size); tickets = OrderTicket();

ArrayResize(alerted,size); alerted = false;

ArrayResize(symbols,size); symbols = OrderSymbol();

ArrayResize(types ,size); types = OrderType();

ArrayResize(times ,size); times = OrderOpenTime()。

}

}

//

//

// 注文にアラートが必要かどうかチェックする。

//

//

for (i=ArraySize(tickets)-1; i>=0; i--)

{

文字列タイプ = "";

if (!アラート)

{

alerted = true;

スイッチ (タイプ)

{

case OP_BUY : type = "買い"; break;

case OP_SELL : type = "売り"; break;

case OP_BUYSTOP : type = "買いストップ"; break;

case OP_BUYLIMIT : type = "買い指値"; break;

case OP_SELLSTOP : type = "売りのストップ"; break;

case OP_SELLLIMIT : type = "売り指値"; break;

}

doAlert(type+" open at :「シンボル)。

}

}

return(0);

}

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

//

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

//

//

//

//

//

void doAlert(string doWhat)

{

文字列メッセージ。

message = doWhat;

if (alertsMessage) アラート(メッセージ);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message).もし (alertsNotification) SendNotification("注文の警告")を送信します。

if (alertsNotification) SendNotification("注文のアラート "+メッセージ);

if (alertsSound) PlaySound("hallelujah.wav")。

}

というようにしましたが、トリガーされたときに通常のアラートが鳴るだけです。

もし、PlaySoundを変更できないのであれば、1秒ごとに短い通常のアラートを10回再生するループでコーディングすることは可能でしょうか?- 少なくとも、1回の通常のアラート音よりも、私を目覚めさせるために多くのことを行うだろう... ...。

ありがとうございました。

人77

そのために使用されるものは、開いているチャートに 移動し、ツール/オプション/イベントに移動し、アラートで単にあなたが望むものにwav.を変更しますが、しばらくこれをやっていないので、これがまだ動作するかどうかわからない、あなたが使用しているwavファイルがサウンドフォルダにあることを確認してください。

ファイル:
alert.png  99 kb
 

mrtools - ありがとうございます。