Wie programmiert man? - Seite 117

 
mystified:
Ich habe die Niveaus zum HMA hinzugefügt:

#property indicator_separate_window

#Eigenschaft indicator_buffers 2

#property indicator_color1 Schwarz

#Eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width1 2

#Eigenschaft indicator_minimum 0

#Eigenschaft indicator_maximum 100

#Eigenschaft indicator_level1 80

#Eigenschaft indicator_level2 60

#Eigenschaft indicator_level3 40

#Eigenschaft indicator_level4 20

#property indicator_levelcolor DarkSlateGray

Aber der Indikator wird nicht in einem separaten Fenster angezeigt, und jede Hilfe ist willkommen.

Weil der Indikator zwangsbegrenzt ist:

Entfernen Sie diese beiden Zeilen:

#property indicator_minimum 0

#Eigenschaft indicator_maximum 100

Levels funktioniert nur bei begrenzten Indikatoren, aber um einen begrenzten Indikator zu erstellen, muss die Berechnung die Grenzen einschließen.

Beispiel: RSI = 100-(100/(1+U/D))

Durch diese Formel wissen wir, dass sich der Indikator zwischen 0 und 100 bewegen wird, und deshalb können wir die Levels 70-30 einbeziehen, ohne befürchten zu müssen, dass sie verschwinden.

Ein weiteres Beispiel ist MACD = EMA(CLOSE, 12)-EMA(CLOSE, 26)).

Wir setzen ein Niveau auf M5 und wenn wir zu H1 wechseln, ist das Niveau höchstwahrscheinlich weg.

Wir nehmen also die gleiche Formel und nehmen einige Änderungen vor MACD = (EMA(CLOSE, 12)-EMA(CLOSE, 26))/EMA(CLOSE, 26). Und jetzt haben wir einen prozentualen Indikator. Er ist nicht begrenzt, aber wir haben weniger Wahrscheinlichkeiten, unsere Niveaus zu verlieren.

 

Danke Linuxer.

 
Ich habe einen wirklich einfachen EA erstellt. und ein System, das ich in mindestens 3 Timeframe verwenden..Mai Problem, das es nicht aufhören zu öffnen und ich will nicht zu 3 EA und 3 Chart für ein Paar haben.

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

Manchmal habe ich 3 Signale in 3 verschiedenen TF. Ich möchte alle Aufträge annehmen, aber ich möchte nur einen Auftrag pro TF und ich kann immer noch einen anderen Auftrag in einem anderen TF nehmen, wenn es noch offen ist, aber in einem anderen Bar.

Beispiel:

1 Signal in 4h

1 Signal in 1h, aber es fällt in den Balken für 4h

1 Signal in 30 min, aber nur ein Balken für 1h und 4h.

3 Signale werden offen sein.

Ich habe kein Problem damit, die magische Zahl als Filter zu verwenden.

kann mir jemand helfen? vielen Dank.

Bis jetzt habe ich folgendes gedacht:

für 30 minuten

wenn (magicnumber == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//mein Bestellungscode}

}

Ich habe keinen MT4, aber ich weiß, dass irgendetwas in der Logik oder im Code nicht richtig ist. Also Leute bitte helft mir.

Ich glaube auch, dass wir ein ähnliches Problem mit Matrixebiz haben.

Kann mir jemand bitte helfen?

 
mystified:
Dank Linuxer.

Dies ist nur das Beispiel (denn jetzt haben Sie den Oszillator HMA ) aus dem vorherigen Beitrag, noch ist es MACD, aber auf eine andere Weise berechnet.

 
 

Wie beginnt man den Handel mit der Eröffnungskerze in D1?

gibt es jemand wissen, den Code, um die EA Start offenen Handel zu fragen, wenn die neue Bar Start in D1 Zeitrahmen?

Hier ist die Logik:

in D1 TF, wenn die neue Kerze (es ist ein neuer Tag) beginnt, dann wird EA 2 Positionen öffnen, KAUFEN und VERKAUFEN mit TP=10 Pips für jede Position.

Wenn die Kerze geschlossen, dann EA schließen alle Positionen und starten Sie öffnen Position wieder für die neue Kerze.

sehr einfache Regel, aber noch kann ich nicht finden, den Code für diese einfache Regel....

Ich bin wirklich neu in MQL4 Codierung und bereits suchen und lesen viele Quelle und Forum, um mehr über MQL4 Codierung zu lernen, aber kann nicht finden, was ich brauche.

Danke vor...

 

hier ist mein Code.... bitte helfen Sie mir, es zu beheben

Ich habe versucht zu kodieren, was ich vorher gefragt habe, hier ist der Beispiel-EA-Code:

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LetzteLose=Lose;

Gewinn=0;

GewinnPip=0;

PairOrder=0;

OrdersOpened = 0;

PreviousOrders = OrdersOpened;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(Kurse, Symbol(), PERIOD_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

//kein Handel am Feiertag;

return(0);

}

sonst

{

wenn (newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int newbar()

{

double g;

int m,s,k;

m=Zeit[0]+Zeitspanne()*60-ZeitAktuell();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}

void OpenBuy()

{

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

void OpenSell()

{

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1);

}

double GetSizeLot()

{

return(Lots);

}

double GetTakeProfitBuy()

{

return(Ask+TakeProfit*Point);

}

double GetTakeProfitSell()

{

return(Bid-TakeProfit*Point);

}

Gestern Abend habe ich es auf meinen VPS hochgeladen, aber heute Morgen habe ich es überprüft, aber mein Beispiel-EA öffnet keinen Handel, kann mir hier jemand helfen, meinen Beispiel-EA zu reparieren?

btw, ich habe es auch hier angehängt

 

Warnungen, die länger dauern

Hallo, ich bin ein Neuling, der versucht, die Vorgänge zu verstehen, und jede Hilfe wird geschätzt!!

mein aktueller Indikator hat den folgenden Code für die Generierung von Alarmen, aber dieser Alarm dauert nur einen Piepton. Gibt es eine Möglichkeit, ihn für 30 oder 60 Sekunden oder zumindest etwas länger als einen Piepton zu machen?

if (setalert == 1 && shift == 0) {

Alert(Symbol(), " ", period, " ", pattern);

setalert = 0;

}

Danke

 

Umkodierung auf metatrader (Klinger Volumen Oszillator)

Der Klinger Oscillator (KO) wurde von Stephen J. Klinger entwickelt. Auf der Grundlage früherer Forschungen zum Thema Volumen, die von so bekannten Technikern wie Joseph Granville, Larry Williams und Marc Chaikin durchgeführt wurden, machte sich Herr Klinger daran, einen volumenbasierten Indikator zu entwickeln, der sowohl bei der kurz- als auch bei der langfristigen Analyse helfen sollte.

Bei der Entwicklung des KO wurden zwei scheinbar gegensätzliche Ziele verfolgt: Er sollte empfindlich genug sein, um kurzfristige Höchst- und Tiefststände zu signalisieren, und gleichzeitig genau genug, um die langfristigen Geldströme in und aus einem Wertpapier widerzuspiegeln.

Der KO basiert auf den folgenden Grundsätzen:

* Die Preisspanne (d. h. Hoch - Tief) ist ein Maß für die Bewegung, und das Volumen ist die Kraft hinter der Bewegung. Die Summe aus High + Low + Close definiert einen Trend. Akkumulation tritt auf, wenn die Summe des heutigen Tages größer ist als die des Vortages. Umgekehrt kommt es zu einer Verteilung, wenn die Summe des heutigen Tages geringer ist als die des Vortages. Wenn die Summen gleich sind, wird der bestehende Trend beibehalten.

* Das Volumen führt zu kontinuierlichen Kursveränderungen innerhalb eines Tages, die den Kauf- und Verkaufsdruck widerspiegeln. Die KO quantifiziert die Differenz zwischen der Anzahl der Aktien, die jeden Tag akkumuliert und verteilt werden, als "Volumenkraft". Eine starke, steigende Volumenkraft sollte einen Aufwärtstrend begleiten und dann im Laufe der Zeit in der letzten Phase des Aufwärtstrends und in der Anfangsphase des folgenden Abwärtstrends allmählich abnehmen. Darauf sollte eine steigende Volumenkraft folgen, die eine gewisse Akkumulation widerspiegelt, bevor sich ein Boden bildet.

* Durch die Umwandlung der Volumenkraft in einen Oszillator, der die Differenz zwischen einem exponentiell gleitenden 34-Perioden-Durchschnitt und einem 55-Perioden-Durchschnitt mit einem 13-Perioden-Trigger darstellt, kann die Kraft des Volumens in und aus einem Wertpapier leicht verfolgt werden. Der Vergleich dieser Kraft mit der Kursentwicklung kann helfen, Divergenzen bei Höchst- und Tiefstständen zu erkennen.

Auswertung

Herr Klinger empfiehlt die folgenden Richtlinien für die Verwendung des KO:

1. Die zuverlässigsten Signale treten in der Richtung des vorherrschenden Trends auf. Strenge Stop-Richtlinien (d.h. ein Nicht-Durchdringen der Nulllinie oder eine Verletzung der Triggerlinie) sollten in Kraft bleiben.

2. Das wichtigste Signal tritt auf, wenn der KO von der zugrunde liegenden Kursbewegung abweicht, insbesondere bei neuen Höchst- oder Tiefstständen im überkauften/überverkauften Bereich. Wenn eine Aktie beispielsweise einen neuen Höchst- oder Tiefststand in einem Zyklus erreicht und der KO dies nicht bestätigt, verliert der Trend möglicherweise an Schwung und nähert sich seinem Ende.

3. Befindet sich der Kurs in einem Aufwärtstrend (d. h. über einem exponentiellen gleitenden 89-Tage-Durchschnitt), sollten Sie kaufen, wenn der KO auf ungewöhnlich niedrige Niveaus unter Null fällt, nach oben dreht und seine Triggerlinie überschreitet. Befindet sich der Kurs in einem Abwärtstrend (d. h. unter einem exponentiellen gleitenden 89-Tage-Durchschnitt), verkaufen Sie, wenn der KO auf ungewöhnlich hohe Niveaus über Null ansteigt, nach unten dreht und seine Auslöselinie kreuzt.

Während der KO für das Timing von Trades in Trendrichtung gut funktioniert, ist er gegen den Trend weniger effektiv. Dies kann zu Problemen für Händler führen, die versuchen, einen Handel gegen den vorherrschenden Trend zu "scalpen". Wenn der KO jedoch in Verbindung mit anderen technischen Indikatoren verwendet wird, können bessere Ergebnisse erzielt werden. William's %R wird empfohlen, um einen überkauften/überverkauften Kurszustand zu bestätigen, und der MACD von Gerald Appel wird empfohlen, um die kurzfristige Kursrichtung zu bestätigen.

Tipp

Stephen Klinger schlägt die folgende Formel vor, um den kumulierten Geldfluss in und aus einem Wertpapier zu betrachten:

cum(kvo())

Zeichnen Sie einen gleitenden 13-Perioden-Durchschnitt der Formel als Triggerlinie für den Einstieg in Kauf- und Verkaufstransaktionen ein.

source codenya untuk trade station

Typ: Funktion, Name: VForce

Variablen: TSum(0), Trend(0), DM(0), CM(0);

TSum = Hoch + Tief + Schluss;

IF TSum > TSum[1] Then

Tendenz = 1

Andernfalls

Trend = -1;

WENN Trend = Trend[1] Dann

CM = CM + Bereich

Sonst

CM = Bereich + Bereich[1];

IF CM 0 Then

VForce = Volumen * AbsValue(2 * (DM/CM) -1) * Trend * 100;

Typ: Funktion, Name: KVO

Eingaben:

FastX(Numeric),

SlowX(Numerisch); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Typ: Indikator, Name: Klinger Volumen Oszillator

Eingaben:

FastX(34),

SlowX(55),

TrigLen(13),

Glatt(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);IF Smooth <= 1 Then Begin

Plot1(KVO(FastX, SlowX), "KVO");

Plot2(Auslöser, "KVO Auslöser");

End Else BeginPlot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");

Plot2(Summation(Trigger, Glatt), "KVO Trigger");

Ende;

Plot3(0, "Null");

IF Plot1 kreuzt oberhalb von Plot2 OR Plot1 kreuzt unterhalb von Plot2 OR

Plot2 kreuzt oberhalb von Plot3 ODER Plot2 kreuzt unterhalb von Plot3 Then

Alert = True;

Kann mir jemand helfen, diesen Code in Mql4 zu konvertieren?

Danke