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

 
mladen:
ダシオ

このようなことを試してみてください。

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

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

//

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

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

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

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

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

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

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

Mladen 私もやってみましたが、うまくいきません。

私のインジケータの例を添付します。違いは計算だけで、他は同じです。

あなたの式と統合することができますか? それで私もそれを勉強することができます。

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

テスト1.mq4

ファイル:
test1.mq4  3 kb
 

皆さん、こんにちは。シグナルのコードを書くための簡単なヘルプを探しています。

私はシグナルにStep_IndyとEMAクロスを使用しています。私がやりたいことは、両方が10本以内にシグナルを出したときだけ、EAにトレードをさせることです。

例えば、Stepがシグナルを出したら、EAに10本前のMAクロスを確認させ、クロスしたらエントリーさせたいのです。(私はそれがちょうどチェック し、MAクロス現在の信号が長いかどうかを確認することを望んでいないことに注意してください、私はそれが10バー内のように最近のものであることを望む)

私は私が見てきたどのEAでも、過去にこれが行われたのを見たことがないように思います。

 

ダシオ

コードからは、何が意図されているのかがわかりません。とにかく、このコードでは、インジケータの「基本」値として真のレンジを使用するか(これはコードの最初の部分です)、あるいはコードの2番目の部分を「基本」値として使用するかを選択できます。

dasio:
Mladen私は試してみましたが、成功しませんでした。

私のインジケータの例を添付します。唯一の違いは、計算であるが、他は同じです。

私はそれを勉強することができますので、あなたはあなたの式と統合することができますか?

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

テスト1.mq4
ファイル:
_test1.mq4  2 kb
 

シグナルの問題

Mladenさん、ありがとうございます。アラートの繰り返しはなくなりました。

//----Alarts の割り当て-----

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 ist_signal=iStochastic(NULL,240,8,3,0,MODE_SMA,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((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&&(nowtrCCI>0&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0];

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

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_m_h4>di_p_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&&(nowtrCCI<0&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))。

{

lastAlerted=Time[0];

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

}

// アラート停止

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&nowtrCCI>b4trCCI)||(adx_h4>=20)&|(i_dx_h4>=20)&&(ii_dx_h4=20)=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&nowenCCI>b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&&(lastAlerted!=Time[0]))。

{

lastAlerted=Time[0];

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

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_p_h4ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&nowenCCI<b4enCCI)&&&(nowtrCCI<b4enCCI<0&&&&nowtrCCI<b4enCCI<00&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI0&nowtrCCI>b4trCCI)&&&(lastAlerted!=Time[0]))。

{

lastAlerted=Time[0];

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

}

mladen:
こんな感じでやってみてください。
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());

}

}
 
mladen:
dasio コードを見る限りでは、何が意図されているのかわかりません。とにかく、あなたがインジケータの "基本 "値として真の範囲を使用したい場合(それはあなたのコードの最初の部分です)、またはあなたのコードの第2の部分を "基本 "値として使用したい場合に選択できるコードは、次のとおりです。

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

私はこの方法で計算されたものは意味がないことを知っています。しかし、私は毎日やっている分析をコード化しようとしているのです。^^

まだ、1/3程度ですが。

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

 
mladen:
dasio コードを見る限り、何が意図されているのかわかりません。とにかく、インジケータの「基本」値として真のレンジを使用するか(あなたのコードの最初の部分です)、またはあなたのコードの2番目の部分を「基本」値として使用するかを選択できるコードは以下のとおりです。

ありがとうございます、完璧です。

フライデーフィックスを追加することは可能でしょうか?

ありがとうございます。

リーガーズ

 

ボリューム

私は各バーの音量を照会したいのですが、私はそれについて行く方法の手掛かりを持っていない私はML4プログラミングに 新しいですが、学習しようとしている私はこの単純なプログラムを試みたが、それは完全にゴミかもしれません、私に知らせてください、どんな提案も歓迎されるだろう。

//---入力パラメータ

