Eigentlich ist das zu wenig Code, aber schau Dir mal die Werte an von ToCopy-1, ToCopy-2, ...
Ich verstehe nicht ganz, sagt dieser Wert nicht einfach aus, wie viele Werte kopiert werden sollen?
Ich verstehe nicht ganz, sagt dieser Wert nicht einfach aus, wie viele Werte kopiert werden sollen?
In den Docs steht, in welcher Richtung die Werte sind, daher nicht nur das 0-Ende testen sondern auch das andere.
- www.mql5.com
Bin mir ja nicht sicher, aber müsste es nicht tocopy + 1 sein, das 0te element wird ja auch kopiert
Ein Array mit Größe n läuft von 0 .. (n-1). Ein [n] würde zu einem Array-Fehler führen.
Etwas mehr Code wäre hilfreich gewesen. ich sehe absolut kein Problem:
#define TFRAME ENUM_TIMEFRAMES #define APRICE ENUM_APPLIED_PRICE input TFRAME inpTimeframe = PERIOD_CURRENT; //BB Timeframe input int inpBBPeriod = 20; //BB Period input double inpBBDeviation = 2; //BB Deviation input int inpBBShift = 0; //BB Shift input APRICE inpAppliedPrice= PRICE_CLOSE; //BB Price double buBBUpper[]; double buBBMiddle[]; double buBBLower[]; int bbHandle; int toCopy=2; int toDisp=0; int OnInit() { bbHandle = iBands(_Symbol,inpTimeframe,inpBBPeriod,inpBBShift,inpBBDeviation,inpAppliedPrice); if(bbHandle==INVALID_HANDLE) return(INIT_FAILED); ArraySetAsSeries(buBBUpper, true); ArraySetAsSeries(buBBMiddle,true); ArraySetAsSeries(buBBLower, true); return(INIT_SUCCEEDED); } void OnTick() { if(CopyBuffer(bbHandle,0,0,toCopy,buBBUpper ) != toCopy) return; if(CopyBuffer(bbHandle,1,0,toCopy,buBBLower ) != toCopy) return; if(CopyBuffer(bbHandle,2,0,toCopy,buBBMiddle) != toCopy) return; Comment("\nUpper: " + DoubleToString(buBBUpper [toDisp],_Digits) + "\nMiddle: " + DoubleToString(buBBMiddle[toDisp],_Digits) + "\nLower: " + DoubleToString(buBBLower [toDisp],_Digits) ); }
Etwas mehr Code wäre hilfreich gewesen. ich sehe absolut kein Problem:
Well... es gab auch kein Problem, es war einfach nur n dummer Fehler: Ich habe den Wert von Shift und Deviation vertauscht, also war Deviation = 0 und somit konnte es ja nicht gehen.
Zu deinem Code hätte ich noch ne Frage:
Wieso schreibst du
#define TFRAME ENUM_TIMEFRAMES #define APRICE ENUM_APPLIED_PRICE input TFRAME inpTimeframe = PERIOD_CURRENT; //BB Timeframe input APRICE inpAppliedPrice= PRICE_CLOSE; //BB Price
und nicht einfach
input ENUM_TIMEFRAMES inpTimeframe = PERIOD_CURRENT; // timeframe input ENUM_APPLIED_PRICE inpAppliedPrice = PRICE_CLOSE; // type of price
Well... es gab auch kein Problem, es war einfach nur n dummer Fehler: Ich habe den Wert von Shift und Deviation vertauscht, also war Deviation = 0 und somit konnte es ja nicht gehen.
Zu deinem Code hätte ich noch ne Frage:
Die #define sind bei mir in einer separaten mqh definiert, die ich immer mit #include einbinde.
Sind einfach simple Abkürzungen, bin halt als alter Progger schreibfaul.
Klar geht
input ENUM_TIMEFRAMES inpTimeframe = PERIOD_CURRENT; // timeframe input ENUM_APPLIED_PRICE inpAppliedPrice = PRICE_CLOSE; // type of price
braucht halt mehr Platz bei den Eingabevariablen.
Wichtig ist das Erzeugen des Handles in der OnInit(). Ist sonst eine enorme Bremse falls du das in der OnTick() immer wieder neu erstellst!- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo, ich stehe gerade aufm Schlauch, weil meine BB-Arrays alle den selben Wert haben und ich finde den Fehler nicht: