どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 836

 

ご指摘ありがとうございます。そんな感じで、あまり良い印象のないメッセージだと思いました。知っておいて損はない。メッセージを修正する。

//+------------------------------------------------------------------+
//|                                                    SimpleBars.mq4|
//|                                                  excelf@gmail.com|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"

#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Red
#property  indicator_color2 Green
#property  indicator_color3 Red
#property  indicator_color4 Green

#define  SIGNAL_NONE        0//Пустой сигнал
#define  SIGNAL_BUY         1//Сигнал на покупку 
#define  SIGNAL_SELL       -1//Сигнал на продажу 
#define  SIGNAL_TRADE_ALLOW 3//Сигнал разрешающий торговлю


extern int period = 6;
extern bool useClose = true;
extern int width = 1;

double bufferRed1[];
double bufferGreen1[];
double bufferRed2[];
double bufferGreen2[];
double trand[];

int init() {
    IndicatorBuffers(5);
 
    SetIndexBuffer(0, bufferRed1);
    SetIndexBuffer(1, bufferGreen1);
    SetIndexBuffer(2, bufferRed2);
    SetIndexBuffer(3, bufferGreen2);
    SetIndexBuffer(4, trand);
    
    IndicatorDigits(Digits+1);
    SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(2, DRAW_HISTOGRAM, 0, width);
    SetIndexStyle(3, DRAW_HISTOGRAM, 0, width);
}


int start() {
   int counted_bars=IndicatorCounted();

   if(counted_bars > 0) {
       counted_bars--;
   }
   int limit = Bars - counted_bars;

   int j;
   double buyPrice;
   double sellPrice;
   for(int i = limit - 1; i >= 0; i--) {
        if(useClose) {
            buyPrice = Close[i];
            sellPrice = Close[i];
        } else {
            buyPrice = Low[i];
            sellPrice = High[i];
        }
        if(trand[i + 1] == SIGNAL_NONE || trand[i + 1] == EMPTY_VALUE) {
            if(Close[i] > Open[i]) {
               trand[i] = SIGNAL_BUY;
           } else {
               trand[i] = SIGNAL_SELL;
           }
        } else {
            if(trand[i + 1] == SIGNAL_BUY) {
                if(buyPrice > Low[i + 1]) {
                   trand[i] = SIGNAL_BUY;
                } else {
                   for(j = 2; j <= period; j++) {
                        if(buyPrice > Low[i + j]) {
                           trand[i] = SIGNAL_BUY;
                        break;
                        } else {
                           trand[i] = SIGNAL_SELL;
                        }
                   }
                }
            } else if(trand[i + 1] == SIGNAL_SELL) {
                if(sellPrice < High[i + 1]) {
                   trand[i] = SIGNAL_SELL;
                } else {
                    for(j = 2; j <= period; j++) {
                        if(sellPrice < High[i + j]) {
                           trand[i] = SIGNAL_SELL;
                           break;
                        } else {
                           trand[i] = SIGNAL_BUY;
                        }
                   }
                }
            }   
        }

        if(trand[i] == SIGNAL_SELL) {//RED BAR 
            bufferRed1[i]  = High[i];
            bufferGreen1[i] = Low[i]; 
            bufferRed2[i]  = MathMax(Open[i], Close[i]); 
            bufferGreen2[i] = MathMin(Open[i], Close[i]);   
        } else if(trand[i] == SIGNAL_BUY)  {
            bufferRed1[i]  = Low[i];
            bufferGreen1[i] = High[i]; 
            bufferRed2[i]  = MathMin(Open[i], Close[i]);  
            bufferGreen2[i] = MathMax(Open[i], Close[i]);    
        } 
    }
}
 
Kirill875:

そういうことですか。

また、この Buff8[i]=iMA(NULL,60,Period1,sh 0,MODE_SMA,PRICE_CLOSE,sh);

そして、コードペーストを 使用します。

 
Roman_Bryansk:

ご指摘ありがとうございます。そんな感じで、あまり良い印象のないメッセージだと思いました。知っておいて損はない。メッセージを修正する。

投稿の下の右下に魔法の「削除」と「編集」オプションがあります。新しい投稿で同じことを書く必要はなく、そこで修正すればよかったのです ;)
 
evillive:
コードについては、メッセージ編集パネルの上部にあるボタンか、 Ctrl+Alt+Mの 組み合わせで、コードがきれいに読めるようになります。また、損失については、f関数SetIndexStyle()に色のパラメータがありますので、ご自由に お使いください。

差し支えなければ、もう少し詳しく教えてください。色と幅の設定はこんな感じでいいんです。

# 色幅スタイル

0.ブラック 0 0

1.黒 0 0

2.赤2 0

3.グリーン 2 0

幅がいつも消えてしまう、つまり、いつも初期設定に戻ってしまうような感じです。

批判しないでください、私はあなたが持っているものを持っていないようです。また、このようなメッセージを2つコンパイルした場合: すべてのコントロールパスが値を返すわけではない SimpleBars.mq4 115 1.

 
了解しました。申し訳ございませんでした。いろいろとごちゃごちゃしてしまいました。
 
Roman_Bryansk:

差し支えなければ、もう少し詳しく教えてください。色と幅の設定はこんな感じでいいんです。

# 色幅スタイル

0.ブラック 0 0

..

は常に幅が消える、つまり常に初期設定に戻るような感じです。

あまり厳しく評価しないでください。私には、あなたが持っているものがないようです。また、コンパイル時にこのようなメッセージが2つあります。すべてのコントロールパスが値を返すわけではありません SimpleBars.mq4 115 1.


void  SetIndexStyle(
   int     index,       // номер линии
   int     type,        // тип
   int     style=EMPTY, // стиль линии
   int     width=EMPTY, // ширина линии
   color   clr=clrNONE  // цвет
   );

それは、あなたの場合、最初のバッファのためです。

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY,width,Red);

設定が保存されない場合は、オプションで端末のデータディレクトリに書き込むための十分なパーミッションがないことが考えられます。システムパーティションにインストールし、通常モードで実行した場合に発生します。ターミナルを/portableモードで起動してみてください(ターミナル起動 時のショートカットにキーが書いてあります)。

そして、私はいつも、そしてこれからも、すべてのユーザーに、システム以外のパーティションに、できる限りのプログラムをインストールすることを勧めていきます。

 
Простите меня за наглость)
 
evillive:


つまり、あなたの場合、最初のバッファのためです。

設定が保存されない場合は、端末のデータディレクトリへの書き込み権限が十分でない可能性があります。システムパーティションにインストールし、通常モードで実行した場合に発生します。ターミナルを/portableモードで起動してみてください(ターミナル起動時のショートカットにキーが書いてあります)。

そして、私はいつも、そしてこれからも、すべてのユーザーに、システム以外のパーティションに、できる限りのプログラムをインストールすることを勧めていきます。

あなたは魔法使いです ))EMPTYに交換し、2つのインジケーターはすべてOK です。ありがとうございました。/portable "について:オブジェクトの文字列の設定に書くと、パスが違うと言われます。
 
Roman_Bryansk:
あなたはマジシャンです ))EMPTYに交換し、2つのインジケーターはすべて正常に 動作しています。ありがとうございました。portable "について:オブジェクトの文字列の設定に書き込むと、正しいパスが書き込まれません。
引用符の後ろにキーを入れればいいんです。
 
Kirill875:
コンパイル後、端末がハングアップする。どこに入れるかの例を教えてください。

以下は

ファイル:
testmtf.mq4  4 kb