extern double TakeProfit = 4;

外部ダブルStopLossは= 20。

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double volumemore = 600;

extern double volumeless = 150;

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

//| エキスパート初期化関数

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

int start()

{

if (Volume=>volumemore)

{

Print ("volume more");

{

if (ボリューム=<ボリュームレス)

{

Print ("volume less");

if(棒グラフ<20)

{

Print("bars less than 20");

{

//----

//----

(0)を返します。

 

Volumeを 使用します。"index "は出来高を見たいバーの番号です。メタトレーダー4では、"ボリューム "は常にティックボリューム であることに注意してください。

Tim Latham:
私は各バーの音量を照会したいのですが、私はそれについて行く方法の手がかりを持っていない私はML4プログラミングに新しいですが、学習しようとしている私はこの単純なプログラムを試みたが、それは完全にゴミかもしれません、私に知らせてください、任意の提案は高く評価されるでしょう。

//--- 入力パラメータ

extern double TakeProfit = 4;

extern double StopLoss = 20;

extern double Lots = 0.1;

extern double TrailingStop = 30; extern double Lots = 0.1; extern double TrailingStop = 30;

extern double volumemore = 600;

extern double volumeless = 150;

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

//| エキスパート初期化関数

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

int start()

{

if (Volume=>volumemore)

{

Print ("volume more");

{

if (ボリューム=<ボリュームレス)

{

Print ("volume less");

if(棒グラフ<20)

{

Print("bars less than 20");

{

//----

//----

return (0);

}
 
jayjonbeach:
皆さん、こんにちは。 信号のコードを書くために簡単なヘルプを探しています。

私はStep_IndyとEMAクロスをシグナルに使っています。 私がしたいことは、EAが、互いに10バー以内に両方のシグナルを出したときだけ、取引に入るようにすることです。

例えば、Stepがシグナルを出したら、EAに10本前のMAクロスを確認させ、クロスしたらエントリーさせたい。 (注意: MAクロスの現在のシグナルが長いかどうかをチェックするのではなく、10バー以内のように最近のものであって欲しい)

私は私が見てきたどのEAでも、過去にこれが行われたのを見たことがないように思います。

私はいくつかのことを試してみましたが、今のところ何も動作していません。

以下は私が試した方法の1つです。

extern int lookback = 10;

extern int EMA1 = 21;

extern int EMA2 = 55; extern int EMA1 = 21; extern int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest )です。

int trendPrev = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1).

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1); if(TwentyOneEMA,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-lookback;i++)の場合。

{

if (trendCurr<0)

return(LONG);

else return(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

if (trendCurr<0)

{

for(int i2=1; i2<=Bars-lookback; i2++)

{

if (trendCurr>0)

return(SHORT);

else return(NONE);

}

}

}

return(NONE);

}

何かアイデアがあれば教えてください。また、(int i=1; i<=lookback; i++) も試してみました。

 

...

jayjonbeachです。

trendCurrの値を変更せずにループ内で何度もテストしている(だからいつもNONEを返す)

iCustom()をループの中に入れて、その値をテストしてみてください。このようなものです。

if (trendCurr>0)

{

for(int i=1; i<=lookback; i++)

{

int testValue = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+i);

if (testValue<0) return(LONG);

}

return(NONE);

}

jayjonbeach:
さて、いくつか試してみたのですが、今のところ何もうまくいきません。

以下は、私が試した方法の一つです。

extern int lookback = 10;

extern int EMA1 = 21;

extern int EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest);

int trendPrev = iCustom(NULL,StepMaTimeFrame, "StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1).

double TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

double FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1); if(TwentyOneEMA,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-lookback;i++)の場合。

{

if (trendCurr<0)

return(LONG);

else return(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

if (trendCurr<0)

{

for(int i2=1; i2<=Bars-lookback; i2++)

{

if (trendCurr>0)

return(SHORT);

else return(NONE);

}

}

}

return(NONE);

}

何かアイデアがあれば教えてください。