![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich möchte "CLOSE PRICE" anstelle des Medianpreises in der folgenden Kodierung verwenden .... Bitte helfen Sie mir:
Vielen Dank!
int start()
{
double ClosePreis=Close[0];
int limit, i, flag, flagh, trend[5000];
double up[5000], dn[5000], medianPrice, atr;
int counted_bars = IndicatorCounted();
//---- Prüfung auf mögliche Fehler
if(gezählte_Balken < 0) return(-1);
//---- zuletzt gezählte Balken werden neu gezählt
if(gezählte_Balken > 0) gezählte_Balken--;
limit=Balken-1-gezählte_Balken;
//Drucken(limit);
//----
for (i = Bars; i >= 1; i--) {
TrendUp = EMPTY_VALUE;
TrendDown = EMPTY_VALUE;
atr = iATR(NULL, 0, Nbr_Periods, i);
//Drucken("atr: "+atr);
medianPreis = (Hoch+Tief)/2;
//Drucken("medianPreis: "+medianPreis);
up=MedianPreis+(Multiplikator*atr);
//Drucken("up: "+up);
dn=MedianPreis-(Multiplikator*atr);
//Drucken("dn: "+dn);
trend=1;
if (Close>up) {
trend=1;
if (trend == -1) changeOfTrend = 1;
//Drucken("Trend: "+Trend);
}
else if (Close<dn) {
trend=-1;
wenn (Trend == 1) changeOfTrend = 1;
//Drucken("Trend: "+Trend);
}
else if (trend==1) {
trend=1;
changeOfTrend = 0;
}
sonst wenn (trend==-1) {
trend=-1;
changeOfTrend = 0;
}
wenn (trend0) {
flag=1;
//Drucken("Flagge: "+Flagge);
}
sonst {
flag=0;
//Drucken("flagh: "+flag);
}
if (trend>0 && trend<0) {
flagh=1;
//Drucken("flagh: "+flagh);
}
sonst {
flagh=0;
//Drucken("flagh: "+flagh);
}
if (trend>0 && dn<dn)
dn=dn;
wenn (trendauf)
up=up;
wenn (flag==1)
up=medianPreis+(Multiplikator*atr);
wenn (flagh==1)
dn=medianPreis-(Multiplikator*atr);
//-- Zeichnen Sie den Indikator
if (trend==1) {
TrendUp=dn;
wenn (changeOfTrend == 1) {
TrendUp = TrendDown;
changeOfTrend = 0;
}
}
sonst wenn (Trend==-1) {
TrendDown=up;
wenn (changeOfTrend == 1) {
TrendDown = TrendUp;
changeOfTrend = 0;
}
}
if (Trend==1 && Trend==-1) {
UpBuffer = iLow(Symbol(),0,i)-(3*Point);
DnPuffer = EMPTY_VALUE;
}
if (Trend==-1 && Trend==1) {
UpBuffer = EMPTY_VALUE;
DnBuffer = iHigh(Symbol(),0,i)+(3*Punkt);
}
}
WindowRedraw();
//----
return(0);
}
Ich möchte " CLOSE PRICE" anstelle des Medianpreises in der folgenden Kodierung verwenden .... Bitte helfen Sie mir:
Herzlichen Dank
int start()
{
double ClosePreis=Close[0];
int limit, i, flag, flagh, trend[5000];
double up[5000], dn[5000], medianPrice, atr;
int counted_bars = IndicatorCounted();
//---- Prüfung auf mögliche Fehler
if(gezählte_Balken < 0) return(-1);
//---- zuletzt gezählte Balken werden neu gezählt
if(gezählte_Balken > 0) gezählte_Balken--;
limit=Balken-1-gezählte_Balken;
//Drucken(limit);
//----
for (i = Bars; i >= 1; i--) {
TrendUp = EMPTY_VALUE;
TrendDown = EMPTY_VALUE;
atr = iATR(NULL, 0, Nbr_Periods, i);
//Drucken("atr: "+atr);
medianPreis = (Hoch+Tief)/2;
//Drucke("medianPreis: "+medianPreis);
up=MedianPreis+(Multiplikator*atr);
//Drucken("up: "+up);
dn=MedianPreis-(Multiplikator*atr);
//Drucken("dn: "+dn);
trend=1;
if (Close>up) {
trend=1;
if (trend == -1) changeOfTrend = 1;
//Drucken("Trend: "+Trend);
}
else if (Close<dn) {
trend=-1;
wenn (Trend == 1) changeOfTrend = 1;
//Drucken("Trend: "+Trend);
}
else if (trend==1) {
trend=1;
changeOfTrend = 0;
}
sonst wenn (trend==-1) {
trend=-1;
changeOfTrend = 0;
}
wenn (trend0) {
flag=1;
//Drucken("Flagge: "+Flagge);
}
sonst {
flag=0;
//Drucken("flagh: "+flag);
}
if (trend>0 && trend<0) {
flagh=1;
//Drucken("flagh: "+flagh);
}
sonst {
flagh=0;
//Drucken("flagh: "+flagh);
}
if (trend>0 && dn<dn)
dn=dn;
wenn (trendauf)
up=up;
wenn (flag==1)
up=medianPreis+(Multiplikator*atr);
wenn (flagh==1)
dn=medianPreis-(Multiplikator*atr);
//-- Zeichnen Sie den Indikator
if (trend==1) {
TrendUp=dn;
wenn (changeOfTrend == 1) {
TrendUp = TrendDown;
changeOfTrend = 0;
}
}
sonst wenn (Trend==-1) {
TrendDown=up;
wenn (changeOfTrend == 1) {
TrendDown = TrendUp;
changeOfTrend = 0;
}
}
if (Trend==1 && Trend==-1) {
UpBuffer = iLow(Symbol(),0,i)-(3*Point);
DnPuffer = EMPTY_VALUE;
}
if (Trend==-1 && Trend==1) {
UpBuffer = EMPTY_VALUE;
DnBuffer = iHigh(Symbol(),0,i)+(3*Punkt);
}
}
WindowRedraw();
//----
return(0);
}Sie können ersetzen :
(Hoch+Tief)/2
durch ersetzen.
Schließen
kenwa
Von welcher Funktion des Autocheck-Symbols sprechen Sie? So etwas gibt es in diesem Code nicht
Alles, was Sie tun müssen, ist, das Symbol in das entsprechende Parameterfeld einzugeben, und es wird funktionieren (bei jedem Symbol, solange der Symbolname korrekt ist). Verwenden Sie den Indikator, den fareastol zur Verfügung gestellt hat, da er alles tut, wovon Sie sprachen, dass Sie ihn brauchenHallo mladen,
ich sehe folgendes darin:
if (ForSymbol1=="") ForSymbol1 = Symbol();
if (ForSymbol2=="") ForSymbol2 = Symbol();
if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();
if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();
if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();
einige Teile:
void checkSymbol(int limit, string ForSymbol, double& buffer[])
{
limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));
for (int i=limit; i>=0; i--)
{
int y = iBarShift(ForSymbol,timeFrame,Time);
buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);
}
}
ich kann nicht genau wissen, was es tut, wie meine Fähigkeit kann nicht wissen, seinen genauen Zweck, aber von meinem rohen erraten, es scheint, der Code ist automatisch erkennen, wenn wir externe Eingabe ein Symbol, dann zeigen auf Chart, wenn keine Eingabe ist, wird die lokale Null Chart zeigen. dann werde ich denken, wenn ich absichtlich verlassen mehrere externe Eingabe String zu leer außen (Füllen nichts gibt), wird der Indikator wiederholt (zumindest überlagern) zeigen die lokale Null Chart mehrmals? auch wie der Code anpassen, um interne voreingestellte Symbole? ich weiß nicht, wie genau zu tun, aber ich versuche, ist es wie die Anlage Weg zu tun (um die externe Eingabe Symbol Funktion / Erkennung desensibilisieren)? oder wie zu ändern, um interne voreingestellte Symbole anpassen?
Übrigens, warum wird die Version, die ich vor Seite 166 #1660 gemacht habe, immer noch in der Live-Ansicht gezeichnet? was sind die Hauptgründe für ein solches Zeichnen? Danke für Ratschläge.
Hallo mladen,
Ich sehe das hier drinnen:
if (ForSymbol1=="") ForSymbol1 = Symbol();
if (ForSymbol2=="") ForSymbol2 = Symbol();
if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();
if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();
if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();
einige Teile:
void checkSymbol(int limit, string ForSymbol, double& buffer[])
{
limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));
for (int i=limit; i>=0; i--)
{
int y = iBarShift(ForSymbol,timeFrame,Time);
buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);
}
}
ich kann nicht genau wissen, was es tut, wie meine Fähigkeit kann nicht wissen, seinen genauen Zweck, aber von meinem rohen erraten, es scheint, der Code ist automatisch erkennen, wenn wir externe Eingabe ein Symbol, dann zeigen auf Chart, wenn keine Eingabe ist, wird die lokale Null Chart zeigen. dann werde ich denken, wenn ich absichtlich verlassen mehrere externe Eingabe String zu leer außen (Füllen nichts gibt), wird der Indikator wiederholt (zumindest überlagern) zeigen die lokale Null Chart mehrmals? auch wie der Code anpassen, um interne voreingestellte Symbole? ich weiß nicht, wie genau zu tun, aber ich versuche, ist es wie die Anlage Weg zu tun (um die externe Eingabe Symbol Funktion / Erkennung desensibilisieren)? oder wie zu ändern, um interne voreingestellte Symbole anpassen?
Übrigens, warum die Version, die ich vor der Seite 166 #1660 gemacht habe, immer noch in live malt? welche grundlegenden Gründe verursachen solche repaint? Danke für Ratschläge.Sie können sich den Indikator aus diesem Beitrag ansehen: https: //www.mql5.com/en/forum/178416/page19, um zu sehen, wie einige zusätzliche Kontrollen durchgeführt werden können
für #1664, vorher lesen und herunterladen, ich kann die Codes nicht anpassen, zu fortgeschritten und komplex für mich.
für #1664, vorher lesen und herunterladen, ich kann die Codes nicht anpassen, zu fortgeschritten und komplex für mich.
Nicht alles kann in zwei Zeilen geschrieben werden. In manchen Fällen ist es unmöglich
Hallo Mladen
Im Zusammenhang mit meiner Bitte, POC und VA für ein Zielband auf der Grundlage eines bestimmten Marktprofils zu berechnen, habe ich mich so gut wie möglich bemüht. Leider habe ich nur den POC-Wert ermittelt. VA High/Low Werte zu erhalten, übersteigt meine derzeitigen Fähigkeiten.
Außerdem scheint der ursprüngliche Indikator Level Sensor zu Beginn der Woche einen Fehler in seinem Code zu haben, was zu einer schrecklichen Anzeige führt, wie Sie im beigefügten Bild sehen können. Ich kann nicht verstehen, was Grund, nur vermuten, es bezieht sich auf Konflikte zwischen MT4 Standard-Anzeige und Daten der unteren Zeitrahmen (<W1).
Bitte werfen Sie einen Blick und geben Sie mir Ratschläge, um weiterzumachen.
Herzlichen Dank,
fareastolfareastol
Diese Sache auf dem Bildschirm passiert, weil es eine Zeitlücke auf dem Chart zwischen den letzten Freitagsdaten und den ersten Sonntags- oder Montagsdaten gibt und wenn die xshift Zeit zu den Zeiten der Linie hinzugefügt wird.
Eine mögliche Lösung ist die aus dieser Version: die Anzeige zu invertieren und statt von rechts nach links von links nach rechts anzuzeigen (wie auf dem Bild). Bis jetzt habe ich noch keine Lösung für die Anzeige von rechts nach links gefunden.
Manchmal muss man nur ein bisschen nachdenken (sobald ich den vorherigen Beitrag beendet hatte, war die Idee da
)
Hier ist die "rechts-nach-links"-Lösung (soweit ich sie getestet habe, funktioniert sie jetzt gut)
Hallo!
ich habe die Standardabweichungslinie "von Hand" berechnet.
Nun möchte ich einen Kanal wie den original Deviation Channel aus dem Metatrader zeichnen.
Aber ich weiß nicht, wie ich den Faktor = 0.618 zu meiner normalen Abweichungslinie berechnen kann, damit sie wie der ursprüngliche Kanal funktioniert ...OBJPROP_DEVIATION,0.618)
Hallo Mladen,
Du erinnerst mich an viele sinnvolle Dinge und motivierst mich sehr.
Danke für alles
fareastol