インディケータ: Spread Of Symbols(銘柄のスプレッド)

 

Spread Of Symbols(銘柄のスプレッド):

この指標は、取引銘柄の価格の差(和)のチャートを示します。これは、取引銘柄の相関関係を視覚的に評価するのに適しています。これは、ペアトレード(スプレッド取引)に関心のあるトレーダーにとって非常に有用でしょう。指標のバーは指標が使われているチャートのバーの時刻で同期化されます。

作者: Dmitry

 
Codebaseでは、このような特殊なケースを発生させないために、ベースとなるChartBuilderを 一度装飾します。
 
hrenfx:
Codebaseでこのような特殊なケースを作らないために、一旦ベースとなるChartBuilderを 装飾します。
このインジケーター(ChartBuilder)には23もの入力パラメーターがあり、これを理解するにはその説明を徹底的に勉強する必要がある。ChartBuilderの 方がより普遍的であることは明らかです。しかし、私のインジケーターはこれまで以上にシンプルで、どんな初心者でもそのスケルトンを使って自分のインジケーターを書くことができる。さらに、あなたは第4言語のインジケーターへのリンクを示していますが、私のものは第5言語のものです。
 

それが問題なんだ。最も単純なことについては、そこで何も学ぶ必要はない。あなたの場合、すべてが極めて初歩的だ:

Formula1 = "AUDUSD - NZDUSD";
考え抜かれたツールキットをMQL4からMQL5に書き換えるだけです。そして、ペアトレードの トピックで発明されたインジケータのほぼ99%を、良いレベルで実装することができるでしょう。
 
教育上、このようなインジケーターは単純に必要である。

どこに何を追加すべきかが一目でわかる。改善(機能拡張)すると、何が起こっているのかよく理解できる。
 

チャンネルをつけようとしているんだけど、うまく動かないんだ。




//+------------------------------------------------------------------+
//|プロジェクト名
//|著作権 2012, 会社名
//|http://www.会社名.net
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   4
//--- プロット Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- プロット Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- プロット Label3
#property indicator_label3  "Label3"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrRed
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- プロット Label4
#property indicator_label4  "Label4"
#property indicator_type4   DRAW_LINE
#property indicator_color4  clrRed
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1

//--- 入力パラメータ
input string         symbol1="EURUSD";
input string         symbol2="GBPUSD";
input double         mass_of_symbol1=1;
input double         mass_of_symbol2=1;
input int            ENPeriod    =  14;
input ENUM_MA_METHOD ENMethod    =  MODE_SMA;
input double         ENDeviation =  0.1;

//--- インジケータ・バッファ
double         UBuffer[];
double         LBuffer[];
double         CBuffer[];

#include <IncOnArray/IncEnvelopesOnArray.mqh>
CEnvelopesOnArray en;

int i,r1,r2,j;
double S,prs,k1,k2,d1,d2;
//--- インジケータ・バッファ
double        ind1[];
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int OnInit()
  {
    en.Init(ENPeriod,ENMethod,ENDeviation);
    
    //--- インジケータ・バッファのマッピング
    SetIndexBuffer(0,ind1,INDICATOR_DATA);
    SetIndexBuffer(1,UBuffer,INDICATOR_DATA);
    SetIndexBuffer(2,LBuffer,INDICATOR_DATA);
    SetIndexBuffer(3,CBuffer,INDICATOR_DATA);
    
    PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(1,PLOT_LABEL,en.Name()+" Upper");

    PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(2,PLOT_LABEL,en.Name()+" Lower");

    PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,en.BarsRequired());
    PlotIndexSetString(3,PLOT_LABEL,en.Name()+" MA");

    //---
   return(0);
  }
//+------------------------------------------------------------------+
//| カスタム・インジケータ反復関数
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ArraySetAsSeries(time,true);ArraySetAsSeries(open,true);ArraySetAsSeries(high,true);ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);ArraySetAsSeries(tick_volume,true);ArraySetAsSeries(volume,true);ArraySetAsSeries(spread,true);

   ArraySetAsSeries(ind1,true);
   MqlRates rates1[]; ArraySetAsSeries(rates1,true);
   MqlRates rates2[]; ArraySetAsSeries(rates2,true);

   if(prev_calculated<rates_total)
     {
      for(i=0;i<rates_total;i++)
        {
         CopyRates(symbol1,0,time[i],1,rates1);
         CopyRates(symbol2,0,time[i],1,rates2);
         ind1[i]=mass_of_symbol1*rates1[0].close-mass_of_symbol2*rates2[0].close;
        }
     }

   en.Solve(rates_total,prev_calculated,ind1,CBuffer,UBuffer,LBuffer);

//--- 次の呼び出しのためにprev_calculatedの値を返す
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

整数コードを理解する必要があるようだ。

   //ArraySetAsSeries(ind1,true);

