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

 

Ich versuche, Swaps zu berechnen, aber es funktioniert nicht

Hier ist der Code, der die Swaps der letzten 20 Trades ausgibt.

for ( int j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {
OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPLONG)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
if(OrderType()==OP_SELL)
Alert(OrderSymbol()+" ЛОТ = "+OrderLots()+" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+" РАСЧЕТНЫЙ СВОП "+MarketInfo(OrderSymbol(),MODE_SWAPSHORT)*MarketInfo(OrderSymbol(),MODE_BID)*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE));
}

Aber der geschätzte Swap und der tatsächliche Swap sind unterschiedlich. Es geht nicht darum, dass der Angebotspreis nie wieder derselbe sein wird, es geht nicht um Zehntausendstel.

Aus irgendeinem Grund ist die Differenz ein Vielfaches von 10.

Das heißt, der berechnete Swap ist 10 Mal höher als der tatsächliche.

Ich kann nicht einmal erraten, was hier falsch ist.

MarketInfo(OrderSymbol(),MODE_SWAPTYPE) liefert eins, dann

"Methode zur Berechnung der Swaps 1 - in der Basiswährung des Instruments;"

Ich nehme den Swap-Wert in Pips, der Folgendes ergibt

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

Ich multipliziere diesen Wert mit Bid,

*MarketInfo(OrderSymbol(),MODE_BID)

dann bis die Größe der Partie

*OrderLots()

und der Multiplikation mit dem Wert eines Punktes in der Einzahlungswährung von einem Lot

*MarketInfo(OrderSymbol(),MODE_TICKVALUE)

Die zurückgegebenen Werte sind:

EURGBP LOT = 0.46000000 REAL SWAP = -1.31000000 ESTIMATED SWAP -13.05244609

 

Bitte sagen Sie mir, wie man das macht))

doppelt MA1,MA2;

MA1=iMA(....,0);

MA2=iMA(....,3);

wenn (MA1-MA2>Punkt)//MA schaut nach oben

wenn (MA1-MA2,-Point)//MA schaut nach unten

 
vasya_vasya писал(а) >>

Ich multipliziere diesen Wert mit Bid,

*MarketInfo(OrderSymbol(),MODE_BID)

Wozu ist das gut?

 
Roger >> :

Bitte sagen Sie mir, wie man das macht))

doppelt MA1,MA2;

MA1=iMA(....,0);

MA2=iMA(....,3);

wenn (MA1-MA2>Punkt)//MA schaut nach oben

wenn (MA1-MA2,-Point)//MA schaut nach unten

Vielen Dank))

 
Roger писал(а) >>

Wozu ist das gut?

Ich konnte keine Beschreibung finden, was er zurückgibt

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

Ich bin zu dem Schluss gekommen, dass dies die EUR Punktgröße in der EURGBP-Notierung ist, also habe ich sie mit BID multipliziert, um zu erfahren, wie viel sie in GBP ist.

Der Punkt ist, dass

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

Gibt den Punktwert pro Lot nur für GBP im EURGBP-Kurs zurück, nicht für EUR.

 
vasya_vasya писал(а) >>

Ich habe nirgends eine Beschreibung gefunden, was der Wert zurückgibt

Aus irgendeinem Grund schien es mir, dass alle Berechnungen in der Währung der Einzahlung erfolgen.
 
Roger писал(а) >>
Aus irgendeinem Grund dachte ich immer, dass alle Berechnungen in der Währung der Einzahlung erfolgen.

Function MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

Gibt einen ganzzahligen Wert von -2 zurück, wie bei allen anderen Aufträgen auch. Daher gehe ich davon aus, dass dies der Wert der Punkte ist.

Nehmen wir an, dies ist der Wert des Swaps, ausgedrückt in Pips unserer Einzahlungswährung.

Einzahlungswährung = USD

Multiplizieren

MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

Nach Anzahl der Partien

*OrderLots()

Multiplizieren Sie auch mit dem Wert von einem Pip unserer Einzahlungswährung pro Lot

*10

Siehe

SWAP = -9.20000000

Anstelle von

REALER TAUSCH = -1,31000000

 
vasya_vasya писал(а) >>

Function MarketInfo(OrderSymbol(),MODE_SWAPSHORT)

Gibt einen ganzzahligen Wert von -2 zurück, wie bei allen anderen Aufträgen auch. Daher nehme ich an, dass dies der Wert der Pips ist.

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

 
Profile bitte beraten, nach der Hilfe von mql5 Sprache gibt es keine Funktion iHighest, wie man die maximale 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
 

Um es grob zu formulieren:

double HighestBar(int start, int end)
{
double maxBar;
for (int i= start; i< end; i++)
if( maxBar<High[ i]) maxBar=High[ i];
return( maxBar);
}