コーディングの方法は? - ページ 317

 

こんにちは。

このインジケータ/ツールをどのようにコード化できるか考えています。

日数で範囲を決めて(例:2012/10/12~2012/10/15、2012/10/15~2012/10/15)、TFに応じてチャートに表示されるローソクの始値、終値をcsvまたはexcelファイルに書き込むような、インジケータ、スクリプトまたはその種のものが必要です(例:1日だけ決めて1時間TFで添付するとその仕様で24本のローソクを書き込みます)。

よろしくお願いします。

 

アラートシグナルの問題

このコードは、ストイキャスティクス、RSI、CCIの3つの指標を監視するものです。ストイキャスティクスがシグナルラインを上下にクロスし、期間70と6のRSIが互いに上下にクロスし、CCIがゼロより上か下なら、3指標全体がシグナルラインを上回った場合は買いシグナルが、3指標がシグナルラインを下回った場合は売りシグナルが出るはずなのです。......このコードは動作しますが、アラートがあるときはいつでも、それはろうそくの各ティックで自分自身を繰り返し続ける。このアラートは、現在のキャンドルで3つの条件が満たされた場合に一度だけ鳴り、再アラート音ではないようにするにはどうすればよいですか。

if(Period()==240){。

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0)。

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0); double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1); double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0); double b4trCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1); double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0); double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// 警告

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)){ (ist_signal)と同じです。

Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol())).Alert("Buy Arrow","\n", "Current time is ",TimeToStr(CurTime()));

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)){ (ist_signal)と同じです。

Alert("Sell Arrow","\n", "Current time is ",TimeToStr(CurTime()),"\n",Symbol())).Alert("Sell Arrow","\n", "Current time is ",TimeToStr(CurTime()));

}

}

 
mladen:
プー

例えば、GBPJPYは現在約126で、EURUSDはその約100倍です。これらの値を同じチャートに描くと、EURUSDの値は単に「絵から外れてしまう」のです。メタトレーダーはGBPJPYの値をチャートスケーリングの基準としているので。

このスレッドを見てみてください :https://www.mql5.com/en/forum/178052.そのスレッドでは、同様の問題に対するいくつかのソリューションが既にあります

Mladenさん、ありがとうございます。あなたのリンクをたどって、私の必要性に合ったインジケータを見つけました。

pooh

 

次のように試してみてください。

if(Period()==240)

{

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// alerts

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI >0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI <0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Sell Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

}
Mastercash:
このコードは、ストイキャスティクス、RSI、CCIの3つの指標を監視するものです。ストイキャスティクスがシグナルラインを上下に交差し、期間70と6のRSIが上下に交差し、CCIがゼロより上か下なら、3指標全体がシグナルラインを上回った場合は買いシグナル、下回った場合は売りシグナルになるはずなのですが...。......このコードは動作しますが、アラートがあるたびに、それはキャンドルの各ティックで自分自身を繰り返し続ける。このアラートは、3つの条件が現在のキャンドルに満たされている場合は一度だけ音としないようにするにはどうすればいいですか。

if(周期()==240){。

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0).のようになります。

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0)。

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0); double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1); double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0); double b4trCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1); double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0); double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// 警告

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)){ (ist_signalの場合)

Alert("Buy Arrow","\n", "Current time is ",TimeToStr(CurTime()),"\n",Symbol())).Alert("Buy Arrow","\n", "Current time is ",TimeToStr(CurTime()));

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&(nowtrCCI<0&nowtrCCI<b4trCCI)){ (ist_signal)と同じです。

Alert("Sell Arrow","\n", "Current time is ",TimeToStr(CurTime()),"\n",Symbol())).Alert("Sell Arrow","\n", "Current time is ",TimeToStr(CurTime()));

}

}
 

アラートの問題

ありがとうございました。私はそれを試してみます。私は関数 LastAlert()のメモを取ることはありませんし、このすべての "トランシェラウス "mt4関数のディレクトリを取得する場所を私に知らせてください。

 

マスターキャッシュ

注意:これは関数ではなく、最後のアラートの時間(バータイム)を保存するために使用される静的変数で、同じバーで複数のアラートを防ぐためのものです。残念ながらメタトレーダーにはLastAlert()のような関数がないので、この例のような回避策を見つけなければならないのです。

Mastercash:
私は関数LastAlert()のメモを取ることはありませんし、このすべての "トランシェラウス "MT4関数のディレクトリを取得する場所を私に知らせることがありますありがとうございますmladen、私はそれを試してみます。
 

mladenさん、こんにちは。

私は24の最後の時間の日のローソクに対してそれぞれ24の変数を割り当てる必要があります。

私はキャンドルでいくつかの計算を行う必要があり、結果はバッファに割り当てられます。

どのように私は前日の24時間のろうそくのそれぞれで動作するようにコードを書くことができますか?

ありがとうございます

 

ダシオ

のようなものが使えます(このモードでは配列は使いません)。また、この例は現在の日についてです

datetime startTime = iTime(NULL,PERIOD_D1,0);

for (int i=iBarShift(NULL,PERIOD_H1,startTime); TimeDayOfYear(iTime(NULL,PERIOD_H1,i))==TimeDayOfYear(startTime); i--)

{

//

//

// processing the hourly data ... just an example here

//

//

double close = iClose(NULL,PERIOD_H1,i); //

double open = iOpen(NULL,PERIOD_H1,i); // and so on ...

}

dasio:
こんにちはmladen。

私は24の最後の時間の日のローソクのための24の変数をそれぞれ割り当てる必要があります。

私はローソク足でいくつかの計算を行う必要があり、その結果はバッファに割り当てられます。

どのように私は前日の24時間のろうそくのそれぞれで動作するようにコードを書くことができますか?

ありがとうございます。
 
mladen:
ダシオ

このようなものが使えます(このモードでは配列は使いません)。また、この例は現在の日についてです

datetime startTime = iTime(NULL,PERIOD_D1,0);

for (int i=iBarShift(NULL,PERIOD_H1,startTime); TimeDayOfYear(iTime(NULL,PERIOD_H1,i))==TimeDayOfYear(startTime); i--)

{

//

//

// processing the hourly data ... just an example here

//

//

double close = iClose(NULL,PERIOD_H1,i); //

double open = iOpen(NULL,PERIOD_H1,i); // and so on ...

}

mladenさん、ありがとうございます。

この例では

double close =iClose(NULL,PERIOD_H1,i); //.

double open = iOpen(NULL,PERIOD_H1,i); // どのローソク足がどのように表示されるか?

どのキャンドルが表示され、どのように私は次のキャンドルに切り替えることができますi +1?

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

 

ダシオ

すでに現在の日の全時間帯をループしています。iClose() とiOpen()は、1時間以外のタイムフレームからの呼び出しの例として配置しました。もし、現在とは異なる日にアクセスしたい場合は、datetime startTime=iTime(NULL,PERIOD_D1,0); の部分の "0" を、データを収集したい任意の日に置き換えてください。

dasio:
mladenさんありがとうございます。

この例では

double close = iClose(NULL,PERIOD_H1,i); // この例では、次のようになります。

ダブルオープン = iOpen(NULL,PERIOD_H1,i); // (注:iOpen(NULL,PERIOD_H1,i)の場合。

どのキャンドルが表示され、どのように私は次のキャンドルに切り替えることができますi + 1?

ありがとうございます。