インデックスを削除したら表示されるようになったが、正確ではなかった。

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

インジケーター: spread_on_chart

ニューデジタル, 2014.01.12 08:59

スプレッドはトレーダーに何を伝えるか?

  • スプレッドは通貨ペアの買値と売値に基づいています。
  • コストはスプレッドとロットサイズに基づいています。
  • スプレッドは可変であり、取引ソフトウェアから参照する必要があります。

スプレッドとFX

どの市場にもスプレッドがあり、FXにもあります。スプレッドとは、簡単に言うと、トレーダーが原資産を売買する際の価格差のことです。株式に精通しているトレーダーは、これを同義語としてBid(買値)と呼びます:アスクスプレッド。

以下に、EURUSDのスプレッドの計算例を示します。まず、買い価格1.35640を求め、売り価格1.32626を差し引きます。このプロセスの後に残るのは、0.00014 という数値です。トレーダーは、ピップ値はEURUSDの小数点以下4桁目として識別され、最終的なスプレッドは1.4ピップと計算されることを覚えておく必要があります。

pipsでのスプレッドの計算方法が分かったところで、トレーダーが負担する実際のコストを見てみましょう。



スプレッドのコストと計算

スプレッドは単なる数字なので、スプレッドをドルやセントに関連付ける方法を知る必要があります。スプレッドがわかれば、ピップコストと取引ロット数さえ特定すれば、この数字を求めることは数学的に非常に簡単です。

上記の相場を使用すると、現在EURUSDを1.3564で買い、1.35474の売り価格で取引を終了できることがわかります。総コストを求めるには、取引ロットの合計を考慮しながら、この値にピップコストを掛ける必要があります。10kのEURUSDロットを1ドルのピップコストで取引する場合、この取引では合計1.40ドルのコストが発生します。

ピップコストは指数関数であることを覚えておいてください。つまり、取引ロット数に基づいてこの値を乗じる必要があります。ポジションのサイズが大きくなると、スプレッドから発生するコストも大きくなります。


スプレッドの変化

スプレッドは変動するものであり、常に同じであるわけではなく、散発的に変化することを覚えておくことが重要です。これらの変化は流動性に基づいており、市場の状況や今後の経済データによって異なる場合があります。現在のスプレッドレートを参照するには、常に取引プラットフォームを参照してください。

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

スクリプトニュースVLine

ニューデジタル, 2014.01.30 09:25

FXスプレッドとニュース dailyfxの記事を 基に作成)

  • スプレッドは、通貨ペアの買値と売値に基づいています。
  • スプレッドは変動的であり、ニュース中に変化する可能性があります。
  • 経済イベントの直後には、スプレッドの正常化に注意してください。

金融市場は経済ニュースの発表によって大きな影響を受ける可能性があります。ニュースイベントは、経済カレンダーで示されるように、取引週間を通じて発生し、市場のボラティリティを高めるだけでなく、お気に入りの通貨ペアのスプレッドを広げる可能性があります。

新規トレーダーは、これらのイベント中に何が起こり得るかを熟知しておくことが不可欠です。そこで、今後のニュースに備えるため、ボラティリティの高い市場でFXスプレッドに何が起こるかを確認します。


スプレッドとニュース

ニュースは市場の不確実性を高めることで有名です。経済カレンダーのこれらのリリースは散発的に行われ、期待に沿うか沿わないかによって、価格が急変動することがあります。リテール・トレーダーと同様、大規模な流動性プロバイダーも、ニュースの発表前にその結果を知ることはできない!このため、彼らはスプレッドを広げることでリスクの一部を相殺しようとする。

上の図は、1月のNFP雇用統計発表時のスプレッドの例です。主要FXペアのスプレッドがいかに拡大したかに注目してほしい。これは一時的な出来事だったとはいえ、市場が正常化するまでは、トレーダーは取引コストの拡大に耐えなければならない。


スプレッドへの対処

スプレッドは変動するものであり、常に同じであるわけではなく、流動性プロバイダーが価格設定を変更すると変化することを覚えておくことが重要である。上図では、ニュース後のスプレッドの正常化の速さを見ることができる。5分で、EURUSDのスプレッドは6.4pipsから1.4pipsに戻った。では、ニュースの前後で注文を実行したいトレーダーはどこにいるのだろうか。

トレーダーは、不安定な市場を取引するリスクを常に考慮する必要があります。ニュースイベントを取引する際の選択肢の1つは、市場のボラティリティがスプレッドコストの上昇をカバーすることを期待して、成行ですぐに注文を執行することです。あるいは、トレーダーは市場が正常化するのを待ち、市場の動きが落ち着いたら、追加された流動性を利用することもできる。


 

申し訳ありません!

意味のない変数が宣言され、機能して いません!

 

差を使う代わりに、比率を使ってもいいですか? (symbol1/symbol2)


ありがとう!