コーディングのヘルプ - ページ 31 1...242526272829303132333435363738...786 新しいコメント Ilevna 2012.05.18 03:15 #301 多次元配列の処理で、簡単なことにつまづきました。 こんにちは。 ちょうど画面行の配列からセルを取得しようとすると(同じ結果メッセージアラート)、それは確かに何かを欠場するが、その上にすべての日と私はなぜ理解していない。 ヘルプはとても良いだろう...... これはそれです。 //+-----------------------------------------------------------------------------+//| !XTEST sur arrays.mq4 | //+------------------------------------------------------------------+ #property コピーライト "" #property リンク "" #property indicator_chart_window(インジケーターチャートウィンドウ extern int Coin = 1 ; extern int X_Col = 700 ; extern int Y_Ligne = 30 ; extern string FontCar = "Arial" ; extern int TailCar = 14 ; extern color Couleur = Lime ; extern int X = 1; //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ 文字列 Tab1dim[2]; string Tab2dim[2,2]; string Tab3dim[2,2,2]; string Tab4dim[2,2,2,2]; string Tab3dim[2,2,2]; string Tab4dim[2,2,2]; // 非正規の5次元のテーブル . int Tab5dim[20,20,20,80,2]; int init() { // インジケータ string Tab1dim[2]={"tab1-c0","tab1C1"}; //---- return(0); } //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("R")。 //---- return(0); } //+------------------------------------------------------------------+ //| カスタムインジケータイテレーション関数 //+------------------------------------------------------------------+ int start() { //---- Tab1dim[2]={"tab1-c0","tab1C1"}; string affich=Tab1dim[0]; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 ) を作成します。 ObjectSet ("A1", OBJPROP_CORNER,Coin ); オブジェクトセット("A1", OBJPROP_XDISTANCE,X_Col ); ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col ); ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne ); ObjectSetText("A1", OBJPROP_YDISTANCE,Y_Ligne ); ObjectSetText("A1",affich,TailCar,FontCar , Couleur ); ObjectSetText("A1",Affich,TailCar,FontCar,Couleur ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// アラート(affich)。 //---- return(0); } //+------------------------------------------------------------------+ よろしくお願いします。 Mladen Rakic 2012.05.18 05:00 #302 ... このように試してみてください(配列の初期 化は異なる方法で行われます)。 //+------------------------------------------------------------------+ //| !XTEST sur arrays.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" #property indicator_chart_window extern int Coin = 1 ; extern int X_Col = 10 ; extern int Y_Ligne = 10 ; extern string FontCar = "Arial" ; extern int TailCar = 14 ; extern color Couleur = Lime ; extern int X = 1; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ string Tab1dim[] = {"tab1-c0","tab1C1"}; string Tab2dim[2,2]; string Tab3dim[2,2,2]; string Tab4dim[2,2,2,2]; // 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2]; int init() { //---- indicators string Tab1dim[2]={"tab1-c0","tab1C1"}; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("A1"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- string affich=Tab1dim[0]; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 ); ObjectSet ("A1", OBJPROP_CORNER,Coin ); ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col ); ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne ); ObjectSetText("A1",affich,TailCar, FontCar , Couleur ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// //---- return(0); } //+------------------------------------------------------------------+ Ilevna: こんにちはミスター。 ちょうど画面行の配列からセルを取得しようとすると(同じ結果メッセージアラート)、それは確かに何かを欠場するが、その上に一日中、私はなぜ理解していない。ヘルプはとても良いだろう......これはそれです。 事前にありがとうございます。 Coding help コーディングの方法は? Help-me decimal numbers Ilevna 2012.05.18 06:27 #303 mladen: このように試してみてください(配列の初期化は別の方法で行います)://+------------------------------------------------------------------+ //| !XTEST sur arrays.mq4 |! ありがとうございます。 int [] values =new int[3]; 値[0]=5; values[1]=values[0]*2; values[2]=values[1]*2; という感じですが、私の末席には嬉しい限りです、ありがとうございます。 Mladen Rakic 2012.05.18 15:19 #304 ... ArrayResize()関数を使えば、この問題を部分的に解決できます(そうすれば、動的にサイズを変更する配列を持つことができます)。 問題は、ArrayResize()は1次元の配列と配列の1次元目に対してのみ動作することです(例えば、array[][2]があれば、ArrayResize()で次のようにサイズを変更できます array[anySize][2] )。それ以上の次元(配列の2次元目以降)は,コンパイル時に分かっている一定の大きさでなければなりません. Ilevna: ありがとうございます。しかし、なぜこれが必要なのか分かりません。通常、マニュアルに書かれているように、グローバルスコープや関数内部で、次のように宣言できます。int [] values =new int[3]; values[0]=5; values[1]=values[0]*2; values[2]=values[1]*2; しかし、それは私の最後の日のために良いです、先生ありがとうございました。 kemal44 2012.05.21 07:39 #305 バンドインジケータに関するヘルプ こんにちは、皆さん。 jbandやtmabandなど、たくさんのバンドインジケーターを試した後、ついに自分のバンドインジケーターを書くことにしました。この度、私自身のバンドインジケーターを作成することにしました。 あなたが見つける添付の私のバンドインジケータですが、EAはそれを呼び出すときにローバンドラインはゼロ除算を 与え、私は私のコードを見たが、そこにゼロ除算はない。 もし、このようなアイデアや経験をお持ちでしたら、問題を解決するために私にお手伝いさせてください。 事前にありがとうございます.... ファイル: aband.gif 20 kb Mladen Rakic 2012.05.21 08:05 #306 ... ソースがなければ(あるいはカスタムインジケータを 呼び出すコードがなければ)何も言えません。インジケータが動作する場合、エラーはあなたのEAにあります。 kemal44: こんにちは。jbandやtmabandなど、たくさんのバンドインジケーターを試した結果最終的に、私は自分自身のBand Indicatorを書くことにしました。 あなたが見つける添付の私のバンドインジケータですが、EAがそれを呼び出すときにローバンドラインはゼロ除算を与え、私はそこにゼロ除算がない私のコードを見た。 もし、このようなアイデアや経験をお持ちでしたら、ぜひ私に解決させてください。 ありがとうございました。 jacktrader 2012.05.21 08:41 #307 MAクロスオーバーEAのコーディングのヘルプが必要です。 こんにちは、みんな。 私は誰かが私がコンピュータから離れているときにそれを使用できるように、MAクロスオーバーEAをコーディングするために私を助けることができるかどうか疑問に思っています。 アイデアはこれです。 1分足チャート - 3 EMAと8 SMA 3EMAが8SMAを下回ったら、パラメータで設定したTPとSLでその通貨ペアを 売ります。 3EMAが8SMAを上抜けたら、その通貨ペアをTPとSLをパラメーターにプリセットして買う。 このような単純なMA EAをコード化することが可能かどうか分かりませんが、どなたか手を貸していただければ大変ありがたいです。 よろしくお願いします。 Mladen Rakic 2012.05.21 09:05 #308 ... このスレッドをチェックしましたか :https://www.mql5.com/en/forum/general? jacktrader: こんにちは、皆さん。私は誰かが私がコンピュータから離れている時それを使用できるようにMAクロスオーバーEAをコードするのを助けることができるかどうか疑問に思っている。 アイデアはこれです。 1分足チャート - 3 EMAと8 SMA 3EMAが8SMAを下回ったら、パラメータで設定したTPとSLでその通貨ペアを売ります。 3EMAが8SMAを上抜けたら、その通貨ペアをTPとSLをパラメーターにプリセットして買う。 このような単純なMA EAをコード化することが可能かどうかわかりませんが、どなたか私に手を貸していただけると大変ありがたいです。 ありがとうございました。 kemal44 2012.05.21 19:26 #309 kemal44: 皆さん、こんにちは。jbandやtmabandなど多くのバンドインジケータを試した後、最終的に自分自身のバンドインジケータを書くことにしました。最後に、私は自分自身のバンドインジケータを書くことを決定した。 あなたが見つける添付の私のバンドインジケータですが、EAがそれを呼び出すときにローバンドラインはゼロ除算を与え、私はそこにゼロ除算がない私のコードを見ました。 もし、このようなアイデアや経験をお持ちでしたら、問題を解決するために私にお手伝いさせてください。 よろしくお願いします。 以下は、バンドインデックスのコードです。 EAコールミッドとアップ信号、しかし、ローバンドは私のための問題です。 //+------------------------------------------------------------------+ //| IndicatorPlan.mq4||Copyright © 2007, Meta Corporation. //| 著作権 © 2007, MetaQuotes Software Corp.| //|MetaTrader 5 Trading Platform / MetaQuotes Software Corp.| //+------------------------------------------------------------------+ #property copyright "著作権 © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" //---- メインウインドウにインジケータを描画する #property indicator_chart_window //---- インジケータ・バッファの数 #property indicator_buffers 3 //---- インジケーターの色 #property indicator_color1 ゴールド #property indicator_color2 マゼンタ #property indicator_color3 BlueViolet (ブルーバイオレット) //---- インジケータの入力パラメータ extern int MBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15; extern int ABand_Timeframe =15; extern int DnBand_Period =15; extern int ABand_Timeframe =15; extern int shift =0; //---- インジケータ・バッファ double Ind_Buffer0[]; double Ind_Buffer1[]; double Ind_Buffer2[]; double Ind_Buffer3[]; double Ind_Buffer4[]です。 //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("ABand "+ABand_Timeframe); //---- グラフの実行スタイルを定義する SetIndexStyle(0, DRAW_LINE).SetIndexLabel(0)を設定します。 SetIndexLabel(0, "MBand "+MBand_Period); //SetIndexStyle(0,DRAW_LINE)を設定します。 SetIndexStyle(2, DRAW_LINE).SetIndexLabel(2)を設定します。 SetIndexLabel(2, "UpBand "+UpBand_Period); SetIndexStyle(2, DRAW_LINE); SetIndexStyle(1, DRAW_LINE).SetIndexLabel(1, "UpBand")。 SetIndexLabel(1, "DnBand "+DnBand_Period); SetIndexStyle(1, DRAW_LINE); //---- 計算には3つのインジケータバッファを使用します。 IndicatorBuffers(5); SetIndexBuffer(0, Ind_Buffer0).SetIndexBuffer(0)です。 SetIndexBuffer(1, Ind_Buffer1); SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(4, Ind_Buffer4); //---- ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ 扉を開けてみると IndicatorDigits(Digits)。 //---- 初期化完了。 //---- 初期化終了 return(0); } //+------------------------------------------------------------------+ //| カスタムインジケータイテレーション関数 //+------------------------------------------------------------------+ int start() { //---- インジケータの反復処理を行う。 if(Bars < MBand_Period + UpBand_Period + DnBand_Period) return(0); //---- ÕÕÕÕÕÕÕÕÕ if(ArraySize(Ind_Buffer0) < Bars) { ArraySetAsSeries(Ind_Buffer0, false); ArraySetAsSeries(Ind_Buffer1, false) { ArraySetAsSeries(Ind_Buffer1, false) ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer3, false)。 ArraySetAsSeries(Ind_Buffer4, false); //---- ArrayResize(Ind_Buffer0, Bars); ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer3, Bars)。 ArrayResize(Ind_Buffer4, Bars); //---- ArraySetAsSeries(Ind_Buffer0, true); ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer3, true); ArraySetAsSeries(Ind_Buffer4, true); } //----+ ÂÂÂÂ+ ÂÂÂÂ× Â ÖÅÕÕÕÕÕÕÕÕÕÕÕÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃåÜÜ 静的 int IndCounted; //----+ 浮動小数点付き変数の挿入 double Resalt0, Resalt1, Resalt2; double price; //----+ 整数型変数の挿入と計算されたバーの取得 int limit, MaxBar,bar, counted_bars = IndicatorCounted(); int i,k; //---- エラーの可能性をチェック if(counted_bars < 0) return(-1); //---- 最後に計算されたバーを再計算する必要があります。 if(counted_bars > 0) counted_bars--; //---- 最も古いバーの番号を定義します。 // そこから新しいバーが再計算されます。 limit = Bars - counted_bars - 1; //---- 最も古いバーの数を定義する。 // そこから新しいバーが再計算されます。 MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period); //---- ゼロの初期化 if(limit > MaxBar) { limit = MaxBar; for(bar = Bars - 1; bar >= MaxBar; bar--) { Ind_Buffer0 = 0.0; Ind_Buffer1 = 0.0; Ind_Buffer2 = 0.0です。 Ind_Buffer3 = 0.0です。 Ind_Buffer4 = 0.0。 } } //----+ インジケータ計算の1サイクル目 i=Bars-DnBand_Periodです。 if(counted_bars>DnBand_Period)i=Bars-counted_bars-1。 while(i>=0) { i=Bars-DnBand_Period; if(counted_bars>DnBand_Period) i=Bars-counted_bars-1.If(counted_bars>DnBand_Period)とする。 while(i>=0) { double min=1000000; k=i+DnBand_Period-1; while(k>=i) { price=Resalt1[k]; if(min>price) min=price; k--; } Ind_Buffer1=min; i--; } } for(i=0; i<limit; i++) { // ここでは、変数Resalt0の計算を行う。 // バッファ UpBand[] の値をもとに // と外部変数0に基づく Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i)とする。 } //----+ インジケータ計算の2サイクル目 { i=Bars-UpBand_Period; if(counted_bars>UpBand_Period) i=Bars-counted_bars-1.If(counted_bars>UpBand_Period)。 while(i>=0) { double max=-1000000; k=i+UpBand_Period-1; while(k>=i) { price=Resalt2[k]; if(max<price) max=price; k--; } Ind_Buffer2=max; i--; } } //---- 信号線は単純な移動平均です。 for(i=0; i<limit; i++) { // ここで変数Resalt0を計算するコード // バッファUpBand[]の値に基づいて // と外部変数0 Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i)とする。 } //----+ インジケータ計算のメインサイクル //---- シグナルラインは単純移動平均です。 for(i=0; i<limit; i++) { //変数Resalt0計算のコードはこちら // バッファUpBand[]の値に基づいて // と外部変数0の値に基づいて計算する。 Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2; } return(0); } //+------------------------------------------------------------------+ Coding help マルチタイムフレーム・インディケーター [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 Mladen Rakic 2012.05.29 15:19 #310 ... iCustom()コールをどのように使用しているか投稿できますか? kemal44: 以下は、バンドIndのコードです。 EA call mid and up signal , but low band is the problem for me , //+------------------------------------------------------------------+ //| IndicatorPlan.mq4||Copyright © 2007, Meta Corporation. //| 著作権 © 2007, MetaQuotes Software Corp.| //|MetaTrader 5 Trading Platform / MetaQuotes Software Corp.| //+------------------------------------------------------------------+ #property copyright "著作権 © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" //---- メインウインドウにインジケータを描画する #property indicator_chart_window //---- インジケータ・バッファの数 #property indicator_buffers 3 //---- インジケーターの色 #property indicator_color1 ゴールド #property indicator_color2 マゼンタ #property indicator_color3 BlueViolet (ブルーバイオレット) //---- インジケータの入力パラメータ extern int MBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15; extern int ABand_Timeframe =15; extern int DnBand_Period =15; extern int ABand_Timeframe =15; extern int shift =0; //---- インジケータ・バッファ double Ind_Buffer0[]; double Ind_Buffer1[]; double Ind_Buffer2[]; double Ind_Buffer3[]; double Ind_Buffer4[]です。 //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("ABand "+ABand_Timeframe); //---- グラフの実行スタイルを定義する SetIndexStyle(0, DRAW_LINE).SetIndexLabel(0)を設定します。 SetIndexLabel(0, "MBand "+MBand_Period); //SetIndexStyle(0,DRAW_LINE)を設定します。 SetIndexStyle(2, DRAW_LINE).SetIndexLabel(2)を設定します。 SetIndexLabel(2, "UpBand "+UpBand_Period); SetIndexStyle(2, DRAW_LINE); SetIndexStyle(1, DRAW_LINE).SetIndexLabel(1, "UpBand")。 SetIndexLabel(1, "DnBand "+DnBand_Period); SetIndexStyle(1, DRAW_LINE); //---- 計算には3つのインジケータバッファを使用します。 IndicatorBuffers(5); SetIndexBuffer(0, Ind_Buffer0).SetIndexBuffer(0)です。 SetIndexBuffer(1, Ind_Buffer1); SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(4, Ind_Buffer4); //---- ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ 扉を開く IndicatorDigits(Digits)。 //---- 初期化完了。 //---- 初期化終了 return(0); } //+------------------------------------------------------------------+ //| カスタムインジケータイテレーション関数 //+------------------------------------------------------------------+ int start() { //---- インジケータの反復処理を行う。 if(Bars < MBand_Period + UpBand_Period + DnBand_Period) return(0); //---- ÕÕÕÕÕÕÕÕÕ if(ArraySize(Ind_Buffer0) < Bars) { ArraySetAsSeries(Ind_Buffer0, false); ArraySetAsSeries(Ind_Buffer1, false) { ArraySetAsSeries(Ind_Buffer1, false) ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer3, false)。 ArraySetAsSeries(Ind_Buffer4, false); //---- ArrayResize(Ind_Buffer0, Bars); ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer3, Bars)。 ArrayResize(Ind_Buffer4, Bars); //---- ArraySetAsSeries(Ind_Buffer0, true); ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer3, true); ArraySetAsSeries(Ind_Buffer4, true); } //----+ ÂÂÂÂ+ ÂÂÂÂ× Â ÖÅÕÕÕÕÕÕÕÕÕÕÕÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃåÜÜ! 静的 int IndCounted; //----+ 浮動小数点付き変数の挿入 double Resalt0, Resalt1, Resalt2; double price; //----+ 整数型変数の挿入と計算されたバーの取得 int limit, MaxBar,bar, counted_bars = IndicatorCounted(); int i,k; //---- エラーの可能性をチェック if(counted_bars < 0) return(-1); //---- 最後に計算されたバーを再計算する必要があります。 if(counted_bars > 0) counted_bars--; //---- 最も古いバーの番号を定義します。 // そこから新しいバーが再計算されます。 limit = Bars - counted_bars - 1; //---- 最も古いバーの数を定義する。 // そこから新しいバーが再計算されます。 MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period); //---- ゼロの初期化 if(limit > MaxBar) { limit = MaxBar; for(bar = Bars - 1; bar >= MaxBar; bar--) { Ind_Buffer0 = 0.0; Ind_Buffer1 = 0.0; Ind_Buffer2 = 0.0です。 Ind_Buffer3 = 0.0です。 Ind_Buffer4 = 0.0。 } } //----+ インジケータ計算の1サイクル目 i=Bars-DnBand_Periodです。 if(counted_bars>DnBand_Period)i=Bars-counted_bars-1。 while(i>=0) { i=Bars-DnBand_Period; if(counted_bars>DnBand_Period) i=Bars-counted_bars-1.If(counted_bars>DnBand_Period)とする。 while(i>=0) { double min=1000000; k=i+DnBand_Period-1; while(k>=i) { price=Resalt1[k]; if(min>price) min=price; k--; } Ind_Buffer1=min; i--; } } for(i=0; i<limit; i++) { // ここでは、変数Resalt0の計算を行う。 // バッファ UpBand[] の値をもとに // と外部変数0に基づく Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i)とする。 } //----+ インジケータ計算の2サイクル目 { i=Bars-UpBand_Period; if(counted_bars>UpBand_Period) i=Bars-counted_bars-1.If(counted_bars>UpBand_Period)。 while(i>=0) { double max=-1000000; k=i+UpBand_Period-1; while(k>=i) { price=Resalt2[k]; if(max<price) max=price; k--; } Ind_Buffer2=max; i--; } } //---- 信号線は単純な移動平均です。 for(i=0; i<limit; i++) { // ここで変数Resalt0を計算するコード // バッファUpBand[]の値に基づいて // と外部変数0 Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i)とする。 } //----+ インジケータ計算のメインサイクル //---- シグナルラインは単純移動平均です。 for(i=0; i<limit; i++) { //変数Resalt0計算のコードはこちら // バッファUpBand[]の値に基づいて // と外部変数0の値に基づいて計算する。 Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2; } return(0); } //+------------------------------------------------------------------+ 1...242526272829303132333435363738...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
多次元配列の処理で、簡単なことにつまづきました。
こんにちは。
ちょうど画面行の配列からセルを取得しようとすると(同じ結果メッセージアラート)、それは確かに何かを欠場するが、その上にすべての日と私はなぜ理解していない。
ヘルプはとても良いだろう......
これはそれです。
//| !XTEST sur arrays.mq4 |
//+------------------------------------------------------------------+
#property コピーライト ""
#property リンク ""
#property indicator_chart_window(インジケーターチャートウィンドウ
extern int Coin = 1 ;
extern int X_Col = 700 ;
extern int Y_Ligne = 30 ;
extern string FontCar = "Arial" ;
extern int TailCar = 14 ;
extern color Couleur = Lime ;
extern int X = 1;
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
文字列 Tab1dim[2];
string Tab2dim[2,2];
string Tab3dim[2,2,2];
string Tab4dim[2,2,2,2]; string Tab3dim[2,2,2]; string Tab4dim[2,2,2];
// 非正規の5次元のテーブル . int Tab5dim[20,20,20,80,2];
int init()
{
// インジケータ
string Tab1dim[2]={"tab1-c0","tab1C1"};
//----
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("R")。
//----
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケータイテレーション関数
//+------------------------------------------------------------------+
int start()
{
//----
Tab1dim[2]={"tab1-c0","tab1C1"};
string affich=Tab1dim[0];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 ) を作成します。
ObjectSet ("A1", OBJPROP_CORNER,Coin );
オブジェクトセット("A1", OBJPROP_XDISTANCE,X_Col ); ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col );
ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne ); ObjectSetText("A1", OBJPROP_YDISTANCE,Y_Ligne );
ObjectSetText("A1",affich,TailCar,FontCar , Couleur ); ObjectSetText("A1",Affich,TailCar,FontCar,Couleur );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
アラート(affich)。
//----
return(0);
}
//+------------------------------------------------------------------+よろしくお願いします。
...
このように試してみてください(配列の初期 化は異なる方法で行われます)。
//| !XTEST sur arrays.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
extern int Coin = 1 ;
extern int X_Col = 10 ;
extern int Y_Ligne = 10 ;
extern string FontCar = "Arial" ;
extern int TailCar = 14 ;
extern color Couleur = Lime ;
extern int X = 1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
string Tab1dim[] = {"tab1-c0","tab1C1"};
string Tab2dim[2,2];
string Tab3dim[2,2,2];
string Tab4dim[2,2,2,2];
// 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2];
int init()
{
//---- indicators
string Tab1dim[2]={"tab1-c0","tab1C1"};
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("A1");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
string affich=Tab1dim[0];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 );
ObjectSet ("A1", OBJPROP_CORNER,Coin );
ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col );
ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne );
ObjectSetText("A1",affich,TailCar, FontCar , Couleur );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//----
return(0);
}
//+------------------------------------------------------------------+
こんにちはミスター。
ちょうど画面行の配列からセルを取得しようとすると(同じ結果メッセージアラート)、それは確かに何かを欠場するが、その上に一日中、私はなぜ理解していない。
ヘルプはとても良いだろう......
これはそれです。
事前にありがとうございます。このように試してみてください(配列の初期化は別の方法で行います):
//+------------------------------------------------------------------+
//| !XTEST sur arrays.mq4 |!
ありがとうございます。
int [] values =new int[3];
値[0]=5;
values[1]=values[0]*2;
values[2]=values[1]*2;
という感じですが、私の末席には嬉しい限りです、ありがとうございます。
...
ArrayResize()関数を使えば、この問題を部分的に解決できます(そうすれば、動的にサイズを変更する配列を持つことができます)。
問題は、ArrayResize()は1次元の配列と配列の1次元目に対してのみ動作することです(例えば、array[][2]があれば、ArrayResize()で次のようにサイズを変更できます array[anySize][2] )。それ以上の次元(配列の2次元目以降)は,コンパイル時に分かっている一定の大きさでなければなりません.
ありがとうございます。しかし、なぜこれが必要なのか分かりません。通常、マニュアルに書かれているように、グローバルスコープや関数内部で、次のように宣言できます。
int [] values =new int[3];
values[0]=5;
values[1]=values[0]*2;
values[2]=values[1]*2;
しかし、それは私の最後の日のために良いです、先生ありがとうございました。バンドインジケータに関するヘルプ
こんにちは、皆さん。
jbandやtmabandなど、たくさんのバンドインジケーターを試した後、ついに自分のバンドインジケーターを書くことにしました。この度、私自身のバンドインジケーターを作成することにしました。
あなたが見つける添付の私のバンドインジケータですが、EAはそれを呼び出すときにローバンドラインはゼロ除算を 与え、私は私のコードを見たが、そこにゼロ除算はない。
もし、このようなアイデアや経験をお持ちでしたら、問題を解決するために私にお手伝いさせてください。
事前にありがとうございます....
...
ソースがなければ(あるいはカスタムインジケータを 呼び出すコードがなければ)何も言えません。インジケータが動作する場合、エラーはあなたのEAにあります。
こんにちは。
jbandやtmabandなど、たくさんのバンドインジケーターを試した結果最終的に、私は自分自身のBand Indicatorを書くことにしました。
あなたが見つける添付の私のバンドインジケータですが、EAがそれを呼び出すときにローバンドラインはゼロ除算を与え、私はそこにゼロ除算がない私のコードを見た。
もし、このようなアイデアや経験をお持ちでしたら、ぜひ私に解決させてください。
ありがとうございました。MAクロスオーバーEAのコーディングのヘルプが必要です。
こんにちは、みんな。
私は誰かが私がコンピュータから離れているときにそれを使用できるように、MAクロスオーバーEAをコーディングするために私を助けることができるかどうか疑問に思っています。
アイデアはこれです。
1分足チャート - 3 EMAと8 SMA
3EMAが8SMAを下回ったら、パラメータで設定したTPとSLでその通貨ペアを 売ります。
3EMAが8SMAを上抜けたら、その通貨ペアをTPとSLをパラメーターにプリセットして買う。
このような単純なMA EAをコード化することが可能かどうか分かりませんが、どなたか手を貸していただければ大変ありがたいです。
よろしくお願いします。
...
このスレッドをチェックしましたか :https://www.mql5.com/en/forum/general?
こんにちは、皆さん。
私は誰かが私がコンピュータから離れている時それを使用できるようにMAクロスオーバーEAをコードするのを助けることができるかどうか疑問に思っている。
アイデアはこれです。
1分足チャート - 3 EMAと8 SMA
3EMAが8SMAを下回ったら、パラメータで設定したTPとSLでその通貨ペアを売ります。
3EMAが8SMAを上抜けたら、その通貨ペアをTPとSLをパラメーターにプリセットして買う。
このような単純なMA EAをコード化することが可能かどうかわかりませんが、どなたか私に手を貸していただけると大変ありがたいです。
ありがとうございました。皆さん、こんにちは。
jbandやtmabandなど多くのバンドインジケータを試した後、最終的に自分自身のバンドインジケータを書くことにしました。最後に、私は自分自身のバンドインジケータを書くことを決定した。
あなたが見つける添付の私のバンドインジケータですが、EAがそれを呼び出すときにローバンドラインはゼロ除算を与え、私はそこにゼロ除算がない私のコードを見ました。
もし、このようなアイデアや経験をお持ちでしたら、問題を解決するために私にお手伝いさせてください。
よろしくお願いします。以下は、バンドインデックスのコードです。
EAコールミッドとアップ信号、しかし、ローバンドは私のための問題です。
//+------------------------------------------------------------------+
//| IndicatorPlan.mq4||Copyright © 2007, Meta Corporation.
//| 著作権 © 2007, MetaQuotes Software Corp.|
//|MetaTrader 5 Trading Platform / MetaQuotes Software Corp.|
//+------------------------------------------------------------------+
#property copyright "著作権 © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- メインウインドウにインジケータを描画する
#property indicator_chart_window
//---- インジケータ・バッファの数
#property indicator_buffers 3
//---- インジケーターの色
#property indicator_color1 ゴールド
#property indicator_color2 マゼンタ
#property indicator_color3 BlueViolet (ブルーバイオレット)
//---- インジケータの入力パラメータ
extern int MBand_Period = 15;
extern int UpBand_Period = 15;
extern int DnBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15;
extern int ABand_Timeframe =15; extern int DnBand_Period =15; extern int ABand_Timeframe =15;
extern int shift =0;
//---- インジケータ・バッファ
double Ind_Buffer0[];
double Ind_Buffer1[];
double Ind_Buffer2[];
double Ind_Buffer3[];
double Ind_Buffer4[]です。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("ABand "+ABand_Timeframe);
//---- グラフの実行スタイルを定義する
SetIndexStyle(0, DRAW_LINE).SetIndexLabel(0)を設定します。
SetIndexLabel(0, "MBand "+MBand_Period); //SetIndexStyle(0,DRAW_LINE)を設定します。
SetIndexStyle(2, DRAW_LINE).SetIndexLabel(2)を設定します。
SetIndexLabel(2, "UpBand "+UpBand_Period); SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE).SetIndexLabel(1, "UpBand")。
SetIndexLabel(1, "DnBand "+DnBand_Period); SetIndexStyle(1, DRAW_LINE);
//---- 計算には3つのインジケータバッファを使用します。
IndicatorBuffers(5);
SetIndexBuffer(0, Ind_Buffer0).SetIndexBuffer(0)です。
SetIndexBuffer(1, Ind_Buffer1);
SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(2, Ind_Buffer2);
SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(3, Ind_Buffer3);
SetIndexBuffer(4, Ind_Buffer4);
//---- ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ 扉を開けてみると
IndicatorDigits(Digits)。
//---- 初期化完了。
//---- 初期化終了
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケータイテレーション関数
//+------------------------------------------------------------------+
int start()
{
//---- インジケータの反復処理を行う。
if(Bars < MBand_Period + UpBand_Period + DnBand_Period)
return(0);
//---- ÕÕÕÕÕÕÕÕÕ
if(ArraySize(Ind_Buffer0) < Bars)
{
ArraySetAsSeries(Ind_Buffer0, false);
ArraySetAsSeries(Ind_Buffer1, false) { ArraySetAsSeries(Ind_Buffer1, false)
ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer2, false);
ArraySetAsSeries(Ind_Buffer3, false)。
ArraySetAsSeries(Ind_Buffer4, false);
//----
ArrayResize(Ind_Buffer0, Bars);
ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer1, Bars);
ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer2, Bars);
ArrayResize(Ind_Buffer3, Bars)。
ArrayResize(Ind_Buffer4, Bars);
//----
ArraySetAsSeries(Ind_Buffer0, true);
ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer1, true);
ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer2, true);
ArraySetAsSeries(Ind_Buffer3, true);
ArraySetAsSeries(Ind_Buffer4, true);
}
//----+ ÂÂÂÂ+ ÂÂÂÂ× Â ÖÅÕÕÕÕÕÕÕÕÕÕÕÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃåÜÜ
静的 int IndCounted;
//----+ 浮動小数点付き変数の挿入
double Resalt0, Resalt1, Resalt2;
double price;
//----+ 整数型変数の挿入と計算されたバーの取得
int limit, MaxBar,bar, counted_bars = IndicatorCounted();
int i,k;
//---- エラーの可能性をチェック
if(counted_bars < 0)
return(-1);
//---- 最後に計算されたバーを再計算する必要があります。
if(counted_bars > 0)
counted_bars--;
//---- 最も古いバーの番号を定義します。
// そこから新しいバーが再計算されます。
limit = Bars - counted_bars - 1;
//---- 最も古いバーの数を定義する。
// そこから新しいバーが再計算されます。
MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period);
//---- ゼロの初期化
if(limit > MaxBar)
{
limit = MaxBar;
for(bar = Bars - 1; bar >= MaxBar; bar--)
{
Ind_Buffer0 = 0.0;
Ind_Buffer1 = 0.0;
Ind_Buffer2 = 0.0です。
Ind_Buffer3 = 0.0です。
Ind_Buffer4 = 0.0。
}
}
//----+ インジケータ計算の1サイクル目
i=Bars-DnBand_Periodです。
if(counted_bars>DnBand_Period)i=Bars-counted_bars-1。
while(i>=0)
{
i=Bars-DnBand_Period;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1.If(counted_bars>DnBand_Period)とする。
while(i>=0)
{
double min=1000000;
k=i+DnBand_Period-1;
while(k>=i)
{
price=Resalt1[k];
if(min>price) min=price;
k--;
}
Ind_Buffer1=min;
i--;
}
}
for(i=0; i<limit; i++)
{
// ここでは、変数Resalt0の計算を行う。
// バッファ UpBand[] の値をもとに
// と外部変数0に基づく
Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i)とする。
}
//----+ インジケータ計算の2サイクル目
{
i=Bars-UpBand_Period;
if(counted_bars>UpBand_Period) i=Bars-counted_bars-1.If(counted_bars>UpBand_Period)。
while(i>=0)
{
double max=-1000000;
k=i+UpBand_Period-1;
while(k>=i)
{
price=Resalt2[k];
if(max<price) max=price;
k--;
}
Ind_Buffer2=max;
i--;
}
}
//---- 信号線は単純な移動平均です。
for(i=0; i<limit; i++)
{
// ここで変数Resalt0を計算するコード
// バッファUpBand[]の値に基づいて
// と外部変数0
Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i)とする。
}
//----+ インジケータ計算のメインサイクル
//---- シグナルラインは単純移動平均です。
for(i=0; i<limit; i++)
{
//変数Resalt0計算のコードはこちら
// バッファUpBand[]の値に基づいて
// と外部変数0の値に基づいて計算する。
Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2;
}
return(0);
}
//+------------------------------------------------------------------+
...
iCustom()コールをどのように使用しているか投稿できますか?
以下は、バンドIndのコードです。
EA call mid and up signal , but low band is the problem for me ,
//+------------------------------------------------------------------+
//| IndicatorPlan.mq4||Copyright © 2007, Meta Corporation.
//| 著作権 © 2007, MetaQuotes Software Corp.|
//|MetaTrader 5 Trading Platform / MetaQuotes Software Corp.|
//+------------------------------------------------------------------+
#property copyright "著作権 © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- メインウインドウにインジケータを描画する
#property indicator_chart_window
//---- インジケータ・バッファの数
#property indicator_buffers 3
//---- インジケーターの色
#property indicator_color1 ゴールド
#property indicator_color2 マゼンタ
#property indicator_color3 BlueViolet (ブルーバイオレット)
//---- インジケータの入力パラメータ
extern int MBand_Period = 15;
extern int UpBand_Period = 15;
extern int DnBand_Period = 15; extern int UpBand_Period = 15; extern int DnBand_Period = 15;
extern int ABand_Timeframe =15; extern int DnBand_Period =15; extern int ABand_Timeframe =15;
extern int shift =0;
//---- インジケータ・バッファ
double Ind_Buffer0[];
double Ind_Buffer1[];
double Ind_Buffer2[];
double Ind_Buffer3[];
double Ind_Buffer4[]です。
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
IndicatorShortName("ABand "+ABand_Timeframe);
//---- グラフの実行スタイルを定義する
SetIndexStyle(0, DRAW_LINE).SetIndexLabel(0)を設定します。
SetIndexLabel(0, "MBand "+MBand_Period); //SetIndexStyle(0,DRAW_LINE)を設定します。
SetIndexStyle(2, DRAW_LINE).SetIndexLabel(2)を設定します。
SetIndexLabel(2, "UpBand "+UpBand_Period); SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE).SetIndexLabel(1, "UpBand")。
SetIndexLabel(1, "DnBand "+DnBand_Period); SetIndexStyle(1, DRAW_LINE);
//---- 計算には3つのインジケータバッファを使用します。
IndicatorBuffers(5);
SetIndexBuffer(0, Ind_Buffer0).SetIndexBuffer(0)です。
SetIndexBuffer(1, Ind_Buffer1);
SetIndexBuffer(2, Ind_Buffer2); SetIndexBuffer(2, Ind_Buffer2);
SetIndexBuffer(3, Ind_Buffer3); SetIndexBuffer(3, Ind_Buffer3);
SetIndexBuffer(4, Ind_Buffer4);
//---- ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ 扉を開く
IndicatorDigits(Digits)。
//---- 初期化完了。
//---- 初期化終了
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケータイテレーション関数
//+------------------------------------------------------------------+
int start()
{
//---- インジケータの反復処理を行う。
if(Bars < MBand_Period + UpBand_Period + DnBand_Period)
return(0);
//---- ÕÕÕÕÕÕÕÕÕ
if(ArraySize(Ind_Buffer0) < Bars)
{
ArraySetAsSeries(Ind_Buffer0, false);
ArraySetAsSeries(Ind_Buffer1, false) { ArraySetAsSeries(Ind_Buffer1, false)
ArraySetAsSeries(Ind_Buffer2, false); ArraySetAsSeries(Ind_Buffer2, false);
ArraySetAsSeries(Ind_Buffer3, false)。
ArraySetAsSeries(Ind_Buffer4, false);
//----
ArrayResize(Ind_Buffer0, Bars);
ArrayResize(Ind_Buffer1, Bars); ArrayResize(Ind_Buffer1, Bars);
ArrayResize(Ind_Buffer2, Bars); ArrayResize(Ind_Buffer2, Bars);
ArrayResize(Ind_Buffer3, Bars)。
ArrayResize(Ind_Buffer4, Bars);
//----
ArraySetAsSeries(Ind_Buffer0, true);
ArraySetAsSeries(Ind_Buffer1, true); ArraySetAsSeries(Ind_Buffer1, true);
ArraySetAsSeries(Ind_Buffer2, true); ArraySetAsSeries(Ind_Buffer2, true);
ArraySetAsSeries(Ind_Buffer3, true);
ArraySetAsSeries(Ind_Buffer4, true);
}
//----+ ÂÂÂÂ+ ÂÂÂÂ× Â ÖÅÕÕÕÕÕÕÕÕÕÕÕÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃåÜÜ!
静的 int IndCounted;
//----+ 浮動小数点付き変数の挿入
double Resalt0, Resalt1, Resalt2;
double price;
//----+ 整数型変数の挿入と計算されたバーの取得
int limit, MaxBar,bar, counted_bars = IndicatorCounted();
int i,k;
//---- エラーの可能性をチェック
if(counted_bars < 0)
return(-1);
//---- 最後に計算されたバーを再計算する必要があります。
if(counted_bars > 0)
counted_bars--;
//---- 最も古いバーの番号を定義します。
// そこから新しいバーが再計算されます。
limit = Bars - counted_bars - 1;
//---- 最も古いバーの数を定義する。
// そこから新しいバーが再計算されます。
MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period);
//---- ゼロの初期化
if(limit > MaxBar)
{
limit = MaxBar;
for(bar = Bars - 1; bar >= MaxBar; bar--)
{
Ind_Buffer0 = 0.0;
Ind_Buffer1 = 0.0;
Ind_Buffer2 = 0.0です。
Ind_Buffer3 = 0.0です。
Ind_Buffer4 = 0.0。
}
}
//----+ インジケータ計算の1サイクル目
i=Bars-DnBand_Periodです。
if(counted_bars>DnBand_Period)i=Bars-counted_bars-1。
while(i>=0)
{
i=Bars-DnBand_Period;
if(counted_bars>DnBand_Period) i=Bars-counted_bars-1.If(counted_bars>DnBand_Period)とする。
while(i>=0)
{
double min=1000000;
k=i+DnBand_Period-1;
while(k>=i)
{
price=Resalt1[k];
if(min>price) min=price;
k--;
}
Ind_Buffer1=min;
i--;
}
}
for(i=0; i<limit; i++)
{
// ここでは、変数Resalt0の計算を行う。
// バッファ UpBand[] の値をもとに
// と外部変数0に基づく
Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i)とする。
}
//----+ インジケータ計算の2サイクル目
{
i=Bars-UpBand_Period;
if(counted_bars>UpBand_Period) i=Bars-counted_bars-1.If(counted_bars>UpBand_Period)。
while(i>=0)
{
double max=-1000000;
k=i+UpBand_Period-1;
while(k>=i)
{
price=Resalt2[k];
if(max<price) max=price;
k--;
}
Ind_Buffer2=max;
i--;
}
}
//---- 信号線は単純な移動平均です。
for(i=0; i<limit; i++)
{
// ここで変数Resalt0を計算するコード
// バッファUpBand[]の値に基づいて
// と外部変数0
Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i)とする。
}
//----+ インジケータ計算のメインサイクル
//---- シグナルラインは単純移動平均です。
for(i=0; i<limit; i++)
{
//変数Resalt0計算のコードはこちら
// バッファUpBand[]の値に基づいて
// と外部変数0の値に基づいて計算する。
Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2;
}
return(0);
}
//+------------------------------------------------------------------+