• 締切済み

ブログにプログラムのソースをのせると 左によって困ってます。

ブログにプログラムのソースをのせると 左によって困ってます。 たとえば 本当は 左が 開いている 行もあるのに 左につまります。 <blockquote> //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); Order = SIGNAL_NONE; //+------------------------------------------------------------------+ </blockquote> 左が 開いていて 読みやすくなっているソースのまま ブログに 載せる方法を 教えてください。

  • uhron
  • お礼率44% (61/136)

みんなの回答

  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.1

左に詰まるのは半角スペースをそのまま入れてるからでしょうが、テキストの形でそのままということであれば、<pre></pre>で囲めばできます。

uhron
質問者

お礼

一旦〆切ります。 ありがとう。

uhron
質問者

補足

回答ありがとうございます。 できました!! たしかに できるようになりましたが  自動改行 されなくなりました。 しょうがないかな?

関連するQ&A

  • 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プログラム、MACD と Histogram

    下の MT4プログラム、 MACD と Histogram を 単に 2本 の EMA と そのHistogram に 変更したいのですが、変更関連箇所のプログラムを教えて下さい。宜しくお願いいたし ます。 //---- indicator settings #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Aqua #property indicator_color2 Red #property indicator_color3 Green #property indicator_color4 Red //---- indicator parameters extern int FastEMA=12; extern int SlowEMA=26; extern int SignalSMA=9; //---- indicator buffers double ind_buffer1[]; double ind_buffer2[]; double HistogramBufferUp[]; double HistogramBufferDown[]; int flagval1 = 0; int flagval2 = 0; //---- variables //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings // IndicatorBuffers(3); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID); SetIndexBuffer(0,ind_buffer1); SetIndexDrawBegin(0,SlowEMA); SetIndexStyle(1,DRAW_LINE,STYLE_DOT); SetIndexBuffer(1,ind_buffer2); SetIndexDrawBegin(1,SignalSMA); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexBuffer(2,HistogramBufferUp); SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID); SetIndexBuffer(3,HistogramBufferDown); // SetIndexDrawBegin(2,SlowEMA + SignalSMA); //---- name for DataWindow and indicator subwindow label IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"Signal"); SetIndexLabel(2,"Histogram"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Averages Convergence/Divergence | //+------------------------------------------------------------------+ int start() { int limit; double temp; 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_buffer1[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++) ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i); // ind_buffer2[i] = alpha*ind_buffer1[i] + alpha_1*ind_buffer2[i+1]; for(i=0; i<limit; i++) { HistogramBufferUp[i] = 0; HistogramBufferDown[i] = 0; temp = ind_buffer1[i] - ind_buffer2[i]; if (temp >= 0) HistogramBufferUp[i] = temp; else HistogramBufferDown[i] = temp; } //---- done return(0); }

  • MT4 ストキャスティクス

    下記、MT4ストキャスティクスのプログラムなのですが、下記(1)(2)(3)の条件を満たすには、どのようにプログラムを変更したらよいのでしょうか。 詳しい方、教えてください。 (1)Alertを出すには。 (2)Soundを1度だけ鳴らすには (3)Soundを鳴らし続けるには 先日、プログラムに詳しい方からスローの方でご教授いただいたのですが、その方への連絡の取り方がわからないため、どなたかご教授ください。お願いします。 #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 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 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 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 スローストキャスティクスについて

    下記MT4のスローストキャスティクスのプログラムなのですが、クロスした際にサウンドを鳴らすには、 どのようにプログラムを変えたら良いのでしょうか?どなたか詳しい方、ご教授願います。 詳しい方からすれば、なんてことないことなのですが、全くの初心者で困っています。 どなたか、どうぞよろしくお願いします。 #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 2 #property indicator_color1 LightSeaGreen #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 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); } //+------------------------------------------------------------------+

  • 変数の定義もれ?

    稚拙なEAをつくってみました。変数が定義されていない箇所が一か所あるというエラーメッセージがでます。売りポジションのストップロスあたりのようなのですが、どこかわかりません。どなたかよろしくお願いいたします。(安易に聞くなと怒られそうですが、3日考えてもわかりません。よろしくお願いします。) ?????????????????????????????????????????????????????????????????????????? //パラメーターの設定// extern double Lots = 1.0; //取引ロット数 extern int Slip = 10; //許容スリッページ数 extern string Comments = ""; //コメント extern int TP =20 ; //利益確定ポイント数 extern int SL =15 ; //ストップロスポイント数 //変数の設定// int Ticket_L = 0; //買い注文の結果をキャッチする変数 int Ticket_S = 0; //売り注文の結果をキャッチする変数 int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数 double st_2_60 = 0; //60分足の2本前のバーのストキャスティクス double st_1_60 = 0; //60分足の1本前のバーのストキャスティクス double st_2_15 =0; //15分足の2本前のバーのストキャスティクス double st_1_15 =0; //15分足の1本前のバーのストキャスティクス double signal_2_60 =0; //60分足の2本前のバーのシグナル double signal_1_60 =0; //60分足の1本前のバーのシグナル double signal_2_15= 0; //15分足の2本前のバーのシグナル double signal_1_15= 0; //15分足の1本前のバーのシグナル int start() { st_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,2); st_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,1); st_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,2); st_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,1); signal_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,2); signal_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,1); signal_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,2); signal_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,1); //買いポジションの利益確定 OrderSelect(Ticket_L,SELECT_BY_TICKET); if( (OrderOpenPrice()+TP*Point<=Bid) &&(Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //売りポジションの利益確定 OrderSelect(Ticket_S,SELECT_BY_TICKET); if( (OrderOpenPrice()-TP*Point>=Ask) &&(Ticket_S!= 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S==1 ) {Ticket_S = 0;} } //買いポジションのストップロス OrderSelect(Ticket_L,SELECT_BY_TICKET); if( (OrderOpenPrice()-SL*Point>=Bid) &&(Ticket_L!=0 && Ticket_L!=-1)) { Exit_L=OrderClose(Ticket_L,Lots,Bid,Slip,Red); if(Exit_L==1){Ticket_L=0;}   //売りポジションのストップロス OrderSelect(Ticket_S,SELECT_BY_TICKET); if( (OrderOpenPrice()+SL*Point<=Ask) &&(Ticket_S != 0 && Ticket_S != -1)) { Exit_S=OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if(Exit_S==1){Ticket_S=0;} //買いポジションのエグジット if( st_1_15 <= 25 && Ticket_L != 0 && Ticket_L != -1) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //売りポジションのエグジット if( st_1_15 >=75 && Ticket_S != 0 && Ticket_S != -1 ) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } //買いエントリー if( st_2_60 > 20 && st_1_60 > st_2_60 && st_1_60 < 70 && st_2_15 > 20 && st_1_15 > st_2_15 && st_1_15 < 70 && st_1_15 >= signal_1_15 && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } //売りエントリー if( st_2_60 < 80 && st_1_60 < st_2_60 && st_1_60 >30 && st_2_15 < 80 && st_1_15 <= st_2_15 && st_1_15 <= signal_1_15 && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); } // the end.

  • 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);

  • MACD

    下記、MACDを表示するとMACDラインは、EMA表示だと思うのですが、SignalラインがSMAで表示されているような気がします。プログラム上、EMA、SMAの表記がないので、どこを変更すれば、SignalラインがEMAになるのかわかるかた教えてください。 #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 DeepSkyBlue #property indicator_width1 2 #property indicator_color2 Red #property indicator_width2 2 #property indicator_level1 0 #property indicator_levelcolor White //---- input parameters extern int fast_Period = 12; extern int slow_Period = 26; extern int signal_Period = 9; extern string AlertSound = "alert.wav"; //---- buffers double Buffer1[]; double Buffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE,1,2); SetIndexBuffer(0,Buffer1); SetIndexLabel(0,"Main"); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,Buffer2); SetIndexLabel(1,"Signal"); //---- return(0);} //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() {int counted_bars = IndicatorCounted(); int limit = Bars - counted_bars; for(int i=0; i < limit; i++) {Buffer1[i] = iMACD(NULL, 0, fast_Period, slow_Period,signal_Period, PRICE_CLOSE,MODE_MAIN , i); Buffer2[i] = iMACD(NULL, 0, fast_Period, slow_Period,signal_Period, PRICE_CLOSE,MODE_SIGNAL , i); } if(Buffer1[1] < Buffer2[1] && Buffer1[0] > Buffer2[0]) { PlaySound(AlertSound); ObjectDelete("BuySignal"); ObjectCreate("BuySignal",OBJ_ARROW,0 ,Time[0] ,Low[0]-10*Point); ObjectSet("BuySignal",OBJPROP_ARROWCODE, 217); ObjectSet("BuySignal",OBJPROP_COLOR, Blue); } else if(Buffer1[1] > Buffer2[1] && Buffer1[0] < Buffer2[0]) {PlaySound(AlertSound); ObjectDelete("SellSignal"); ObjectCreate("SellSignal",OBJ_ARROW,0 ,Time[0] ,High[0]+10*Point); ObjectSet("SellSignal",OBJPROP_ARROWCODE, 218); ObjectSet("SellSignal",OBJPROP_COLOR, Red); } //Comment ("MAIN: ",Buffer1[0]," / SIGNAL: ",Buffer2[0]); return(0);} //+------------------------------------------------------------------+