どこに何を追加すべきかが一目でわかる。改善(機能拡張)すると、何が起こっているのかよく理解できる。
チャンネルをつけようとしているんだけど、うまく動かないんだ。
//+------------------------------------------------------------------+ //|プロジェクト名 //|著作権 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); } //+------------------------------------------------------------------+
ニューデジタル, 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ドルのコストが発生します。
ピップコストは指数関数であることを覚えておいてください。つまり、取引ロット数に基づいてこの値を乗じる必要があります。ポジションのサイズが大きくなると、スプレッドから発生するコストも大きくなります。

スプレッドの変化
スプレッドは変動するものであり、常に同じであるわけではなく、散発的に変化することを覚えておくことが重要です。これらの変化は流動性に基づいており、市場の状況や今後の経済データによって異なる場合があります。現在のスプレッドレートを参照するには、常に取引プラットフォームを参照してください。ニューデジタル, 2014.01.30 09:25
FXスプレッドとニュース (dailyfxの記事を 基に作成)
- スプレッドは、通貨ペアの買値と売値に基づいています。
- スプレッドは変動的であり、ニュース中に変化する可能性があります。
- 経済イベントの直後には、スプレッドの正常化に注意してください。
金融市場は経済ニュースの発表によって大きな影響を受ける可能性があります。ニュースイベントは、経済カレンダーで示されるように、取引週間を通じて発生し、市場のボラティリティを高めるだけでなく、お気に入りの通貨ペアのスプレッドを広げる可能性があります。
新規トレーダーは、これらのイベント中に何が起こり得るかを熟知しておくことが不可欠です。そこで、今後のニュースに備えるため、ボラティリティの高い市場でFXスプレッドに何が起こるかを確認します。

スプレッドとニュース
ニュースは市場の不確実性を高めることで有名です。経済カレンダーのこれらのリリースは散発的に行われ、期待に沿うか沿わないかによって、価格が急変動することがあります。リテール・トレーダーと同様、大規模な流動性プロバイダーも、ニュースの発表前にその結果を知ることはできない!このため、彼らはスプレッドを広げることでリスクの一部を相殺しようとする。
上の図は、1月のNFP雇用統計発表時のスプレッドの例です。主要FXペアのスプレッドがいかに拡大したかに注目してほしい。これは一時的な出来事だったとはいえ、市場が正常化するまでは、トレーダーは取引コストの拡大に耐えなければならない。

スプレッドへの対処
スプレッドは変動するものであり、常に同じであるわけではなく、流動性プロバイダーが価格設定を変更すると変化することを覚えておくことが重要である。上図では、ニュース後のスプレッドの正常化の速さを見ることができる。5分で、EURUSDのスプレッドは6.4pipsから1.4pipsに戻った。では、ニュースの前後で注文を実行したいトレーダーはどこにいるのだろうか。
トレーダーは、不安定な市場を取引するリスクを常に考慮する必要があります。ニュースイベントを取引する際の選択肢の1つは、市場のボラティリティがスプレッドコストの上昇をカバーすることを期待して、成行ですぐに注文を執行することです。あるいは、トレーダーは市場が正常化するのを待ち、市場の動きが落ち着いたら、追加された流動性を利用することもできる。
差を使う代わりに、比率を使ってもいいですか? (symbol1/symbol2)
ありがとう!
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索


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