Hilfe bei der Codierung - Seite 212

 
zoroxzyad:
ican verwenden lwma so, wenn ich die Periode zu 30 in Rumpf, was mv sollte ich in das Diagramm zwei ma oder nur eine mit howmuch Zeitraum iam nicht gut in Mathe und danke sehr sehr viel Mann auf Ihre Bemühungen setzen wollen

zoroxzyad

Sie können nicht nur den gleitenden Durchschnitt verwenden. Sie müssen die Formel aus dem Beitrag vor verwenden

 

Gibt es schon ein Handbuch für den neuen Metatrader 4?

Oder werden sie jemals eine machen?

 
techmac:
Gibt es schon ein Handbuch für den neuen Metatrader 4 oder wird es jemals eines geben?

Nicht dass ich wüsste. Ich nehme an, es wird welche geben (zu einem bestimmten Zeitpunkt der Entwicklung).

 

Mladen, im Anhang finden Sie einen von Ihnen modifizierten Indikator, der Crossover-Signale auf dem Hauptdiagramm anzeigt.

Dieser Code ist von der neuen Version.

arrUp[CB] = EMPTY_VALUE;

arrDn[CB] = EMPTY_VALUE;

state[CB] = state[CB+1];

if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;

if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;

if (state[CB]!=state[CB+1])

{

if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;

if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;

}

Gibt es eine einfache Möglichkeit zu erklären, wie dieser Code die Signale einfügt?

Ich danke Ihnen.

Dateien:
 
michaelB:
Mladen, im Anhang finden Sie einen von Ihnen modifizierten Indikator, der Crossover-Signale im Hauptdiagramm anzeigt.

Dieser Code stammt aus der neuen Version.

arrUp[CB] = EMPTY_VALUE;

arrDn[CB] = EMPTY_VALUE;

state[CB] = state[CB+1];

if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;

if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;

if (state[CB]!=state[CB+1])

{

if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;

if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;

}

Gibt es eine einfache Möglichkeit zu erklären, wie dieser Code die Signale einfügt?

Ich danke Ihnen.

Michael

Er sucht nach einer Kreuzung von Werten in zwei Puffern: TrendBuffer und LoBuffer. Er markiert den aktuellen Zustand der beiden: wenn TrendBuffer > LoBuffer ist, setzt er den Zustand auf 1 und wenn TrendBuffer < LoBuffer ist, setzt er den Zustand auf -1.

Wenn der Status des aktuellen Balkens sich vom Status des vorherigen Balkens unterscheidet, bedeutet dies, dass ein Kreuz vorliegt. Und dann zeichnet es einen Pfeil auf dem Chart

 

Auch lästige Lehrer wieder, bitte setzen Sie diesen Indikator in MT4 Indikatoren umgewandelt, danke!

farbbalken_hlc.mq5

Dateien:
 
mladen:
Michael

Es sucht nach einer Kreuzung von Werten in zwei Puffern: TrendBuffer und LoBuffer. Es markiert den aktuellen Zustand der beiden: wenn TrendBuffer > LoBuffer ist, setzt es den Zustand auf 1 und wenn TrendBuffer < LoBuffer ist, setzt es den Zustand auf -1.

Wenn sich der Status des aktuellen Balkens vom Status des vorherigen Balkens unterscheidet, bedeutet dies, dass es ein Cross gibt. Und dann wird ein Pfeil auf dem Chart gezeichnet

OK, das erklärt TrendBuffer und LoBuffer.

Aber wie funktionieren arrUp und arrDn?

Warum erscheinen die Signale bei bestimmten Kerzen und nicht bei jeder Kerze?

Nochmals vielen Dank.

 
michaelB:
OK, das erklärt TrendBuffer und LoBuffer.

Aber wie funktionieren arrUp und arrDn?

Warum erscheinen die Signale bei bestimmten Kerzen und nicht bei jeder Kerze?

Nochmals vielen Dank.

michael

Stellen Sie sich eine Sequenz wie diese vor (1 wenn TrendBuffer > LoBuffer, -1 wenn TrendBuffer < LoBuffer)

11111111-1-1-1-1-1-1-1-111111111

Die Pfeile müssen nur gezeichnet werden, wenn 1 zu -1 wird oder wenn -1 zu 1 wird (wenn sich der "Zustand" ändert). Deshalb gibt es eine Zeile, die dies überprüft (diese Zeile: if (state[CB] !=state[CB+1]) ). Wenn sich also der Zustand ändert, wird der Pfeil gezeichnet, andernfalls muss der Pfeil gar nicht gezeichnet werden.

 

Hallo mladen,

ich hoffe, du hast so kurz vor Jahresende noch Zeit.

Der untenstehende Code bezieht sich auf die zuletzt gestellte Frage von mir. Er trailt 0,8 Pips für eine Order nach dem Ziel von 2 Pips im Plus.

Aber wie kann ich es ändern, so dass es alle Aufträge überprüft und Trails für sie einzeln?

Ich danke Ihnen sehr! Tolle Arbeit, die Sie hier leisten.

int start()

{

//----

if (OrdersTotal() == 0) {

isStopLoss = false;

}

for(int i=0; i<=OrdersTotal(); i++) {

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {

continue;

}

if(OrdersTotal() == 0) {

continue;

}

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(isStopLoss == true) {

if(OrderType() == OP_BUY) {

if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);

if(OrderStopLoss() >= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

} else if(OrderType() == OP_SELL) {

if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich

if(OrderStopLoss() <= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

}

lastStopLoss = OrderStopLoss();

continue;

}

if(OrderType() == OP_BUY) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);

} else if(OrderType() == OP_SELL) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);

}

lastStopLoss = OrderStopLoss();

}

//----

return(0);

}
 
arroganzmaschine:
Hallo mladen,

Ich hoffe, Sie haben so kurz vor Ende des Jahres Zeit.

Der Code unten hat Bezug auf die letzte Frage von mir gestellt. Er trailt 0,8 Pips für eine Order nach dem Ziel von 2 Pips im Plus.

Aber wie kann ich es ändern, so dass es alle Aufträge überprüft und Trails für sie einzeln?

Ich danke Ihnen sehr! Tolle Arbeit, die Sie hier leisten.

int start()

{

//----

if (OrdersTotal() == 0) {

isStopLoss = false;

}

for(int i=0; i<=OrdersTotal(); i++) {

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {

continue;

}

if(OrdersTotal() == 0) {

continue;

}

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(isStopLoss == true) {

if(OrderType() == OP_BUY) {

if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);

if(OrderStopLoss() >= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

} else if(OrderType() == OP_SELL) {

if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {

if(isTrailing == true) {

if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {

OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);

lastStopLoss = OrderStopLoss();

//isTrailing = true;

continue;

}

}

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich

if(OrderStopLoss() <= OrderOpenPrice()) {

isTrailing = true;

}

lastStopLoss = OrderStopLoss();

}

}

lastStopLoss = OrderStopLoss();

continue;

}

if(OrderType() == OP_BUY) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);

} else if(OrderType() == OP_SELL) {

isStopLoss = true;

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);

}

lastStopLoss = OrderStopLoss();

}

//----

return(0);

}

arroganzmaschine

Schauen Sie sich die Art und Weise an, wie Trailing Stops in diesem EA verwaltet werden: https: //www.mql5.com/en/forum/181334. Ich denke, er kann Ihnen helfen, da er alle Elemente (einschließlich der Fehlerprüfung) enthält, die für die Handhabung von Trailing-Stop-Loss erforderlich sind.