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

 
gilben:
私は価格の配列に指標のアルゴリズムを適用するためのソリューションを探しています。

MQL4では、iCCIOnArray、iBandsOnArrayなど、いくつかのインディケータがこの機能を持っています。

しかし、ADXのような指標にはこのような機能はありません。

どなたか、あらかじめ定義された配列(相場サーバからではない)に対して、指標の計算を適用する方法をご存知でしょうか?

(笑)。

具体的に何が必要なのか、もっと具体的に説明してください。

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

Grzesiek[/lang]

 

...

ADXはatrue range(Max(High,PreviousClose)-Min(Low,PreviousClose))と呼ばれるものを使用しており、これがADX計算の基本となっています。

一般的には、価格が指定されている場合は、そのインジケータは配列に適用できるはずです。価格のパラメータが ない場合は、ほぼ間違いなく配列に適用できません(そもそもそのインジケータが価格で動作していると仮定して)。

 
g.pociejewski:
[このような場合、「indiのコードをエキスパートコードに埋め込む」のがベストだと思います。)

具体的に何が必要なのか、もう少し具体的に教えてください。

ありがとうございます。

Grzesiek[/lang]さん

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

私は良い解決策を探していました。最終的に、最高の解決策は、エキスパートコードにindiコードを埋め込むことです。

とにかく、誰かが私に他の方法を示さない限り、私はこの方法でそれを適用します。

 

ソースファイルをお持ちですか?*.ex4ファイルはコンパイルされているため、ソースコードにアクセスすることはできません。

お問い合わせ先

 

リクエスト

mladen:
star821

こちらをお試しください

________________________

いくつかの説明:私はあなたが投稿したものを使用せず、これらを作りました(あなたの投稿に添付されたインジケータは私の名前が入っていますが、そのバージョンは私が作ったものではありませんが、それだけが理由ではありません)。...

よろしくお願いします。

ムラデン

こんにちは、ムラデンです。

HMAカラーのnrp-indiとHigh-low trend indiにstc EAを適応させることは可能でしょうか?

私は擬似的なコードを書きました(*全くコード化できません... *)。

************************************************************

エクスターナル

Lot#

HMAの期間

???.

.....................

を繰り返す。

ジグザグ・ドット・カラー(バー・クローズ)を取得する。

HMAトレンドカラー(バー・クローズ)を取得する。

----------------------------------------------------------------

// 売り建てる

最後のジグザグドット=青&HMAトレンド=赤の場合→売りオープンチケット(HMAトレンド色ごとに1回のみ)。

売りを開くことができなかった場合-> 3回再試行する

成功しない場合、アラートとメール:シンボル、TF、時間のためにセルを開くことができませんでした。

さもなくば

// 買いをオープン

最後のジグザグドット=赤 && HMAトレンド=青 -> 買いチケットを開く (HMAトレンドカラーにつき1回のみ)

買いをオープンできなかった場合-> 3回リトライする。

成功しない場合、アラートとメール:シンボル、TF、時間のために買いを開くことができませんでした。

-------------------------------------------------------------------

HMAトレンド(赤)が青に変わったら→クローズ売り、10秒待つ ;

HMAトレンド(青)が赤に変化した場合、買いを決済し、10秒待つ。

-------------------------------------------------------------------

金曜日の午前12時00分(日本時間)にすべての取引を終了します...

****************************************************************

損失が出ることは承知していますが、気になりません。

SLは必要ありません。

よろしくお願いします

Cado

hma_color_nrp.ex4high_-_low_trend.mq4

ファイル:
 

ATR + MA & Bandwidth + MA

[lang=it]こんにちは、私は別のウィンドウで、ATRと移動平均を計算し、帯域幅についても同じことを書き込むカスタムインジケータが 必要です。このような場合、どのようにすればよいのでしょうか?

これはテオコードの一つです。

ありがとうございます。

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

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

[/lang]

 

...

今すぐ試す

k3rn3l:
[こんにちは、私は別ウィンドウでatrと移動平均を計算し、帯域幅も同じように計算するカスタムインジケータが必要です。このような場合、どのようにすればよいのでしょうか?

これはテオコードの一つです...

ありがとうございます。

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+
[誰か助けてください。]
ファイル:
atr__ma.mq4  2 kb
 

[lang=tr]こんにちは、誰かメタトレーダー・コードでこの式を構築するために私を助けることができます。

(これはメタストックフォーミュラです)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( 典型的な(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]

 

...

面白いもの

異なる時間枠のために調整する必要があるのは、パーセントだけです。4時間足のチャートでは1%が良いようですが、15分足のチャートでデフォルトの1%の代わりに0.5%を使用した例を紹介します。

追記:元の名前がわからないので、そのまま命名しました

よろしくお願いします

mladen

cedid:
[lang=tr]メタトレーダーでこの数式を構築するために、誰か助けてくれませんか?

(これは metastock formula: にあります)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Mov( 典型的な(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]
ファイル:
levels.gif  22 kb
 
mladen:
面白いですね

異なる時間枠のために調整する必要があるのは、パーセントだけです。4時間足のチャートでは1%が良いようですが、15分足のチャートでデフォルトの1%の代わりに0.5%を使った例を以下に示します。

追記:元の名前がわからないので、そのまま命名しました

よろしくお願いします

mladen

[lang=tr]ありがとうございます mladen i will try it , i think it will work [/lang].