Fragen Sie! - Seite 173

 

Wie löst man den Mangel an gemischten Datentypen in der Datenstruktur?

codersguru:
Hallo Leute,

Ich habe eine Menge privater Nachrichten erhalten, in denen ich um Hilfe bei einigen Code-Stücken gebeten wurde.

Hier können Sie Ihre Fragen zu MQL4 stellen, und ich werde mein Bestes tun, um sie zu beantworten.

Hallo,

Ich möchte Ihre Einladung nutzen, um das folgende Problem zu stellen.

Was wäre die beste Lösung, um eine Liste von Symbolen zu speichern und zu sortieren, die auf ihren Preisänderungen basieren, da man keine gemischte Datenstruktur verwenden kann wie: EURUSD->1.29, USDGBP->0.22 ?

Es gibt kein Enum und keine gemischten Datenstrukturen, die einen String und einen zugehörigen Double-Wert in mql4 aufnehmen können. Die Lösungen, die mir einfallen, sind entweder die Verwendung einer Datei, aber das würde fast ständige Lese- und Schreibaktivitäten auf der Festplatte erfordern. Oder drei Arrays zu verwenden; eins für die Symbolliste, eins für die Speicherung und Verfolgung von Indexplatzwerten und eins für die eigentlichen Werte.

Es scheint, als müsse man ein sehr grundlegendes (einfaches) Problem umprogrammieren. Das Einzige, was ich möchte, ist, dass alle Euro-Paare miteinander verglichen werden, um die relative Stärke zu ermitteln. Wie würden Sie das lösen, welche Datenstruktur würden Sie empfehlen?

Vielen Dank für alle Antworten oder Hinweise für diesen Neuling!

Bibberpool

 

Suche nach Relative Stärke und Korrelationsindikatoren

liverpool:
Hallo,

Was wäre die beste Lösung zum Speichern und Sortieren einer Liste von Symbolen auf der Grundlage ihrer Preisänderungen, da man keine gemischte Datenstruktur wie z.B.: EURUSD->1.29, USDGBP->0.22 ?

...

Es scheint, dass man ein sehr grundlegendes (einfaches) Problem umprogrammieren muss. Das Einzige, was ich möchte, ist, alle Euro-Paare im Hinblick auf die relative Stärke miteinander zu vergleichen. Wie würdest Du das lösen, welche Datenstruktur würdest Du empfehlen ?

Vielen Dank für alle Antworten oder Hinweise für diesen Neuling! Bibberpool

Hallo Bibberpool,

Suchen Sie auf dieser Forex TSD Seite nach Relative Strength Indikatoren und Korrelationsindikatoren...

Diese Art von Indikatoren sind dazu gedacht, verschiedene Paare und Preise und ihre relative Stärke zu analysieren.

Vielleicht finden Sie gute Beispiele für das, was Sie tun möchten.

Ich hoffe, das hilft Ihnen,

Robert

 

Vielen Dank für Ihre Antwort

cosmiclifeform:
Hallo Bibberpool,

Suchen Sie auf dieser Forex TSD Seite nach Relative Strength Indikatoren und Korrelationsindikatoren...

Diese Art von Indikatoren dient dazu, verschiedene Paare und Preise und deren relative Stärke zu analysieren.

Vielleicht finden Sie gute Beispiele für das, was Sie tun möchten.

Ich hoffe, das hilft Ihnen,

Robert

Hallo, vielen Dank für Ihre Antwort, und ich werde sicherlich in den vorgeschlagenen Threads suchen. Allerdings gibt es einfach so viel Code.

In der Zwischenzeit habe ich einen kurzen Prototypen in C erstellt. Ich habe einfach eine einfache Einfügesortierung genommen, da die Daten nur aus kleinen Mengen bestehen und diese Routine aktualisiert, um ein String-Array entsprechend zu aktualisieren.

Ich werde es im Laufe der Woche in mein erstes mql4-Programm portieren (kopieren/einfügen). Hier ist der Code, vielleicht ist er für andere nützlich oder jemand möchte ihn kommentieren, um etwas besseres zu schaffen.

#include

int main(void) {

int max = 5;

int array[5] = { 3, 5, 2, 1, 4 };

char *symbl[5] = { "EURUSD", "EURGBP", "EURJPY", "EURCHF", "EURCAD" };

int idx = 0;

int swp = 0;

int tmp = 0;

char *tmpsymb = NULL;

printf("--- before\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

for(idx = 1 ; idx <= max - 1; idx++) {

swp = idx;

while(swp > 0 && array[swp] < array[swp - 1]) {

tmp = array[swp];

tmpsymb = symbl[swp];

array[swp] = array[swp - 1];

symbl[swp] = symbl[swp - 1];

array[swp - 1] = tmp;

symbl[swp - 1] = tmpsymb;

swp--;

}

}

printf("--- after\n");

for(idx = 0; idx <= max - 1; idx++) {

printf("%d - %s\n", array, symbl);

}

return 0;

}

das Programm sollte drucken:

--- vorher

3 - EURUSD

5 - EURGBP

2 - EURJPY

1 - EURCHF

4 - EURCAD

--- nach

1 - EURCHF

2 - EURJPY

3 - EURUSD

4 - EURCAD

5 - EURGBP

 

Suche nach Indies von Autor Kravchuk

Hallo Community,

Ich bin auf der Suche nach Indies vom Autor Kravchuk, der Indies zum Verkauf entwirft. Ich war bereit, buyu aber wir können nicht recomcile auf Form der Zahlung (nicht Menge!?). Hat jemand seine Indies ft.dejavu, ft .rainbow, barstatline, diver, linerenko? Ich würde Ihre Hilfe zu schätzen wissen. Ich danke Ihnen

 
bershk:
Hallo Community, ich bin auf der Suche nach Indies vom Autor Kravchuk, der Indies zum Verkauf entwirft. Ich war bereit zu kaufen, aber wir können nicht auf Form der Zahlung (nicht Menge!?) zu empfehlen. Hat jemand seine Indies ft.dejavu, ft .rainbow, barstatline, diver, linerenko? Ich würde Ihre Hilfe zu schätzen wissen. Ich danke Ihnen

Hallo bershk,

Wenn Ihre Anfrage noch nicht veraltet ist, können wir Ihnen hier helfen - wir haben mit einigen dieser Indikatoren gearbeitet.

Bitte beachten Sie, dass Sie die Lizenz vom Autor kaufen sollten und wir keine dekompilierten oder illegal erworbenen Programme anbieten.

Wenn Sie Interesse am Kauf haben - hier sind die aktuellen Preise des Autors:

Dejavu - $20; Rainbow - $15; Barstatline - $10; Diver - $20; LineRenko - $15.

Wenn Sie Hilfe brauchen, um sie zu kaufen, schreiben Sie uns bitte an info@raitsoft.com, wir werden Ihnen helfen, die Lizenz ohne jegliche Provision zu kaufen.

 

hallo Freunde ...................

Ich habe angefangen zu lernen, in mql4 zu programmieren, und für den Start iam analayzing idicators und ea.

Ich habe "daily_close _line" Indikator und ich schaute auf den Code und laufen diese zwei Zeilen von Code, die ich heve keine Ahnung, was sie tun und wie sie funktionieren.

kann jemand bitte einen Blick auf den Code und sagen Sie mir, was los ist.

Vielen Dank im Voraus.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
 

ERAN123

Es macht folgendes: es findet den täglichen Eröffnungskurs (unter Berücksichtigung von TimeZoneOfData als Zeitzonenverschiebung) und zeichnet diese Linie durch diesen Tag. Hier ist ein Bild, auf dem man gut sehen kann, wie es den gleichen täglichen Eröffnungskurs durch den Tag zieht:

ERAN123:
Ich habe angefangen, das Programmieren in mql4 zu erlernen, und für den Anfang analayzing idicators and ea .

Ich habe den Indikator "daily_close _line" und ich habe mir den Code angesehen und diese zwei Codezeilen herausgefunden, von denen ich keine Ahnung habe, was sie tun und wie sie funktionieren.

kann jemand bitte einen Blick auf den Code und sagen Sie mir, was los ist.

Vielen Dank im Voraus.

eran

//*

//* my_DailyOpen_indicator

//*

//* Revision 1.1 2005/11/13 Midnite

//* Initial DailyOpen indicator

//* based pm

//*

#property copyright "Midnite"

#property link "me@home.net"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#property indicator_style1 2

#property indicator_width1 1

double TodayOpenBuffer[];

extern int TimeZoneOfData= 0;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,TodayOpenBuffer);

SetIndexLabel(0,"Open");

SetIndexEmptyValue(0,0.0);

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int lastbar;

int counted_bars= IndicatorCounted();

if (counted_bars>0) counted_bars--;

lastbar = Bars-counted_bars;

DailyOpen(0,lastbar);

return (0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int DailyOpen(int offset, int lastbar)

{

int shift;

int tzdiffsec= TimeZoneOfData * 3600;

double barsper30= 1.0*PERIOD_M30/Period();

bool ShowDailyOpenLevel= True;//<<<<---------- thise line-------------------------------

// lastbar+= barsperday+2; // make sure we catch the daily open

lastbar= MathMin(Bars-20*barsper30-1, lastbar);//<<<<-------------------thise line-----------------------

for(shift=lastbar;shift>=offset;shift--){

TodayOpenBuffer[shift]= 0;

if (ShowDailyOpenLevel){

if(TimeDay(Time[shift]-tzdiffsec) != TimeDay(Time[shift+1]-tzdiffsec)){ // day change

TodayOpenBuffer[shift]= Open[shift];

TodayOpenBuffer[shift+1]= 0; // avoid stairs in the line

}

else{

TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1];

}

}

}

return(0);

}
Dateien:
daly_open.gif  30 kb
 
mladen:
ERAN123

Es macht folgendes: es findet den täglichen Eröffnungskurs (unter Berücksichtigung von TimeZoneOfData als Zeitzonenverschiebung) und zeichnet diese Linie durch diesen Tag. Hier ist ein Bild, auf dem man gut sehen kann, wie es den gleichen täglichen Eröffnungskurs durch den Tag zieht:

Entschuldigung, dass ich diese Linie erstellt habe:

double barsper30= 1.0*PERIOD_M30/Period();

und diese hier auch.

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

für was die "20" und "-1" und wie die 2 Zeilen zusammen arbeiten?

vielen Dank.

 

Ursprünglich hatte ich etwas anderes geschrieben.

Vergessen Sie diese Zeilen: Sie versuchen aus irgendeinem Grund, den Startpunkt zu begrenzen, ab dem die Werte berechnet werden sollen (und das sollten einige Stunden ab dem ältesten Balken im Diagramm sein). Was der Programmierer damit bezwecken wollte, weiß vielleicht nur er selbst

ERAN123:
Entschuldigung, dass ich diese Zeile vergessen habe:

double barsper30= 1.0*PERIOD_M30/Period();

und diese hier auch.

lastbar= MathMin(Bars-20*barsper30-1, lastbar);

für was die "20" und "-1" und wie die 2 Zeilen zusammen arbeiten?

vielen Dank.
 

Vielen Dank mein Freund .....you half mir

Grund der Beschwerde: