Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 836

 

Danke für den Hinweis. So habe ich mir die Nachricht auch vorgestellt, sie sieht nicht gut aus. Gut zu wissen. Berichtigung der Meldung.

//+------------------------------------------------------------------+
//|                                                    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:

Ist es das, was Sie meinen?

Auch dieses Buff8[i]=iMA(NULL,60,Period1,sh 0,MODE_SMA,PRICE_CLOSE,sh);

Und fügen Sie den Code ein.

 
Roman_Bryansk:

Danke für den Hinweis. So habe ich mir die Nachricht auch vorgestellt, sie sieht nicht gut aus. Gut zu wissen. Berichtigung der Nachricht.

Es gibt magische "Löschen"- und "Bearbeiten"-Optionen unten rechts unter deinen Beiträgen, du musst nicht dasselbe in einen neuen Beitrag schreiben, du musstest es nur dort korrigieren ;)
 
evillive:
Für den Code gibt es eine Schaltfläche am oberen Rand des Nachrichtenbearbeitungsfensters oder die Kombination Strg+Alt+M, dann wird der Code schön lesbar. Und über Verluste, f-Funktion SetIndexStyle() hat eine Farbe Parameter, verwenden Sie es, fühlen sich frei.

Wenn es Ihnen nichts ausmacht, können Sie mir ein paar mehr Details nennen? Ich muss nur die Farbe und die Breite so einstellen:

# Farbe Breite Stil

0. Schwarz 0 0

1. schwarz 0 0

2. rot 2 0

3. Grün 2 0

Die Breite verschwindet immer, d.h. es ist, als ob sie immer auf die Standardeinstellung zurückgeht.

Verurteilen Sie mich nicht, ich scheine nur nicht das zu haben, was Sie haben. Auch beim Kompilieren von 2 solchen Meldungen: nicht alle Kontrollpfade geben einen Wert zurück SimpleBars.mq4 115 1.

 
Verstanden. Ich bitte um Entschuldigung. Ich habe die Dinge durcheinander gebracht.
 
Roman_Bryansk:

Wenn es Ihnen nichts ausmacht, können Sie mir ein paar mehr Details nennen? Ich muss nur die Farbe und die Breite so einstellen:

# Farbe Breite Stil

0. Schwarz 0 0

..

verschwindet immer in der Breite, d.h. es ist, als ob es immer auf die Standardeinstellungen zurückgeht.

Urteilen Sie nicht zu hart, ich scheine einfach nicht das zu haben, was Sie haben. Auch bei der Kompilierung 2 solcher Meldungen: nicht alle Kontrollpfade geben einen Wert zurück SimpleBars.mq4 115 1.


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

Das ist für den ersten Puffer in Ihrem Fall:

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

Wenn die Einstellungen nicht gespeichert werden, haben Sie möglicherweise nicht genügend Berechtigungen, um in das Terminaldatenverzeichnis zu schreiben. Dies geschieht, wenn Sie es auf der Systempartition installieren und im normalen Modus ausführen. Versuchen Sie, das Terminal im Modus /portable zu starten (der Schlüssel steht in der Startverknüpfung des Terminals).

Und ich habe immer empfohlen und werde es auch weiterhin allen Benutzern empfehlen, alle Programme, die sie können, auf einer Nicht-System-Partition zu installieren.

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


Das heißt, für den ersten Puffer in Ihrem Fall:

Wenn die Einstellungen nicht gespeichert werden, haben Sie möglicherweise keine ausreichenden Schreibrechte für das Datenverzeichnis des Terminals. Dies geschieht, wenn Sie das Programm auf der Systempartition installieren und es im normalen Modus ausführen. Versuchen Sie, das Terminal im Modus /portable zu starten (der Schlüssel ist in der Startverknüpfung des Terminals angegeben).

Und ich habe immer empfohlen und werde es auch weiterhin allen Benutzern empfehlen, alle Programme, die sie können, auf einer Nicht-System-Partition zu installieren.

Sie sind ein Zauberer ))Ersetzt durchEMPTY und alles ist in Ordnung mit den beiden Anzeigen. Ich danke Ihnen vielmals. Bezüglich "/portable": Wenn ich in die Einstellungen des Objektstrings schreibe, steht da ein falscher Pfad.
 
Roman_Bryansk:
Du bist ein Zauberer ))Ersetzt durchEMPTY und alles ist gut mit den beiden Anzeigen. Ich danke Ihnen vielmals. Bezüglich "/portable": Wenn ich in den Einstellungen des Objekts String schreiben nicht den richtigen Pfad.
Ich muss nur den Schlüssel hinter die Anführungszeichen setzen.
 
Kirill875:
Das Terminal bleibt nach dem Kompilieren hängen. Könnten Sie mir ein Beispiel dafür zeigen, wo ich es einfügen kann?

Hier ist

Dateien:
testmtf.mq4  4 kb