fhat6014 の回答履歴

全52件中1~20件表示
  • MT4時間軸縦線の制御

    MT4のチャートでチャートメニューのグリッドを押せば、時間軸の縦線を消すことができ(下部の時間表示は消えない)、またMQ4プログラムのObjectCreate(OBJ_VLINE)により、任意の刻み位置に別の縦線を引くことができます。 ここでやりたいことは ・デフォルトのグリッドの縦線をプログラムで表示しないようにしたい。若しくは起動時設定。時刻も消したい。 ・ObjectCreate(OBJ_VLINE)で引いた線の下部に対応した時刻を表示したい。 というようなことはできるでしょうか。 参考図書はFXメタとレーダ入門、実践(豊島久道著)

  • MT4チャートをすばやく移動

    MT4のチャート表示で、1分足のとき、チャートを10日分など大きく左右に移動させる良い方法ありませんか。 現在はマウスではなくシフトキーを押しっぱなしくらいですが、1日分を動かすには5秒くらいかかります。ツールかズームをしたり、期間を1hなどとしても、最初からになってしまいます。なおこのときは自動スクロールはオフです。

  • MT4 VQについて

    MT4でVQを使ってみようと思ったのですが、サインが出るとローソク足のところに買値や売値の数値がでてローソク足が見にくくなります。 これを出さないようにする方法はありますか? 詳しい方教えてください。 よろしくお願いします。

  • 証拠金とロスカット値から保有ポジションを算出したい

    対円のロスカット値を算出するには 現在レート - (有効証拠金 - ロスカット金額) / 保有ポジション だと思うのですが、 有効証拠金とロスカット値を固定し、保有ポジションを導き出したい場合どうすれば良いのでしょうか。 例えば、現在レート80円のAUD/JPYで有効証拠金が4万円。 ロスカット金額は取引金額の4%。 ロスカット値の設定を40円にしたとしたら、保有できるポジション数は幾つなのか。 その計算式を教えて下さい。

  • MT4の勉強でつまりました

    前日の4本値とフィボナッチを利用して当日の売り買いを自動的に行なうプログラムを考えてみました。 しかし、書物を参考にしていることもあってか、うまくいきません。 仕事に出かける時間が早いので標準時間(夏;6:00 冬;7:00)にエントリーできません。 流れとして 標準時間にプログラムスタート→前日分を決済→計算式に基づいてエントリーする。 初心者に付き問題点をわかりやすくご指導ください。 //マジックナンバーの定義 #define MAGIC 7 //パラメーターの設定// extern double Lots = 1.0; //取引ロット数 extern int Slip = 10; //許容スリップページ数 extern string Comments = ""; //コメント //変数の設定// int Ticket_L = 0;//買い注文の結果をキャッチする変数 int Ticket_S = 0;//売り注文の結果をキャッチする変数 int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数 int start() { //買いポジションのエグジット { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if(Exit_L == 1){Ticket_L =0;} } //売りポジションのエグジット { Exit_S = OrderClose(Ticket_S,Lots,Bid,Slip,Blue); if(Exit_S == 1){Ticket_S =0;} } //買いエントリー if(((iHigh("GBPJPY",1440,1)-iLow("GBPJPY",1440,1))*0.5+iLow("GBPJPY",1440,1))<((iOpen("GBPJPY",1440,1)+iClose("GBPJPY",1440,1))/2 { Ticket_L = OrderSend(Symbol(),OP_BUY, Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } //売りエントリー if(((iHigh("GBPJPY",1440,1)-iLow("GBPJPY",1440,1))*1.382+iLow("GBPJPY",1440,1))>((iOpen("GBPJPY",1440,1)+iClose("GBPJPY",1440,1))/2 { Ticket_L = OrderSend(Symbol(),OP_SELL, Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); }

  • MT4 インジケータ

    VT系/CT系では今日の最高値、最安値を描画することができました。(NYクローズ時間を基準に) 現在、sarahという方のhighlowインジケータと三空という方のインジケータを使っているのですが、三空という方のインジケータは、今日だけの最高値最安値が一直線で描画され当日のみの最高値最安値が表示され、それ以前の最高値最安値は描画されません。そういう面ではsarahという方のインジケータは、NY時間基準でその日その日の最高値最安値が描画されよいのですが、三空という方のインジケータのように最高値最安値のタグがついていません。 どなたかVT/CT系のようなインジケータお持ちでないでしょうか。

  • MT4 ADX(VT/CT系)のMTF化

    下記アドレスにVT/CT系のADXがあります。 このADXをMTF(マルチタイムフレーム?)化して、15分足チャートに30分足、1時間足の状態を表示したいのですが、どのようにプログラミングを変更したらよいか分かりません。 どなたかご教授願います。 http://ux.getuploader.com/fai_fx/download/4/ADX-VT2.mq4

  • MT4 BBandWidthRatio(VT系)

    fhat6014様 この質問の前にADXのMTF化の質問をしているのですが、貴殿に以前紹介頂いた、BBandWidthRatioのVT系のインジケータもMTF化できるのでしょうか?現在、紹介頂いたサイトからインジケータが削除されているため、プログラムを記載させて頂きます。可能であれば、教えていただけないでしょうか。 #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Purple #property indicator_color2 Blue #property indicator_color3 Red #property indicator_style2 STYLE_DOT #property indicator_style3 STYLE_DOT #property indicator_minimum 0 //---- input parameters extern int BB_Period=18; extern double Deviation=2.0; extern int Bulgeper=150; extern int Squeezeper=150; double buf1[]; //double buf2[]; //double buf3[]; //double buf4[]; double bufBulgeper[]; double bufSqueezeper[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS)); SetIndexDrawBegin(0,BB_Period); SetIndexLabel(0,"BBandWidthRatio"); SetIndexBuffer(0, buf1); SetIndexDrawBegin(1,BB_Period); SetIndexLabel(1,"Bulgeper"); SetIndexBuffer(1, bufBulgeper); SetIndexDrawBegin(2,BB_Period); SetIndexLabel(2,"Squeezeper"); SetIndexBuffer(2, bufSqueezeper); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, j; double ave, sko, sum; int counted_bars=IndicatorCounted(); double MA, Up, Dn; if(Bars<=BB_Period) return(0); if(BB_Period==0) return(0); int limit = Bars - counted_bars; for (i=limit-1; i>=0; i--) { // buf2[i] = iMA(NULL,0,BB_Period,0,MODE_SMA,PRICE_CLOSE,i); MA = iMA(NULL,0,BB_Period,0,MODE_SMA,PRICE_CLOSE,i); sum = 0; for (j=0; j<BB_Period; j++) sum+=Close[i+j]; ave = sum / BB_Period; sum = 0; for (j=0; j<BB_Period; j++) sum+=(Close[i+j]-ave)*(Close[i+j]-ave); sko = MathSqrt(sum / BB_Period); // buf4[i] = buf2[i]+(Deviation*sko); // buf3[i] = buf2[i]-(Deviation*sko); Up = MA+(Deviation*sko); Dn = MA-(Deviation*sko); // buf1[i] = 2*(Deviation*sko)/buf2[i]; if( MA != 0 ){ buf1[i] = 2*(Deviation*sko)/MA; bufBulgeper[i] = buf1[ArrayMaximum(buf1,Bulgeper,i)]; bufSqueezeper[i] = buf1[ArrayMinimum(buf1,Squeezeper,i)]; } } return(0); }

  • FXにおける勝率の求め方

    FX取引において、買いと売りのポジションどちらかを持った時の勝率を50%( スプレッドやスリッページは考慮しない)と仮定できるとします。 このときのリワード:リスクは1:1であると想定されます。(1円の利益幅に対して1円の損切り幅) そこで、リワード:リスクを2:1で設定した時の勝率の求め方を教えて頂きたいと思い質問させていただきました。 当然50%より低くなることは分かるのですが、計算の仕方が分かりません。 例えばポジションを持つのには買いと売りしかないので、当たるか外れるで言えば50%と考えるとします。 この場合利益までの幅を2円、損切りまでの幅を1円と設定すると、1円の利益、または1円の損失がでる確率は前述の通り50%(リワードリスク1:1)となりますが、利益がさらに2円まで到達するためにはさらに1円プラスになる必要があります。 つまり、ポジションを持った後先に+1円になったと仮定してさらに+1円になった時点で利益確定となるので続けて1円勝った(2連勝)したと考えると、勝率50%で2連勝とすれば0.5×0.5×100=25%になるのかなとも考えたのですが、リワード:リスク2:1の時に勝率50%を元にした計算がおかしいような気がして混乱してしまいました。 もっと簡単な算数で計算できるものでしょうか? うまく要点まとめられずだらだら書き連ねてしまい申し訳ありません。 要はリワード:リスク 2:1に設定した時の理論上の勝率を求めたいのですがお分かりになりますでしょうか?

  • MT4 BBandWidthRatio(VT系)

    fhat6014様 この質問の前にADXのMTF化の質問をしているのですが、貴殿に以前紹介頂いた、BBandWidthRatioのVT系のインジケータもMTF化できるのでしょうか?現在、紹介頂いたサイトからインジケータが削除されているため、プログラムを記載させて頂きます。可能であれば、教えていただけないでしょうか。 #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Purple #property indicator_color2 Blue #property indicator_color3 Red #property indicator_style2 STYLE_DOT #property indicator_style3 STYLE_DOT #property indicator_minimum 0 //---- input parameters extern int BB_Period=18; extern double Deviation=2.0; extern int Bulgeper=150; extern int Squeezeper=150; double buf1[]; //double buf2[]; //double buf3[]; //double buf4[]; double bufBulgeper[]; double bufSqueezeper[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS)); SetIndexDrawBegin(0,BB_Period); SetIndexLabel(0,"BBandWidthRatio"); SetIndexBuffer(0, buf1); SetIndexDrawBegin(1,BB_Period); SetIndexLabel(1,"Bulgeper"); SetIndexBuffer(1, bufBulgeper); SetIndexDrawBegin(2,BB_Period); SetIndexLabel(2,"Squeezeper"); SetIndexBuffer(2, bufSqueezeper); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, j; double ave, sko, sum; int counted_bars=IndicatorCounted(); double MA, Up, Dn; if(Bars<=BB_Period) return(0); if(BB_Period==0) return(0); int limit = Bars - counted_bars; for (i=limit-1; i>=0; i--) { // buf2[i] = iMA(NULL,0,BB_Period,0,MODE_SMA,PRICE_CLOSE,i); MA = iMA(NULL,0,BB_Period,0,MODE_SMA,PRICE_CLOSE,i); sum = 0; for (j=0; j<BB_Period; j++) sum+=Close[i+j]; ave = sum / BB_Period; sum = 0; for (j=0; j<BB_Period; j++) sum+=(Close[i+j]-ave)*(Close[i+j]-ave); sko = MathSqrt(sum / BB_Period); // buf4[i] = buf2[i]+(Deviation*sko); // buf3[i] = buf2[i]-(Deviation*sko); Up = MA+(Deviation*sko); Dn = MA-(Deviation*sko); // buf1[i] = 2*(Deviation*sko)/buf2[i]; if( MA != 0 ){ buf1[i] = 2*(Deviation*sko)/MA; bufBulgeper[i] = buf1[ArrayMaximum(buf1,Bulgeper,i)]; bufSqueezeper[i] = buf1[ArrayMinimum(buf1,Squeezeper,i)]; } } return(0); }

  • MT4 ストキャスティクス(前回同様)

    fhat6014様 前回同様に(1)Alertを鳴らす(2)Soundを1度鳴らす(3)Soundを鳴らし続ける設定を下記に一まとめに設定できますでしょうか。何度もすいません。 #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red //---- input parameters extern int KPeriod=42; extern int DPeriod=3; extern int Slowing=3; //---- buffers double MainBuffer[]; double SignalBuffer[]; double HighesBuffer[]; double LowesBuffer[]; //---- int draw_begin1=0; int draw_begin2=0; //| Custom indicator initialization function | int init() { string short_name; //---- 2 additional buffers are used for counting. IndicatorBuffers(4); SetIndexBuffer(2, HighesBuffer); SetIndexBuffer(3, LowesBuffer); //---- indicator lines SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0, MainBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1, SignalBuffer); //---- name for DataWindow and indicator subwindow label short_name="Sto("+KPeriod+","+DPeriod+","+Slowing+")"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); SetIndexLabel(1,"Signal"); //---- draw_begin1=KPeriod+Slowing; draw_begin2=draw_begin1+DPeriod; SetIndexDrawBegin(0,draw_begin1); SetIndexDrawBegin(1,draw_begin2); //---- return(0); } //| Stochastic oscillator | int start() { int i,k; int counted_bars=IndicatorCounted(); double price; //---- if(Bars<=draw_begin2) return(0); //---- initial zero if(counted_bars<1) { for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0; for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0; } //---- minimums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double min=1000000; k=i+KPeriod-1; while(k>=i) { price=Low[k]; if(min>price) min=price; k--; } LowesBuffer[i]=min; i--; } //---- maximums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double max=-1000000; k=i+KPeriod-1; while(k>=i) { price=High[k]; if(max<price) max=price; k--; } HighesBuffer[i]=max; i--; } //---- %K line i=Bars-draw_begin1; if(counted_bars>draw_begin1) i=Bars-counted_bars-1; while(i>=0) { double sumlow=0.0; double sumhigh=0.0; for(k=(i+Slowing-1);k>=i;k--) { sumlow+=Close[k]-LowesBuffer[k]; sumhigh+=HighesBuffer[k]-LowesBuffer[k]; } if(sumhigh==0.0) MainBuffer[i]=100.0; else MainBuffer[i]=sumlow/sumhigh*100; i--; } //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; //---- signal line is simple movimg average for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MODE_SMA,i); //---- return(0); }

  • MT4 スローストキャスティクス(前回同様)

    fhat6014様 前回と同様に(1)Alertを鳴らす(2)Soundを1度鳴らす(3)Soundを鳴らし続けるとい設定を一まとめで設定できるのでしょうか。教えてください。 #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red //---- input parameters extern int KPeriod=42; extern int DPeriod=3; extern int Slowing=3; //---- buffers double KBuffer[]; double DBuffer[]; double MainBuffer[]; double SignalBuffer[]; double HighesBuffer[]; double LowesBuffer[]; //---- int draw_begin1=0; int draw_begin2=0; //| Custom indicator initialization function | int init() { string short_name; //---- 2 additional buffers are used for counting. IndicatorBuffers(6); SetIndexBuffer(2, HighesBuffer); SetIndexBuffer(3, LowesBuffer); SetIndexBuffer(4, MainBuffer); SetIndexBuffer(5, SignalBuffer); //---- indicator lines SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0, KBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1, DBuffer); //---- name for DataWindow and indicator subwindow label short_name="SlowKD("+KPeriod+","+DPeriod+","+Slowing+")"; IndicatorShortName(short_name); SetIndexLabel(4,short_name); SetIndexLabel(5,"Signal"); //---- draw_begin1=KPeriod+Slowing; draw_begin2=draw_begin1+DPeriod; SetIndexDrawBegin(0,draw_begin1); SetIndexDrawBegin(1,draw_begin2); //---- return(0); } //| Stochastic oscillator | int start() { int i,k; int counted_bars=IndicatorCounted(); double price; //---- if(Bars<=draw_begin2) return(0); //---- initial zero if(counted_bars<1) { for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0; for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0; } //---- minimums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double min=1000000; k=i+KPeriod-1; while(k>=i) { price=Low[k]; if(min>price) min=price; k--; } LowesBuffer[i]=min; i--; } //---- maximums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double max=-1000000; k=i+KPeriod-1; while(k>=i) { price=High[k]; if(max<price) max=price; k--; } HighesBuffer[i]=max; i--; } //---- %K line i=Bars-draw_begin1; if(counted_bars>draw_begin1) i=Bars-counted_bars-1; while(i>=0) { double sumlow=0.0; double sumhigh=0.0; for(k=(i+Slowing-1);k>=i;k--) { sumlow+=Close[k]-LowesBuffer[k]; sumhigh+=HighesBuffer[k]-LowesBuffer[k]; } if(sumhigh==0.0) MainBuffer[i]=100.0; else MainBuffer[i]=sumlow/sumhigh*100; i--; } //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; //---- signal line is simple movimg average for(i=0; i<limit; i++) KBuffer[i]=iMAOnArray(MainBuffer,Bars,Slowing,0,MODE_SMA,i); for(i=0; i<limit; i++) DBuffer[i]=iMAOnArray(KBuffer,Bars,DPeriod,0,MODE_SMA,i); //---- return(0); }

  • MT4 スローストキャスティクス

    fhat6014様 以前、教えていただいたのですが、下記プログラム一つに(1)Alertを鳴らす(2)Soundを1度鳴らす(3)Soundを鳴らし続けるという設定を一まとめにできるのでしょうか。ご教授願います。 #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Red //---- input parameters extern int PK=42; extern int PD=3; extern int PS=3; //---- buffers double k[]; double d[]; //| Custom indicator initialization function | int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,k); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,d); return(0); } //| Custom indicator iteration function | int start() { int counted_bars=IndicatorCounted(); int shift,limit; if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-PK-1; if(counted_bars>=PK) limit=Bars-counted_bars-1; for (shift=limit;shift>=0;shift--) { d[shift]=(iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_SIGNAL,shift)+iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_SIGNAL,shift+1)+iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_SIGNAL,shift+2))/3.0; k[shift]=(iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_MAIN,shift)+iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_MAIN,shift+1)+iStochastic(NULL,0,PK,PD,PS,MODE_SMA,1,MODE_MAIN,shift+2))/3.0; } return(0); }

  • MT4インジケータ Parabolic

    下記アドレスからParabolic-closeというファイルをダウンロードして、ParabolicをDotではなく、線で表示したのですが(既定値は、ちょっと違っていたので、標準のStep:0.02、Max:0.2に変更して)、ドットで表示した場合と線の転換がずれてしまいます。 どなたか、正確に線で表示できるParabolicSARを紹介していただけないでしょうか。 ほとんどのサイトに掲載されているParabolicは、Dot表示で、線で表示できるParabolicは、上記のファイルだけだったもので・・・。 http://www.abysse.co.jp/mt4/indicator_name_p.html

  • MT4インジケータ File

    MT4で使うインジケータにEX4ファイルがありますが、これをMQ4ファイルに変換できる、フリーソフトはないのでしょうか?アメリカなどでは、あるというのは読んだことがあるのですが・・・。 どなたかご存知でしたら教えてください。

  • MT4のメール送信設定について

    現在、FXDD(MT4)を利用していますが、組み込んでいるインデケーター のシグナルが受信できずに困っています。 テスト送信もエラーとなります。 たぶんに設定の方法に問題があるのでしょう。 PC(ビスタ)・プロバイダー(ビビック※九州電力系)・携帯はAUです。 先日もビビックへMT4の設定項目について問い合わせしましたが、要領 得ません。 SMTPサーバーの項目は判明しましたが、SMTPログインID,及びSMYP パスワードに、何にを入力すればいいのか判りません。 MT4のメール送信機能を利用し、かつ、ビビックをご利用の方がいらっしゃいましたら ご教授頂ければ幸いです。 どうぞよろしくお願いいたします。

  • MT4 MACD

    MACDとSIGNALがクロスした際の、(1)-(3)の条件を満たす、プログラム変更を教えてください。 (1)Alertを鳴らす(2)Soundを1度鳴らす(3)Soundを鳴らし続ける #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 DeepSkyBlue #property indicator_color2 DeepPink #property indicator_color3 Green #property indicator_color4 DeepPink #property indicator_width4 2 #property indicator_color5 Aqua #property indicator_width5 2 //---- input parameters extern int FastMAPeriod=12; extern int SlowMAPeriod=26; extern string _ma = "0:SMA 1:EMA 2:SMMA 3:LWMA"; extern int MAMethod = MODE_EMA; extern int SignalMAPeriod=9; extern int SignalMAMethod = MODE_EMA; extern bool ShowSignal = false; extern double SignalDiff = 0.000175; //---- buffers double MACDLineBuffer[]; double SignalLineBuffer[]; double HistogramBuffer[]; double AlertUpBuffer[]; double AlertDownBuffer[]; //---- variables double alpha = 0; double alpha_1 = 0; //| Custom indicator initialization function | int init() { IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1); //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,MACDLineBuffer); SetIndexDrawBegin(0,SlowMAPeriod); SetIndexStyle(1,DRAW_LINE/*,STYLE_DOT*/); SetIndexBuffer(1,SignalLineBuffer); SetIndexDrawBegin(1,SlowMAPeriod+SignalMAPeriod); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,HistogramBuffer); SetIndexDrawBegin(2,SlowMAPeriod+SignalMAPeriod); SetIndexBuffer(3,AlertDownBuffer); SetIndexDrawBegin(3,SlowMAPeriod+SignalMAPeriod); SetIndexBuffer(4,AlertUpBuffer); SetIndexDrawBegin(4,SlowMAPeriod+SignalMAPeriod); if(ShowSignal){ SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,119); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,119); }else{ SetIndexStyle(3,DRAW_NONE); SetIndexStyle(4,DRAW_NONE); } //---- name for DataWindow and indicator subwindow label IndicatorShortName("MACD+("+FastMAPeriod+","+SlowMAPeriod+","+SignalMAPeriod+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); SetIndexLabel(2,"Hist"); SetIndexLabel(3,NULL); SetIndexLabel(4,NULL); //---- //alpha = 2.0 / (SignalMAPeriod + 1.0); //alpha_1 = 1.0 - alpha; //---- if(StringFind(Symbol(),"JPY")!=-1) SignalDiff=SignalDiff*100; Print("SignalDiff = ",SignalDiff); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit,i; int counted_bars = IndicatorCounted(); //---- check for possible errors if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; limit = Bars - counted_bars; for(i=limit; i>=0; i--) { MACDLineBuffer[i] = iMA(NULL,0,FastMAPeriod,0,MAMethod,PRICE_CLOSE,i) - iMA(NULL,0,SlowMAPeriod,0,MAMethod,PRICE_CLOSE,i); } for(i=limit; i>=0; i--) { //SignalLineBuffer[i] = alpha*MACDLineBuffer[i] + alpha_1*SignalLineBuffer[i+1]; SignalLineBuffer[i] = iMAOnArray(MACDLineBuffer,0,SignalMAPeriod,0,SignalMAMethod,i); HistogramBuffer[i] = MACDLineBuffer[i] - SignalLineBuffer[i]; if(MACDLineBuffer[i] >MACDLineBuffer[i+1]+SignalDiff ){ AlertUpBuffer[i]=MACDLineBuffer[i]; }else{ AlertUpBuffer[i]=EMPTY_VALUE; } if(MACDLineBuffer[i] <MACDLineBuffer[i+1]-SignalDiff){ AlertDownBuffer[i]=MACDLineBuffer[i]; }else{ AlertDownBuffer[i]=EMPTY_VALUE; } } //---- return(0);

  • MT4 MACD

    下記、MACDのプログラムですが、MACDラインとSignalラインがクロスした際、(1)-(3)の条件を満たす、プログラム変更を、どなたか、詳しい方教えてください。 (1)Alertを鳴らす (2)Soundを1度鳴らす (3)Soundを鳴らし続ける #property copyright "Copyright ゥ 2005, David W. Thomas" #property link "mailto:davidwt@usa.net" #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 Green #property indicator_color4 DeepPink #property indicator_width4 2 #property indicator_color5 Aqua #property indicator_width5 2 //---- input parameters extern int FastMAPeriod=12; extern int SlowMAPeriod=26; extern int SignalMAPeriod=9; extern bool ShowSignal = false; extern double SignalDiff = 0.000175; //---- buffers double MACDLineBuffer[]; double SignalLineBuffer[]; double HistogramBuffer[]; double AlertUpBuffer[]; double AlertDownBuffer[]; //---- variables double alpha = 0; double alpha_1 = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1); //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,MACDLineBuffer); SetIndexDrawBegin(0,SlowMAPeriod); SetIndexStyle(1,DRAW_LINE/*,STYLE_DOT*/); SetIndexBuffer(1,SignalLineBuffer); SetIndexDrawBegin(1,SlowMAPeriod+SignalMAPeriod); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,HistogramBuffer); SetIndexDrawBegin(2,SlowMAPeriod+SignalMAPeriod); SetIndexBuffer(3,AlertDownBuffer); SetIndexDrawBegin(3,SlowMAPeriod+SignalMAPeriod); SetIndexBuffer(4,AlertUpBuffer); SetIndexDrawBegin(4,SlowMAPeriod+SignalMAPeriod); if(ShowSignal){ SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,119); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,119); }else{ SetIndexStyle(3,DRAW_NONE); SetIndexStyle(4,DRAW_NONE); } //---- name for DataWindow and indicator subwindow label IndicatorShortName("MACD-VT("+FastMAPeriod+","+SlowMAPeriod+","+SignalMAPeriod+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); SetIndexLabel(2,"Hist"); SetIndexLabel(3,NULL); SetIndexLabel(4,NULL); //---- alpha = 2.0 / (SignalMAPeriod + 1.0); alpha_1 = 1.0 - alpha; //---- if(StringFind(Symbol(),"JPY")!=-1) SignalDiff=SignalDiff*100; Print("SignalDiff = ",SignalDiff); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); //---- check for possible errors if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; limit = Bars - counted_bars; for(int i=limit; i>=0; i--) { MACDLineBuffer[i] = iMA(NULL,0,FastMAPeriod,0,MODE_EMA,PRICE_CLOSE,i) - iMA(NULL,0,SlowMAPeriod,0,MODE_EMA,PRICE_CLOSE,i); SignalLineBuffer[i] = alpha*MACDLineBuffer[i] + alpha_1*SignalLineBuffer[i+1]; HistogramBuffer[i] = MACDLineBuffer[i] - SignalLineBuffer[i]; if(MACDLineBuffer[i] >MACDLineBuffer[i+1]+SignalDiff ){ AlertUpBuffer[i]=MACDLineBuffer[i]; }else{ AlertUpBuffer[i]=EMPTY_VALUE; } if(MACDLineBuffer[i] <MACDLineBuffer[i+1]-SignalDiff){ AlertDownBuffer[i]=MACDLineBuffer[i]; }else{ AlertDownBuffer[i]=EMPTY_VALUE; } } //---- return(0); } //+------------------------------------------------------------------+

  • MT4 MACD

    下記、MACDのプログラムですが、MACDラインとSignalラインがクロスした際、(1)-(3)の条件を満たす、プログラム変更を、どなたか、詳しい方教えてください。 (1)Alertを鳴らす (2)Soundを1度鳴らす (3)Soundを鳴らし続ける #property copyright "Copyright(C) 2005 S.B.T. All Rights Reserved." #property link "http://sufx.core.t3-ism.net/" //---- indicator settings #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 MediumSeaGreen #property indicator_color2 DarkOrange #property indicator_color3 Crimson #property indicator_color4 SteelBlue //---- indicator parameters extern int FastMA=12; extern int SlowMA=26; extern int MA_Method=1; extern int SignalMA=9; extern int SignalMA_Method=1; extern int Apply=0; extern int Timeframe=0; //---- indicator buffers double ind_buffer1[]; double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name1,short_name2,short_name3; //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexDrawBegin(1,SignalMA); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1); //---- indicator buffers mapping if(!SetIndexBuffer(0,ind_buffer1) && !SetIndexBuffer(1,ind_buffer2) && !SetIndexBuffer(2,ind_buffer3) && !SetIndexBuffer(3,ind_buffer4)) Print("cannot set indicator buffers!"); //---- name for DataWindow and indicator subwindow label switch(MA_Method) { case 1 : short_name1="EMA("; break; case 2 : short_name1="SMMA("; break; case 3 : short_name1="LWMA("; break; default : MA_Method=0; short_name1="SMA("; } switch(SignalMA_Method) { case 1 : short_name2="EMA("; break; case 2 : short_name2="SMMA("; break; case 3 : short_name2="LWMA("; break; default : SignalMA_Method=0; short_name2="SMA("; } switch(Apply) { case 1 : short_name3="Apply to Open price"; break; case 2 : short_name3="Apply to High price"; break; case 3 : short_name3="Apply to Low price"; break; case 4 : short_name3="Apply to Median price, (high+low)/2"; break; case 5 : short_name3="Apply to Typical price, (high+low+close)/3"; break; case 6 : short_name3="Apply to Weighted close price, (high+low+close+close)/4"; break; default : Apply=0; short_name3="Apply to Close price"; } IndicatorShortName("MACD("+short_name1+FastMA+"),"+short_name1+SlowMA+"),"+short_name2+SignalMA+")) "+short_name3); SetIndexLabel(0,"Oscillator"); SetIndexLabel(1,"Oscillator"); SetIndexLabel(2,"Signal"); SetIndexLabel(3,"MACD"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Averages Convergence/Divergence | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) return(-1); //---- 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++) { ind_buffer4[i]=iMA(NULL,Timeframe,FastMA,0,MA_Method,Apply,i)-iMA(NULL,Timeframe,SlowMA,0,MA_Method,Apply,i); } //---- signal line counted in the 2-nd buffer for(i=0; i<limit; i++) { ind_buffer3[i]=iMAOnArray(ind_buffer4,Bars,SignalMA,0,SignalMA_Method,i); } //---- done //---- signal line counted in the 3-rd buffer for(i=0; i<limit; i++) { ind_buffer1[i]=ind_buffer4[i]-ind_buffer3[i]; } for(i=0; i<limit-1; i++) { if (ind_buffer1[i]<ind_buffer1[i+1]) ind_buffer2[i]=ind_buffer1[i]; else ind_buffer2[i]=0; } //---- done return(0); }

  • MT4のポジションの保有状況の確認方法について

    MT4で現在取得中のポジションが、逆指値や利益確定注文に到達し、 既に決済されているかどうか確認するコードを教えて頂けないでしょうか。 いろいろなやり方がありそうですが、複雑な方法ではなく、 チケットNoを直接指定し、確認できるなど、わかりやすそうなのが良いです。 よろしくお願いします。