Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1331

 
Aleksei Stepanenko:
Tut mir leid, ich war in die Unterhaltung hier vertieft und habe es nicht bemerkt...

Ein gemeinsames Thema, und Ihre Codes sind immer interessant...

nahm eine Menge für mich selbst)

 
Iurii Tokman:
MakarFX:

.

 
Iurii Tokman:

Die technische Aufgabe wird auf Ukrainisch besser verstanden

Ich bin noch nicht auf diesem Niveau, meine Muttersprache ist Russisch :)

...aber ich verstehe es auf einer beiläufigen Ebene
 
Aleksei Stepanenko:

Dieses Niveau habe ich noch nicht, meine erste Sprache ist Russisch :)

Ich komme aus der UdSSR... ich habe zwei Muttersprachen)
 
MakarFX:
Ich komme aus der UdSSR...ich habe zwei Muttersprachen)
.
 
MakarFX:
Ich komme aus der UdSSR... ich habe zwei Muttersprachen)

und wir haben drei, immer noch surzhik.

 
DanilaMactep:

Ich bin nicht sehr gut in Mathe - wie berechne ich den Abstand zwischen Ordereröffnung und Stop im Code, so dass ich sl durch diesen ersetzen kann?

Der Wert der Partie wurde wie folgt anormalisiert

Es bleibt also zu verstehen, wie man den Abstand zwischen dem Eröffnungskurs und dem Stop im Code berechnet?

Der absolute Wert der Differenz zwischen dem Eröffnungs- und dem Stoppkurs sollte durch die Kursstufe geteilt werden.

  int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;

Und dieser Wert sl geht in die Formel ein.

Wenn Sie einen vom ATR-Indikator berechneten Stopp setzen, reicht es aus, wenn Sie

double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
Und das ist dann schon die normalisierte Losgröße.
 
MakarFX:

Eröffnungskurs kaufen

Stop-Loss kaufen

Verbreitung

Jetzt verstehe ich, ich muss nur noch verstehen, welchen Wert ich den Kauf- und Verkaufspreisen beimessen soll.

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp ,"ДИВЕРГЕНЦИЯ НА СЕЛ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР

Mit anderen Worten, ich ordne Ask dem offenen Kaufkurs zu, f dem offenen Verkaufskurs ordne ich Bid?

 
DanilaMactep:

Im Code eröffne ich einen Auftrag auf folgende Weise.

Sie meinen, ich weise der Variablen Ask den offenen Kaufkurs und Bid den offenen Verkaufskurs zu?

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

Nach dieser Funktion zu urteilen, kennen Sie den Stop-Loss bereits... Ich verstehe nicht, was das Problem ist

 
Alexey Viktorov:

Teilen Sie den absoluten Wert der Differenz zwischen dem Eröffnungs- und dem Stoppkurs durch die Kursstufe.

und dieser sl-Wert wird in die Formel eingesetzt.

Wenn Sie einen vom ATR-Indikator berechneten Stopp setzen, reicht es aus, wenn Sie

Und das wäre dann die normalisierte Losgröße.

Ich habe es per Code gemacht, wie Sie es empfohlen haben. Am Anfang des Codes habe ich die Bedingung, die Art des Stopps zu wählen - atp oder fest.

if(tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     //Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
     sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      Print("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
     sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
     }

Dann kommentierte ich meine Normalisierung und wies sie folgendermaßen zu

     sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;// ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ
     //sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО  ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ

Die Gewinnberechnung ist der nächste Teil des Codes, wo es keine Probleme gibt, und nach der Berechnung des Gewinns habe ich die beängstigende Formel hinzugefügt, die mir empfohlen wurde.

double lot =MathFloor((Free*MaxRisk/100)/(sl/Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ

Alles wurde ohne Fehler kompiliert. Aber als ich den Test ausgeführt habe, erscheint der Fehler im Protokoll, es ist eine Division durch Null, soweit ich das verstehe, und der Test wird abgebrochen. Was habe ich hier falsch gemacht oder was habe ich nicht richtig gemacht?

FEHLER BEI TESTBEGINN

Grund der Beschwerde: