Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 5006
Beiträge: 43341
Benutzer: 7.268
Aktive Benutzer: 45
Links: 84
Wir begrüßen unseren neuesten Benutzer: alex-berl
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Wochen
- alex-berl
09.04.25
- Olid
02.04.25
- traderjens
06.03.25
- albarus_44
03.03.25
- Virus Voom

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 42
Gesamt: 42
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 27.12.24
Neues Mitglied
 
Registriert seit: Dec 2024
Beiträge: 3
aschueli befindet sich auf einem aufstrebenden Ast
Standard Positionsgrößenberechnung

Hallo,

ich habe eine Frage zur Positionsgrößenberechnung. Ich habe hier im Forum schon gesucht, aber die Antwort auf meine Frage nicht gefunden.

Bisher berechne ich die Positionsgröße mit folgender Formel:

TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);
RiskBaseAmount=AccountBalance();

LotSize=(RiskBaseAmount*MaxRiskPerTrade/100)/(SL*TickValue);

Dabei entspricht MaxRiskPerTrade der Zahl 1 und SL der Differenz zwischen OpenPrice und SLPrice.

Das funktioniert bisher relativ zuverlässig. Allerdings nicht bei JP255, bei dem die Mindestlotanzahl und der Volumenschritt bei meinem Broker bei 10 Lot liegt. Hier errechnet die Formel beispielsweise Folgendes:

RiskBaseAmount 1876.0
MaxRiskPerTrade 1
SL 18503.0
TickValue 0.01
LotSize 0.1013889639517916

Der PositionSizer von earnforex errechnet mit diesen Werten die Positionsgrößen von 10 Lot. Dabei liegt dann das errechnete Risiko bei 0,6%.

Wie muss ich die Formel abändern, damit die Positionsgröße korrekt berechnet wird?
  #2 (permalink)  
Alt 28.12.24
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.752
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wenn Tickvalue = 0.01ist, dann würden 10Lot eine Währungsänderung von 0.1$ ($ als Depotwährung) ergeben, wenn sich der Kurs um einem Tick ändert.
Bei einem SL von 18503 macht das dann 1850.3 $.
Damit wäre das Konto platt.

Was der PositionSizer da ausgerechnet hat, kann ich nicht nachvollziehen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 28.12.24
Mitglied
 
Registriert seit: Jun 2011
Ort: Minsk, Weißrussland
Beiträge: 91
Bobs befindet sich auf einem aufstrebenden Ast
Standard Re: Positionsgrößenberechnung

MODE_TICKVALUE - die Größe der Mindestpreisänderung des Instruments in der Einzahlungswährung.
Dementsprechend muss SL als Punkten angegeben werden: SL = MathAbs( (OpenPrice - SLPrice)/Point )
  #4 (permalink)  
Alt 28.12.24
Neues Mitglied
 
Registriert seit: Dec 2024
Beiträge: 3
aschueli befindet sich auf einem aufstrebenden Ast
Standard

Danke für die schnellen Antworten.

Das Problem liegt offenbar in der Berechnung des SL.

Dieser wird bei mir wie du gesagt hast berechnet mit

SL = MathAbs( (OpenPrice - SLPrice)/Point )

Allerdings führt das bei dem Symbol JP255 dazu, dass der SL zwei Dezimalstellen zu groß berechnet wird. Es wird also aus 185,03 der falsche Wert 18503 errechnet, da der SL in diesem Fall durch 0,01 geteilt wird.

In den anderen Forexpaaren ist dieser Berechnungsweg jedoch korrekt.

Hier noch einmal meine Umsetzung:

SLPoints=MathCeil(MathAbs(OpenPrice-SLPrice)/Point);

LotSizeCalculate(SLPoints);

void LotSizeCalculate(double SL=0)
{
//If the position size is dynamic
if(RiskDefaultSize==RISK_DEFAULT_AUTO)
{
//If the stop loss is not zero then calculate the lot size
if(SL!=0)
{
double RiskBaseAmount=0;
//TickValue is the value of the individual price increment for 1 lot of the instrument, expressed in the account currenty
TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);
//Define the base for the risk calculation depending on the parameter chosen
if(RiskBase==RISK_BASE_BALANCE)
RiskBaseAmount=AccountBalance();
if(RiskBase==RISK_BASE_EQUITY)
RiskBaseAmount=AccountEquity();
if(RiskBase==RISK_BASE_FREEMARGIN)
RiskBaseAmount=AccountFreeMargin();
//Calculate the Position Size

LotSize=(RiskBaseAmount*MaxRiskPerTrade/100)/(SL*TickValue);



Ideen dazu?

Geändert von aschueli (28.12.24 um 13:48 Uhr)
  #5 (permalink)  
Alt 28.12.24
Neues Mitglied
 
Registriert seit: Dec 2024
Beiträge: 3
aschueli befindet sich auf einem aufstrebenden Ast
Standard

Hier noch zwei Rechenbeispiele dazu:

Bei JP255 wird die Lotgröße falsch berechnet:

OpenPrice 39209.99 SLPrice 39395.01 SLPoints 18503.0 Point 0.01

RiskBaseAmount 1876.0 MaxRiskPerTrade 1 SL 18503.0 TickValue 0.01 LotSize 0.1013889639517916

Bei USDJPY dagegen richtig:

OpenPrice 153.79 SLPrice 154.252 SLPoints 463.0 Point 0.001


RiskBaseAmount 1876.0 MaxRiskPerTrade 1 SL 463.0 TickValue 0.6079803500750856 LotSize 0.06664419092872571
  #6 (permalink)  
Alt 11.01.25
Mitglied
 
Registriert seit: Jun 2011
Ort: Minsk, Weißrussland
Beiträge: 91
Bobs befindet sich auf einem aufstrebenden Ast
Standard

Wenn EA in einem anderen Chart läuft, sollte MarketInfo(Symbol,MODE_POINT) statt Point zu verwenden. Auch für TickValue.
Überprüfe manuell, ob MODE_TICKSIZE in JP255 mit 0.01 übereinstimmt.
Versuche anhand Print() jeden spezifischen Werte der Formel erhalten, dann wird es möglich sein, den Fehler zu verstehen.
Thema geschlossen

Lesezeichen

Stichworte
lot berechnen, positionsgrößen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 06:39 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2025 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------