Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 876
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Größe des Arrays ist Null. Vergessen Sie nicht ArrayResize(), oder setzen Sie einfach die richtige Größe für das Array
Hallo,
Das Bild zeigte:
Erstes Fenster Volumenindikator, dann Geldflussindex(10) oben drauf.
Ich habe einen separatenIndikator, wo ich wieder nehmen Volume, neu zu berechnen, die mouwing mit Volume und versucht zu tun, wie im ersten Fenster - 25%, 50%, 75%.
Ich habe es so versucht, wie ich es gemacht habe, aber es sah nicht gut aus.
Wenn jemand damit Probleme hatte, teilen Sie uns bitte Ihre Vorschläge mit.
Danke
#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); }
Er sprach von der Minus-Sekunden-Leiste. Und der Durchschnittswert der Grenzwerte. Er will sich über mich lustig machen, denke ich. Ich würde ihm sagen, dass er sich selbst ficken soll, du weißt, was ich meine :)
Und anevillive und artmedia70 ein großes Dankeschön. Für Ihre Geduld und Ihre Zeit. Ich bin sicher, dass das nicht nur meine Meinung über Sie ist. Jeder, der diesen Thread aufruft, bittet um Hilfe und bekommt sie hauptsächlich von Ihnen. Vielen Dank!
Hallo, liebe Berufstätige, es ist schon lange her, dass ich mich bei Ihnen gemeldet habe
Der Punkt ist, es ist ein Expert Advisor mit 2 muwks Kreuzung und niemand mit der Eröffnung einer Bestellung gestört
void Handel()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
sonst
und so weiter...
d.h. bei Überschreiten der Distanz einen Auftrag eröffnen
Ich brauche einen Code, um den Zeitpunkt der letzten Überfahrt zu ermitteln ...
dann vom aktuellen Moment bis zum Zeitpunkt in der Historie nach einem Auftrag innerhalb eines bestimmten Zeitraums suchen... und einen Auftrag eröffnen, wenn er keinen gefunden hat
ich habe den Code der Tracer-Indikatoren zu diesem Zweck untersucht, dort scheint alles klar zu sein
aber ich weiß nicht, wie ich den ersten Balken nach der Kurvenkreuzung zeitlich so einstellen kann, dass er der ganz rechte ist
Ich bin der Meinung, dass ein Forte-Operator erforderlich ist, aber ich kann ihn nicht formulieren
Das ist nicht der richtige Weg. Rufen Sie iCustom für alle 3 Puffer auf, schreiben Sie jeden Wert in eine eigene Variable und machen Sie dann mit diesen Werten, was Sie wollen.
Für die Bollinger-Streifen, für den zweiten Balken, nach dem Beispiel in der Hilfe, brauchen Sie nicht zu deaktivieren es:
Ich danke Ihnen.
Aber da ich Analphabet bin, muss ich ständig in meinem Handbuch nachsehen und habe Folgendes herausgefunden: Ein benutzerdefinierter Indikator ist ein Programm, das nach dem Algorithmus des Autors geschrieben wurde. Und in der Anleitung steht, dass iCustomden Wert des angegebenen benutzerdefinierten Indikators zurückgibt.
Aber ich verwende keine benutzerdefinierten (d.h. von mir entwickelten) Indikatoren.
Ich muss die Werte der Standardindikatoren, wenn ich sie so nennen kann, abrufen: Gleitender Durchschnitt, Bollinger-Bänder und Stochastik-Oszillator mit den von mir angegebenen Parametern. Natürlich mache ich es "aus dem Bauch heraus" - das erste, was ich gefunden habe, wird angewendet, aber die von Ihnen vorgeschlagene Variante passt mir auch nicht.
Gibt es keine Lösung, ohne all diese Puffer, Arrays und Schleifen zu verwenden? In ihnen bin ich wie ein Felsbrocken im Meer - ich versinke sofort.
Hallo, liebe Berufstätige, es ist schon lange her, dass ich mich bei Ihnen gemeldet habe
Der Punkt ist, es ist ein Expert Advisor mit 2 muwks Kreuzung und niemand mit der Eröffnung einer Bestellung gestört
void Handel()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
sonst
und so weiter...
d.h. bei Überschreitung der Distanz einen Auftrag eröffnen
Ich brauche einen Code, um den Zeitpunkt der letzten Überfahrt zu ermitteln ...
dann vom aktuellen Moment bis zum Zeitpunkt in der Historie nach einem Auftrag innerhalb eines bestimmten Zeitraums suchen... und einen Auftrag eröffnen, wenn er keinen gefunden hat
ich habe den Code der Tracer-Indikatoren zu diesem Zweck untersucht, dort scheint alles klar zu sein
aber ich weiß nicht, wie ich den ersten Balken nach der Kurvenkreuzung zeitlich so einstellen kann, dass er der ganz rechte ist
Ich bin der Meinung, dass ein Forte-Operator erforderlich ist, aber ich kann ihn nicht formulieren
Dieser Expert Advisor arbeitet nicht mit einer Schnittmenge. Das Kriterium ist wie folgt: Wenn der schnelle МА um X Pips höher ist als der langsame und es keine offene Position gibt, eröffnen Sie sie auf dem Markt.
Um die Kreuzung zu finden, sollte man immer zwei Werte nehmen - den schnellen/langsamen MA vor der Kreuzung und den schnellen/langsamen MA nach der Kreuzung, um herauszufinden, wann sie sozusagen die Plätze tauschen. Mit anderen Worten
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - das schnelle МА hat das langsame von unten nach oben zwischen dem 1. und 2.
In einer Endlosschleife, von Null bis zur Erkennung der Kreuzung, wird es X+1 Bar sein, und Sie brauchen die Zeit von Bar X, das heißt, der letzte Bar nach der Kreuzung.
Ich danke Ihnen.
Aber da ich Analphabet bin, muss ich mich ständig durch das Lehrbuch wühlen, und das habe ich herausgefunden: Ein benutzerdefinierter Indikator ist ein Programm..., das nach dem Algorithmus des Autors geschrieben wurde. Und in der Anleitung steht, dass iCustomden Wert des angegebenen benutzerdefinierten Indikators zurückgibt.
Aber ich verwende keine benutzerdefinierten (d.h. von mir entwickelten) Indikatoren.
Ich muss die Werte der Standardindikatoren, wenn ich sie so nennen kann, abrufen: Gleitender Durchschnitt, Bollinger-Bänder und Stochastik-Oszillator mit den von mir angegebenen Parametern. Natürlich mache ich es "aus dem Bauch heraus" - das erste, was ich gefunden habe, wird angewendet. Aber die von Ihnen vorgeschlagene Variante scheint mir auch nicht geeignet.
Gibt es keine Lösung, ohne all diese Puffer, Arrays und Schleifen zu verwenden? Ich bin wie ein Felsbrocken im Meer - ich versinke sofort darin.
Hallo, liebe Berufstätige, es ist schon lange her, dass ich mich bei Ihnen gemeldet habe
Der Punkt ist, es ist ein Expert Advisor mit 2 muwks Kreuzung und niemand mit der Eröffnung einer Bestellung gestört
void Handel()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
sonst
und so weiter...
d.h. bei Überschreiten der Distanz einen Auftrag eröffnen
Ich brauche einen Code, um den Zeitpunkt der letzten Überfahrt zu ermitteln ...
dann vom aktuellen Moment bis zum Zeitpunkt in der Historie nach einem Auftrag innerhalb eines bestimmten Zeitraums suchen... und einen Auftrag eröffnen, wenn er keinen gefunden hat
ich habe den Code der Tracer-Indikatoren zu diesem Zweck untersucht, dort scheint alles klar zu sein
aber ich weiß nicht, wie ich den ersten Balken nach der Kurvenkreuzung zeitlich so einstellen kann, dass er der ganz rechte ist
Ich bin der Meinung, dass ein Forte-Operator erforderlich ist, aber ich kann ihn nicht formulieren