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

 

ありがとうございました!あなたはとても優秀です。

 

こんにちは。

Pipware Dashboardにあるような、スイングポイントのみをチャートに表示するインジケータをご存知の方はいらっしゃいませんか?

フラクタル・ブレイクアウト戦略

先に述べたように、価格行動は波で動きます。トレンドの方向性(上か下か)は、連続する高値と安値によって決定されます。

上昇トレンドとは、これらの波がより高い高値とより高い安値を付けているときです。

下降トレンドは、これらの波がより低い安値とより低い高値を作るときです。

フラクタルは高値と安値ですから、トレンドの方向を決定するのに使うことができます。

GUのH4チャート(右)を見てみましょう。ポイントA以前は上昇トレンドであり、2つ目の安値のフラクタルは1つ目の安値より高く、2つ目の高値のフラクタルは1つ目の高値より高くなっています。

ポイントAで形成された新しい低フラクタルは、以前の2つの低フラクタルよりも高いです(上昇トレンドを継続)。ポイントAの直後のローソク足は、新しい高値のフラクタルが形成されています。このフラクタルは、その前の高値のフラクタルよりも 低く、トレンドの方向が変わる可能性を示して います。ポイントBの下のローソク足は、ポイントAのフラクタルレベルを「ブレイク」しています(緑色の線)。赤い矢印が描かれ、トレンドの方向が下降に変わったことを表しています。

矢印はArrowsOn=trueで表示させることができます。注意:矢印が描画されるのは、フラクタルブレイクによってトレンドの方向性が変化した場合のみです。例えば、B点の後、下位のフラクタルが続けて(あと2回)ブレイクした場合。

B点以降、高値のフラクタルが破られるまで、トレンドは下降と見なされます。C点の直前で、より高い安値のフラクタルが形成されます。トレンドの方向はまだ下向きと見なされます......高値フラクタルのブレイクはまだありません。

E点では、C点の高値フラクタルをブレイクしています。小さなブレイクであるにもかかわらず、D点にはトレンドの方向転換を示す緑の矢印が描かれています。次の低フラクタルがブレイクするまで、トレンドは上昇すると考えられる。

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

最高です。

グリンゴ

ファイル:
 

Mladenさん、ありがとうございます。 もし、このようにインジケーターにもう一行追加したい場合、どのようにコードを修正すればよいのでしょうか? どうぞよろしくお願いします。

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

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

//| |

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

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

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

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

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

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

 
k3rn3l:
Mladenさん、ありがとうございます。 このようにインジケータにもう一行追加したい場合、どのようにコードを修正すればよいのでしょうか? ありがとうございました。

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

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

//| |

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

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

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

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

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

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

k3rn3l

あなたはすでにそれをしました(インジケータに2つの行があります)。もう一本(3本)必要なら、2本目にやったのと同じことをすればいいだけです。

 

親愛なるコーダーの皆様。

このMETASTOCKのインジケーターがとても良いと思ったのですが、mt4用に作っていただけないでしょうか?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Consecutive Higher Closes - Exit",

0,21,5);

delay:=Input("Entry and Exit delay", 0,5,0);

