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: 5001
Beiträge: 43323
Benutzer: 7.258
Aktive Benutzer: 52
Links: 84
Wir begrüßen unseren neuesten Benutzer: dannyfeiert
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- dannyfeier...
vor 5 Tagen
- Robin97
vor einer Woche
- qwertzgeor...
vor 2 Wochen
- TauriMK2
vor 2 Wochen
- Der_Schlei...

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 3 Wochen
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?
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.746
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.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Wochen
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 )
Mit Zitat antworten
  #4 (permalink)  
Alt vor 3 Wochen
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 (vor 3 Wochen um 13:48 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt vor 3 Wochen
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
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
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.
Mit Zitat antworten
Antwort

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 +1. Es ist jetzt 09:52 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.
-----------------------------------------------------------------------------------------------------------------------------