![]() |
|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
Hallo.
Bin am Experimentieren. Bräuchte sozusagen ne eigene "Formel", um Werte, die kleiner als 1 sind, korrekt zum Multiplizieren und Dividieren zu nutzen und das Ergebnis dann wieder zurück zu rechnen. ( Wobei da das Ein oder Andere noch nicht ganz klar ist. ![]() ![]() Das ist der Anfangs-Teil der eigenen Berechnung, ist noch lange nicht fertig. Die soll sozusagen ohne allzu großen Aufwand mit entsprechenden Variablen gefüttert werden und sozusagen als return-Wert das Ergebnis zurück geben, damit der Indi dann damit weiter arbeiten kann. Code:
if( PR > -1.0 && PR < 1.0 ){ PR_mt=PR; mt=-1; while( PR_mt > -1.0 && PR_mt < 1.0 ){ PR_t = PR_mt * 10.0; PR_mt = PR_t; mt++;} OPZ_PR = 1.0 / PR_mt; |
|
|||
![]()
Kurz gesagt sollen Werte, die kleiner als 1 sind, so oft mit 10 multipliziert werden, bis sie nicht mehr kleiner als 1 sind. Durch diesen Wert sollen dann andere Werte dividiert werden. Das Ergebnis muss dann, wenn ich mich nicht irre, erneut so oft mit 10 multipliziert werden ( Multipl.-Vorgänge mit 10.0 -1 glaube ich
![]() ![]() Mal angenommen, ich will 2,0 durch 0,005 teilen. Dann hieße es, 0,005 so oft * 10, bis es 5,0, also nicht mehr kleiner als 1 ist. Dann 2,0 / 5,0. Das Ergebnis wär glaub ich 0,4. Das müsste dann, wenn ich mich nicht irre, wieder so oft mit 10 multipl. werden, bis es eben passt. Das soll dann ne for-Loop machen. Code:
for( Vorgänge, wie oft 0,005 * 10 gerechnet wurde -1 ; Vorgänge > 0 ; Vorgänge--){... Wie gesagt ist aber noch das Ein oder Andere unklar und ich bin auch nicht gerade der Experte für sowas. ![]() |
|
|||
![]()
Hab beim Kompilieren 7 Fehler und keine Ahnung warum.
![]() ![]() Code:
'OPZ_DIV' - function not defined PRdMA_OPZ_v2.mq4 157 1 ';' - unexpected token PRdMA_OPZ_v2.mq4 173 16 '=' - constant expression required PRdMA_OPZ_v2.mq4 173 13 '{' - some operator expected PRdMA_OPZ_v2.mq4 171 1 '=' - operand expected PRdMA_OPZ_v2.mq4 175 15 expression has no effect PRdMA_OPZ_v2.mq4 175 16 '}' - semicolon expected PRdMA_OPZ_v2.mq4 201 1 '}' - semicolon expected PRdMA_OPZ_v2.mq4 201 1 not all control paths return a value PRdMA_OPZ_v2.mq4 216 21 7 errors, 3 warnings 8 4 Code:
if( PR > -1.0 && PR < 1.0 ){ OPZ_DIV_Value = PR; OPZ_DIV_ToDiv = 1.0;} //------------------------------------------------------------------------------------------------------------- OPZ_DIV( OPZ_DIV_Value , OPZ_DIV_t , OPZ_DIV_mt , OPZ_DIV_ToDiv , OPZ_DIV_DivEd ) { OPZ_DIV_mt=-1; OPZ_DIV_V_mt=OPZ_DIV_Value; while( OPZ_DIV_V_mt > -1.0 && OPZ_DIV_V_mt < 1.0 ){ OPZ_DIV_t = OPZ_DIV_mt * 10.0; OPZ_DIV_mt = OPZ_DIV_t; mt++;} OPZ_DIV_DivEd = OPZ_DIV_ToDiv / OPZ_DIV_mt; for( mt ; mt > 0; mt-- ){ OPZ_DIV_DivEd_t = OPZ_DIV_DivEd * 10.0; OPZ_DIV_DivEd = OPZ_DIV_DivEd_t; } OPZ_DIV = OPZ_DIV_DivEd; return OPZ_DIV } |
|
|||
![]()
Gibts irgendwo ne gut verständliche Anleitung? Beim Kompilieren gibts immer etliche Errors.
Code:
ODIV( double ODIV_Div;// Soll dividiert werden double ODIV_ToDiv;// Wert, durch den dividiert werden soll ODIV_Div_mt , ODIV_t , ODIV_mt ; int ODIV_mt; ) ODIV(){ int ODIV_mt= -1; double ODIV_Div_mt=ODIV_Div; while( ODIV_mt > -1.0 && ODIV_mt < 1.0 ){ double ODIV_t = ODIV_mt * 10.0; ODIV_mt = ODIV_t; mt++;} ODIV_DivEd = ODIV_ToDiv / ODIV_t; for( ODIV_mt ; ODIV_mt > 0; ODIV_mt-- ){ ODIV_DivEd_t = ODIV_DivEd * 10.0; ODIV_DivEd = OIV_DivEd_t; } OPZ_DIV = OPZ_DIV_DivEd; return(ODIV); } |
|
|||
![]()
Keiner ne Idee, was da nicht stimmt? Gibts keine brauchbare Anleitung?
|
|
|||
![]()
Wenn Du Dir mal angewöhnen würdest, ordentlich eingerückten Code zu schreiben, wäre das Fehlerfinden bestimmt einfacher. AVT
|
|
|||
![]()
Funktion außerhalb OnCalculate() deklariert, Funktion brauch Datentyp, Funktionsparameter brauchen Datentyp, Semikolon vergessen
PHP-Code:
Liebe Grüße smilemore |
|
|||
![]()
@ AVT
Wie soll ich den einrücken? @ smilemore Danke. Aber 1. soll die Funktion für jede Candle zur Verfügung stehn, also muss sie ja innerhalb von OnCalculate() sein soviel ich weiß? ![]() 2. Wird da irgendwie Alles ein mal global und noch mal in der Funktion deklariert, das gibt doch Fehler, das die Variable schon deklariert wurde oder nicht? ![]() |
|
|||
![]()
Im MetaEditor unter Extras - Optionen kannst Du alles einstellen:
Bei mir ist unter Allgemein alles gewählt: Tabgröße 3 Zeichen Leerzeichen einfügen schließende Zeichen einfügen: sehr praktisch, damit man das nicht vergißt Passende Klammern markieren: wenn man den Cursor hinter eine öffnende oder vor eine schließende Klammer setzt, zeigt er die dazu gehörige "Gegen-"Klammer an. Aktuelle Zeile markieren Listennamen nach 3 Zeichen Auto Listennamen Auto Einzug: rückt bei Enter automatisch die nächste Zeile auf dieselbe Stufe wie die vorherige Zeile Auto Parameter-Info: zeigt an, welche Werte in welcher Reihenfolge als Zusatz erforderlich sind Zeilennummern anzeigen: zum schnelleren Finden von Zeilen Und unter Styler habe ich Leerzeichen pro Tab 3 und Konvertieren von Tabs in Leerzeichen, aber das ist eher ne persönliche Sache. |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|