[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 189

 

Ich habe die Grundlagen des Programmierens gelernt (vor 25 Jahren - Algol 60 :))) Damals begann alles mit der Erstellung eines Algorithmus (Quadrate, Rauten), und dieser Algorithmus wurde dann mit einer Sprache beschrieben. Jetzt sehe ich keine Algorithmen oder Befehle.

Habt ihr irgendwelche Empfehlungen für gute Tutorials zu mql4? Vorzugsweise mit konkreten Beispielen für fachmännisches Schreiben, ausgehend vom Algorithmus.

 
v721965 писал(а) >>

Ich habe die Grundlagen des Programmierens gelernt (vor 25 Jahren - Algol 60 :))) Damals begann alles mit der Erstellung eines Algorithmus (Quadrate, Rauten), und dieser Algorithmus wurde dann mit einer Sprache beschrieben. Jetzt sehe ich keine Algorithmen oder Befehle.

Habt ihr irgendwelche Empfehlungen für gute Tutorials zu mql4? Vorzugsweise mit konkreten Beispielen für das Schreiben von EA, beginnend mit dem Algorithmus.

https://book.mql4.com/ru/

 
alvish >> :
pro bitte beraten, nach mql5 Sprache Hilfe gibt es keine Funktion iHighest wie maximal hoch für N Zeitraum zu berechnen? ... Ich habe versucht copyHigh und fmax, aber nur für einen bestimmten Zeitraum und nicht, dass natürlich, Hilfe

Hier ist ein Beispiel:

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start- i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start- i, i+1)];

Achten Sie nur darauf, dass Sie die Schalthebel richtig einstellen.

 

1. Ich versuche, den EA im Testmodus mit Visualisierung auszuführen. Der EA ist einfach: Er erzeugt eine Nachricht über Alert. Wenn Alert in init ist, wird die Meldung beim Start ausgegeben. Wenn der EA gestartet ist, reagiert er nicht auf einen neuen Tick. Was ist das Problem?

2. Im gleichen Testmodus starte ich auch ein Skript, das die Werte von Time[1], Close[1],... anzeigt. (als Referenz). Ich habe herausgefunden, dass diese Werte auf der aktuellen (tatsächlichen) Zeit basieren und nicht auf dem Zeitpunkt des Tick-Empfangs und der Balkenbildung im Diagramm. Was kann getan werden?

 
Roger писал(а) >>

Für EURGBP ergibt sich - 0 (das ist Alpari) short und -0,68 long, und das ist genau in Dollar.

Bei Alpari ist der Swap-Berechnungstyp 0 und bei mir 1,

Ich muss aber alle Arten von Berechnungen kennen.

Ich habe alle Kombinationen ausprobiert: Multiplikation, Division oder gar keine Multiplikation.

Hier ist der Code, der all dies berechnet und einen Wert liefert, der dem tatsächlichen Tauschwert am nächsten kommt.

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

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

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

Weder für Alpari noch für BROCO habe ich Ergebnisse erhalten.

D.h.

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

Nicht genug für die Swap-Berechnung.

Es muss noch etwas anderes geben, aber was ist es?

 
Danke chief2000, aber du hast die Standardwerte iHighest und iLowest durchgeschrieben, das ist das Problem, und die sind nicht in mql 5
 
alvish >> :
Vielen Dank, chief2000, aber Sie schrieben durch den Standard iHighest und iLowest, das ist das Problem mit mql 5.

Jetzt sehe ich, dass ich die Frage nicht sorgfältig gelesen habe.

Muss ich in Version 5 wirklich alles manuell beschreiben? Irgendetwas stimmt hier nicht - vielleicht gibt es ein Problem mit der Dokumentation?

 
Da haben Sie es.
 
vasya_vasya >> :

Bei Alpari ist der Swap-Berechnungstyp 0 und bei mir 1,


Vasya, warum machst du dir die Mühe? Ich habe dir hier 'Swaps in mql4' ganz kurz erklärt

Ich kann ins Detail gehen,

Es gibt insgesamt 4 Varianten

jede mit einer anderen Formel.

 
kaisa писал(а) >>

Vasya, warum machst du dir die Mühe? Ich habe dir hier 'Swaps in mql4' kurz erklärt.

Bei Bedarf kann ich mehr ins Detail gehen,

Es gibt insgesamt 4 Varianten

für jeden eine andere Formel

Ja, kann ich die anderen Formeln haben?

Grund der Beschwerde: