コーディングのヘルプ - ページ 111 1...104105106107108109110111112113114115116117118...786 新しいコメント yscwl 2013.07.23 09:20 #1101 ありがとうございました!あなたはとても優秀です。 gringoh 2013.07.23 09:32 #1102 こんにちは。 Pipware Dashboardにあるような、スイングポイントのみをチャートに表示するインジケータをご存知の方はいらっしゃいませんか? フラクタル・ブレイクアウト戦略 先に述べたように、価格行動は波で動きます。トレンドの方向性(上か下か)は、連続する高値と安値によって決定されます。 上昇トレンドとは、これらの波がより高い高値とより高い安値を付けているときです。 下降トレンドは、これらの波がより低い安値とより低い高値を作るときです。 フラクタルは高値と安値ですから、トレンドの方向を決定するのに使うことができます。 GUのH4チャート(右)を見てみましょう。ポイントA以前は上昇トレンドであり、2つ目の安値のフラクタルは1つ目の安値より高く、2つ目の高値のフラクタルは1つ目の高値より高くなっています。 ポイントAで形成された新しい低フラクタルは、以前の2つの低フラクタルよりも高いです(上昇トレンドを継続)。ポイントAの直後のローソク足は、新しい高値のフラクタルが形成されています。このフラクタルは、その前の高値のフラクタルよりも 低く、トレンドの方向が変わる可能性を示して います。ポイントBの下のローソク足は、ポイントAのフラクタルレベルを「ブレイク」しています(緑色の線)。赤い矢印が描かれ、トレンドの方向が下降に変わったことを表しています。 矢印はArrowsOn=trueで表示させることができます。注意:矢印が描画されるのは、フラクタルブレイクによってトレンドの方向性が変化した場合のみです。例えば、B点の後、下位のフラクタルが続けて(あと2回)ブレイクした場合。 B点以降、高値のフラクタルが破られるまで、トレンドは下降と見なされます。C点の直前で、より高い安値のフラクタルが形成されます。トレンドの方向はまだ下向きと見なされます......高値フラクタルのブレイクはまだありません。 E点では、C点の高値フラクタルをブレイクしています。小さなブレイクであるにもかかわらず、D点にはトレンドの方向転換を示す緑の矢印が描かれています。次の低フラクタルがブレイクするまで、トレンドは上昇すると考えられる。 ご協力ありがとうございました。 最高です。 グリンゴ ファイル: fractals-breakout-explanation.png 10 kb k3rn3l 2013.07.23 14:29 #1103 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); } Coding help コーディングの方法は? トレンド指標 Mladen Rakic 2013.07.23 14:44 #1104 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本目にやったのと同じことをすればいいだけです。 debashis 2013.07.24 07:39 #1105 親愛なるコーダーの皆様。 この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)を実行。 Coding help Cynthia Kase Would Like Standard Error Mladen Rakic 2013.07.24 08:14 #1106 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)を実行。 デバスチ そのインジケータの名前は何ですか? debashis 2013.07.24 08:32 #1107 教祖 基本パターンシステム」http://www.metastocktools.com/MetaStock/Pattern01.txt yscwl 2013.07.24 12:30 #1108 こんにちは、maldenさん、ASCTrendの件ではお世話になりました。このインジケータのEAを作るのを手伝ってもらえないでしょうか。(添付します) 私の考えは、ASCTrendが上に矢印を描き、バーが黄色の線(60MA)の上にあるとき、ロングトレードをし、ストップロスは以前の最低値になります。同様に、ASCTrendが下に矢印を 描き、バーが黄色の線(60MA)の下にあるとき、ショートトレードをし、ストップロスは以前の最高のものになります。ありがとうございます。 ファイル: asctrend_sound_2.mq4 7 kb maonma_arrowsalerts.mq4 5 kb anonimm 2013.07.24 14:33 #1109 こんにちは、ムラデンです。 もし、ラグを防ぐことができるのであれば、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); } Coding help コーディングの方法は? エリオットウェーブス Mladen Rakic 2013.07.24 14:54 #1110 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 に必要なパラメータ : double iRSI([/TD]string symbol,int timeframe,int period,int applied_price,int shift)[/TD][/TR][/TABLE]CCIに必要なパラメーター :[TABLE="class: docvar"][TR][TD]double iCCI( [TD]string symbol,int timeframe,int period,int applied_price,int shift) また、CMOの場合、最初のパラメータはLastBarOnly、2番目はCMO_Rangeなので、iCustom()の呼び出しは次のようになります。 iCustom(NULL,0, "cmo",false,CMORange,0,i) のようにします。 ここで CMORange は何らかのパラメータです。 Coding help Toys from Vinin How to Make Indicator 1...104105106107108109110111112113114115116117118...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ありがとうございました!あなたはとても優秀です。
こんにちは。
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);
}
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)を実行。
親愛なるコーダーの皆さん。
この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);
}
こんにちは、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 に必要なパラメータ :
[/TR]
[/TABLE]
CCIに必要なパラメーター :
[TABLE="class: docvar"]
[TR]
[TD]doubleまた、CMOの場合、最初のパラメータはLastBarOnly、2番目はCMO_Rangeなので、iCustom()の呼び出しは次のようになります。
iCustom(NULL,0, "cmo",false,CMORange,0,i) のようにします。
ここで CMORange は何らかのパラメータです。