plot:=Input("シグナル: [1]クリーン、[2]オール",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x.とする。

Out:=Sum(C>Ref(C,-1),y)=y.とする。

Init:=Cum(In+Out>-1)=1。

InInit:=Cum(In)=1。

flag:=BarsSince(初期値またはIn)

<BarsSince(Init OR Out)+InInit;

signals:=(InInit AND Alert(InInit=0,2)

OR フラグ AND アラート(フラグ=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)を実行。

 
debashis:
親愛なるコーダーの皆さん。

このMETASTOCKのインジケーターがとても良いので、mt4用に作っていただけませんか?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Consecutive Higher Closes - Exit",

0,21,5);

delay:=Input("Entry and Exit delay", 0,5,0);

plot:=Input("シグナル: [1]クリーン、[2]オール",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x.とする。

Out:=Sum(C>Ref(C,-1),y)=y.とする。

Init:=Cum(In+Out>-1)=1。

InInit:=Cum(In)=1。

flag:=BarsSince(初期値またはIn)

<BarsSince(Init OR Out)+InInit;

signals:=(InInit AND Alert(InInit=0,2)

OR フラグ AND アラート(フラグ=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)を実行。

デバスチ

そのインジケータの名前は何ですか?

 

教祖

基本パターンシステム」http://www.metastocktools.com/MetaStock/Pattern01.txt

 

こんにちは、maldenさん、ASCTrendの件ではお世話になりました。このインジケータのEAを作るのを手伝ってもらえないでしょうか。(添付します) 私の考えは、ASCTrendが上に矢印を描き、バーが黄色の線(60MA)の上にあるとき、ロングトレードをし、ストップロスは以前の最低値になります。同様に、ASCTrendが下に矢印を 描き、バーが黄色の線(60MA)の下にあるとき、ショートトレードをし、ストップロスは以前の最高のものになります。ありがとうございます。

ファイル:
 

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

もし、ラグを防ぐことができるのであれば、icustom関数なしで、オリジナルのrsi、cci、cmoのコードをindicに使って、もう一度コードを書くことができますか?

#property indicator_chart_window

#プロパティ indicator_buffers 2

#property indicator_color1 クリムゾン

#property indicator_color2 RoyalBlue (ロイヤルブルー)

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

extern int barsToProcess=100;

//---- バッファ

double ExtMapBuffer1[];

double ExtMapBuffer2[];

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

//| カスタムインジケータ 初期化関数

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

int init()

{

//---- インジケータ

SetIndexStyle(0,DRAW_ARROW)を設定します。

SetIndexArrow(0,233)を設定します.

SetIndexBuffer(0,ExtMapBuffer1)を設定します。

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW)を設定します。

SetIndexArrow(1,234)を設定します。

SetIndexBuffer(1,ExtMapBuffer2)を設定します。

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| カスタムインジケータ初期化関数

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

int deinit()

{

//----

//----

return(0);

}

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

//| カスタムインジケーターイテレーション関数

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

int start()

{

int counted_bars=IndicatorCounted(),

リミット

if(counted_bars>0)

counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)とする。

limit=barsToProcessとする。

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

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i); double cmo=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i); double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0&& cci>150.0&&cmo>30.0)

ExtMapBuffer1=High+5*Point;

さもなくば

ExtMapBuffer1=0.0;

if(rsi<10.0&& cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Low-5*Point。

さもなくば

ExtMapBuffer2=0.0です。

}

return(0);

}

 
anonimm:
こんにちは、Mladenです。

アローベースのインディケータに以下のコードを設定したのですが、PCがフリーズしてしまいます。もしラグを防ぐことができるなら、icustom関数なしで、オリジナルのrsi、cci、cmoコードを使用してコードを書き直すことはできますか?

#property indicator_chart_window

#プロパティ indicator_buffers 2

#property indicator_color1 クリムゾン

#property indicator_color2 RoyalBlue (ロイヤルブルー)

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

extern int barsToProcess=100;

//---- バッファ

double ExtMapBuffer1[];

double ExtMapBuffer2[];

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

//| カスタムインジケータ初期化関数

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

int init()

{

//---- インジケータ

SetIndexStyle(0,DRAW_ARROW)を設定します。

SetIndexArrow(0,233)を設定します.

SetIndexBuffer(0,ExtMapBuffer1)を設定します。

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW)を設定します。

SetIndexArrow(1,234)を設定します。

SetIndexBuffer(1,ExtMapBuffer2)を設定します。

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| カスタムインジケータ初期化関数

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

int deinit()

{

//----

//----

return(0);

}

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

//| カスタムインジケーターイテレーション関数

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

int start()

{

int counted_bars=IndicatorCounted(),

リミット

if(counted_bars>0)

counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)とする。

limit=barsToProcessとする。

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

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i); double cmo=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i); double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0&& cci>150.0&&cmo>30.0)

ExtMapBuffer1=High+5*Point;

さもなくば

ExtMapBuffer1=0.0;

if(rsi<10.0&& cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Low-5*Point。

さもなくば

ExtMapBuffer2=0.0です。

}

return(0)とします。

}

RSIとCCIのiCustom()を使用する代わりに、ビルトインされた関数を 使用してください。

RSI に必要なパラメータ :

iCCI( [TD]string symbol,int timeframe,int period,int applied_price,int shift)
double iRSI([/TD]string symbol,int timeframe,int period,int applied_price,int shift)[/TD]

[/TR]

[/TABLE]

CCIに必要なパラメーター :

[TABLE="class: docvar"]

[TR]

[TD]double

また、CMOの場合、最初のパラメータはLastBarOnly、2番目はCMO_Rangeなので、iCustom()の呼び出しは次のようになります。

iCustom(NULL,0, "cmo",false,CMORange,0,i) のようにします。

ここで CMORange は何らかのパラメータです。