Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Hilfe bei einer Schleife (http://www.expert-advisor.com/forum/showthread.php?t=6061)

T.P. 25.03.18 19:09

Hilfe bei einer Schleife
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, zu Vereinfachung ein einfacher MA Cross Code.

Ich möchte gerne eine Schleife im Indikator erstellen die sagt:

Wenn ein Buy Signal vorliegt sende einen Pfeil.
Warte dann bis ein Sell Signal vorliegt.

Wenn ein Sell Signal vorlag dann soll erst wieder ein Buy Signal mit Pfeil auftreten dürfen.

Sozusagen soll der Pfeil nur am Anfang erscheinen und nicht mehrfach.
Das ganze als Schleife.

Mir fehlt irgendwie die Idee der Umsetzung der Schleife...

Für eure Hilfe bin sehr ich dankbar : )

AVT 25.03.18 20:12

Ein CrossOver geht mit dem Vergleich der vorigen Werte und der jetzigen Werte:
War der vorige Ma1 unter dem vorigen Ma2 und ist der jetzige Ma1 über dem jetzigen Ma2, dann hat er gekreuzt.
Hilft das schon? AVT

T.P. 25.03.18 20:34

Danke dir.

Der Code war nur so gewählt der einfachheit.

Ich möchte das gerne mit einer Schleife lösen da viele Indikatoren ja nicht dauerhaft ein Signal an der vorherigen Kerze zeigen..

Also fällt die Option leider weg....

Eine 2te andere Möglichkeit war auch...

PHP-Code:

  if (EMA10L EMA20L && wechsel1==0)

         { 
           
wechsel1=1;
           
wechsel2=0;
           
CrossUp[i-1] = Low[i-1] - Range*0.10;  }
      
      
      else if  (
EMA10L EMA20L && wechsel2==0
            
         {
          
wechsel2=1;
          
wechsel1=0;
          
CrossDown[i-1] = High[i-1] + Range*0.10; }  
  } 

Problem ist dann das er es nur im Backtest richtig macht aber auf den Chart gezogen falsch anzeigt in der Vergangenheit..
Im Live modus funktioniert das ganze dann.. Aber zur Nachbetrachtung halt schlecht..

Deswegen dachte ich man kann da irgendwie eine Schleife schreiben..

T.P. 26.03.18 12:37

Hm.. Niemand der eine Idee hat?
Ich hab es nicht so raus mit den Schleifen Funktionen..

next user 26.03.18 14:03

Zitat:

Zitat von T.P. (Beitrag 40715)
... falsch anzeigt in der Vergangenheit...

Meinst du damit, das er mit deinem Code dann nicht den ersten zeigt, sondern den letzten?

Du willst also einfach immer abwechselnd rot / blau haben, diese dann aber jeweils bei dem ersten mit Pfeil markieren?

T.P. 26.03.18 14:37

Liste der Anhänge anzeigen (Anzahl: 2)
Ja genau hier der code mit dem Wechsel.

Ist eben Live und im Backtest ok aber wenn man es auf den Chart zieht ist es in der Vergangenheit falsch angeziegt.

Deswegen hätte ich gerne was wie ne Schleife.

Man hat ja auch manchmal Signale die unregelmäßig auftreten siehe Bild..

Deswegen soll der Code auch nicht einfach nur die letzte Kerze nach einem Pfeil absuchen.
Man hätte ja dann trozdem in einem Aufwärtstrend mehrere Blaue Pfeile wegen der lücken..

T.P. 26.03.18 14:52

Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht nochmal hier zum besseren Verständnis. In dem Bild sind die Pfeile markiert die ich angezeigt haben möchte.

Dies geht glaube ich nur in einer Schleife..
Indem man sagt:

If Buysignal {Pfeil}

warte bis Sell Signal

und erst dann kannste wieder einen Pfeil machen..

So in Worten oder wie mit dem Wechsel halt beschrieben.. Ich weiß eben nicht wie man das als Schleife formuliert..

traderdoc 26.03.18 15:14

Auch hier mal was Grundsätzliches:

Wat is ne Schleife?

Allgemein ist man vom Ausgangspunkt beginnend, am Ende der Schleife wieder automatisch am Ausgangspunkt - ganz einfach.

Für eine programmtechnsiche Schleife zitiere ich einfach mal Wiki:
"Eine Schleife (auch „Wiederholung“ oder englisch loop) ist eine Kontrollstruktur in Programmiersprachen. Sie wiederholt einen Anweisungs-Block – den sogenannten Schleifenrumpf oder Schleifenkörper –, solange die Schleifenbedingung als Laufbedingung[Anm 1] gültig bleibt bzw. als Abbruchbedingung nicht eintritt. Schleifen, deren Schleifenbedingung immer zur Fortsetzung führt oder die keine Schleifenbedingung haben, sind Endlosschleifen."

Eine if-Abfrage sieht von der Struktur her mindestens so aus:
Code:

if (x == y) z = a;
aber selbst bei verschachtelten Schleifen wie:
Code:

if (x == y) {                        //Anfangspunkt
  if (a + b < c) {
      Mach_Irgend_Was();
  } else {
      Na_Dann_Eben_Nicht();
  }
} else z = a;                        // Endpunkt

Man wird nie direkt den Anfangspunkt (nach Erreichen des Endpunktes) wieder erreichen. Nicht über eine if-Struktur!

So und nun denk bitte noch mal in Ruhe darüber nach, was genau und wann geschehen soll.

traderdoc

next user 26.03.18 15:45

Liste der Anhänge anzeigen (Anzahl: 1)
Doc,

falls du auf seinen geposteten Code oben bezug nimmst, das meinte er nicht mit einer Schleife. Lediglich eine Ergänzung seines Codes,
welcher in einer Schleife steckt.

=== === === === === === === === === === === ===

T.P.

Für die richtige Anzeige kannst du z.B. die Schleife einfach umdrehen. Habs kurz auf die schnelle gemacht (Fehler vorbehalten... :D)

T.P. 26.03.18 16:48

Next User Vielen Dank!!!

Jetzt muss ich mir den Code nochmal richtig anschauen. Und meinen Fehler verstehen.

Danke!


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:50 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum