Calculating stop loss and target value in deposit currency

 

Hi All,

I hope this has not be answered somewhere before, but I can't seem to find the answer.

I have written an indicator that sums all of the positions in a particular instrument, and works out the cumulative target value, and risk in terms of the deposit currency (ZAR in this case).

I am using the following formulas which work about half the time, in some cases it is out by a factor or 10 or 100. I'm sure there is something that needs to be read from MarketInfo() but I can't figure it out. Can anyone help?

target = (OrderTakeProfit() - OrderOpenPrice()) * OrderLots()* LotSize * MarketInfo(Symbol(), MODE_TICKVALUE )

stoploss_exposure = (OrderStopLoss() - OrderOpenPrice()) * OrderLots() * LotSize * MarketInfo(Symbol(), MODE_TICKVALUE )

Thanks,

DB9

 
P.S, those is the formulas I'm using for a long.
 
Your stop loss placement can be calculated in two different ways: cents/ticks/pips at risk, and account-dollars at risk.
 
DeepBass9: stoploss_exposure = (OrderStopLoss() - OrderOpenPrice()) * OrderLots() * LotSize * MarketInfo(Symbol(), MODE_TICKVALUE )
  1. When you post code please use the CODE button (Alt-S)! (For large amounts of code, attach it.) Please edit your (original) post.
              General rules and best pratices of the Forum. - General - MQL5 programming forum
              Messages Editor

  2. Code assumes sell order.
  3. Drop LotSize, it's already in TV.
  4. In code (MT4): Risk depends on your initial stop loss, lot size, and the value of the pair.
    1. You place the stop where it needs to be - where the reason for the trade is no longer valid. E.g. trading a support bounce the stop goes below the support.
    2. Account Balance * percent/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Note OOP-OSL includes the SPREAD, and DeltaPerLot is usually around $10/pip but it takes account of the exchange rates of the pair vs. your account currency.)
    3. Do NOT use TickValue by itself - DeltaPerLot and verify that MODE_TICKVALUE is returning a value in your deposit currency, as promised by the documentation, or whether it is returning a value in the instrument's base currency.
                MODE_TICKVALUE is not reliable on non-fx instruments with many brokers.
    4. You must normalize lots properly and check against min and max.
    5. You must also check FreeMargin to avoid stop out
    Most pairs are worth about $10 per PIP. A $5 risk with a (very small) 5 PIP SL is $5/$10/5=0.1 Lots maximum.

Reason: