MetaTrader掲示板

アップロード可能ファイル拡張子:gif, jpg, png, txt, swf, jpeg, xls, zip, cab,tpl,mq4,ex4,mq5,ex5
一度にアップロード可能な最大サイズ :合計200KB
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃MetaTraderまとめWiki  
362 / 683   ←次へ | 前へ→

【329】Re:カスタム指標について
  T.T  - 09/7/3(金) 11:34 -

   にょろーんさん ご回答ありがとうございます。


以下は、MACDとRSIです。

以下のコードを修正して頂かないものでしょうか?
どこを訂正したら良いのか私のレベルではわかりません。
よろしくお願い申し上げます。


//+------------------------------------------------------------------+
//|                         Custom MACD.mq4 |
//|           Copyright ゥ 2004, MetaQuotes Software Corp. |
//|                    http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2004, MetaQuotes Software Corp."
#property link   "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double   MacdBuffer[];
double   SignalBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function             |
//+------------------------------------------------------------------+
int init()
 {
//---- drawing settings
  SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexStyle(1,DRAW_LINE);
  SetIndexDrawBegin(1,SignalSMA);
  IndicatorDigits(Digits+1);
//---- indicator buffers mapping
  SetIndexBuffer(0,MacdBuffer);
  SetIndexBuffer(1,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
  IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
  SetIndexLabel(0,"MACD");
  SetIndexLabel(1,"Signal");
//---- initialization done
  return(0);
 }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence              |
//+------------------------------------------------------------------+
int start()
 {
  int limit;
  int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
  for(int i=0; i<limit; i++)
   MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
  for(i=0; i<limit; i++)
   SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
  return(0);
 }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                             RSI.mq4 |
//|           Copyright ゥ 2004, MetaQuotes Software Corp. |
//|                    http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2004, MetaQuotes Software Corp."
#property link   "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int RSIPeriod=14;
//---- buffers
double RSIBuffer[];
double PosBuffer[];
double NegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function             |
//+------------------------------------------------------------------+
int init()
 {
  string short_name;
//---- 2 additional buffers are used for counting.
  IndicatorBuffers(3);
  SetIndexBuffer(1,PosBuffer);
  SetIndexBuffer(2,NegBuffer);
//---- indicator line
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,RSIBuffer);
//---- name for DataWindow and indicator subwindow label
  short_name="RSI("+RSIPeriod+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,short_name);
//----
  SetIndexDrawBegin(0,RSIPeriod);
//----
  return(0);
 }
//+------------------------------------------------------------------+
//| Relative Strength Index                     |
//+------------------------------------------------------------------+
int start()
 {
  int  i,counted_bars=IndicatorCounted();
  double rel,negative,positive;
//----
  if(Bars<=RSIPeriod) return(0);
//---- initial zero
  if(counted_bars<1)
   for(i=1;i<=RSIPeriod;i++) RSIBuffer[Bars-i]=0.0;
//----
  i=Bars-RSIPeriod-1;
  if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
  while(i>=0)
   {
   double sumn=0.0,sump=0.0;
   if(i==Bars-RSIPeriod-1)
    {
     int k=Bars-2;
     //---- initial accumulation
     while(k>=i)
      {
      rel=Close[k]-Close[k+1];
      if(rel>0) sump+=rel;
      else   sumn-=rel;
      k--;
      }
     positive=sump/RSIPeriod;
     negative=sumn/RSIPeriod;
    }
   else
    {
     //---- smoothed moving average
     rel=Close[i]-Close[i+1];
     if(rel>0) sump=rel;
     else   sumn=-rel;
     positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
     negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
    }
   PosBuffer[i]=positive;
   NegBuffer[i]=negative;
   if(negative==0.0) RSIBuffer[i]=0.0;
   else RSIBuffer[i]=100.0-100.0/(1+positive/negative);
   i--;
   }
//----
  return(0);
 }
//+------------------------------------------------------------------+

引用なし
パスワード
2,344 hits

【325】カスタム指標について T.T 09/6/30(火) 4:08
【326】Re:カスタム指標について にょろーん 09/6/30(火) 11:09
【327】Re:カスタム指標について T.T 09/7/1(水) 14:03
【328】Re:カスタム指標について にょろーん 09/7/1(水) 18:59
【329】Re:カスタム指標について T.T 09/7/3(金) 11:34
【330】Re:カスタム指標について にょろーん 09/7/3(金) 12:42 [添付]
【331】Re:カスタム指標について T.T 09/7/4(土) 17:30

  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃MetaTraderまとめWiki  
362 / 683   ←次へ | 前へ→
ページ:  ┃  記事番号:   
(SS)C-BOARD v3.8 is Free
掲示板運営ポリシー:MetaTraderに関する情報を交換するための掲示板です。議論の範囲を超えた根拠無き誹謗中傷、荒らし、犯罪予告等、
公序良俗に反する書き込みについては、速攻削除のうえ、関係機関に通報します。
情報源のページなどがあれば、そこへのリンクを直接張って頂けると大変ありがたいです。
投稿情報の信頼性向上の為にも、ご協力頂ければ幸いです。

Google