Dynamic TP

Avatar
  • updated
  • Completed

One possible way to protect your account from big loss is through dynamic TP (of course, this is not the Holy Grail). One of the simplest ways is to correlate TP with the number of open positions. The more open positions, the smaller the average TP should be. In extreme cases, when 5, 6 positions are open, the TP should also be negative. Maybe by this quadratic equation: 

TP = BasicTP * (extern int Optimized number of Orders-OrdersTotal) * OrdersTotal / 3

Avatar
0
Andrey Khatimlianskyi
  • Under review

Something is wrong in your formula, but idea is clear.

Let's reduce TP after each deal by some value (input parameter) and also change this value by some coefficient (another parameter).

For example, with TP = 50, ReduceTP = 10 and ReduceCoeff = 1.1:

For 1 deal TP will be = 50

For 2 deals: 50 -10 = 40

For 3 deals: 50 - 10*2*1.1 = 28

For 4 deals: 50 - 10*3*1.1*1.1 = 13.7

For 5 deals: 50 - 10*4*1.1*1.1*1.1 = -3.24

And so on. What do you think?

Avatar
0
drago babnik
Quote from Andrey Khatimlianskyi

Something is wrong in your formula, but idea is clear.

Let's reduce TP after each deal by some value (input parameter) and also change this value by some coefficient (another parameter).

For example, with TP = 50, ReduceTP = 10 and ReduceCoeff = 1.1:

For 1 deal TP will be = 50

For 2 deals: 50 -10 = 40

For 3 deals: 50 - 10*2*1.1 = 28

For 4 deals: 50 - 10*3*1.1*1.1 = 13.7

For 5 deals: 50 - 10*4*1.1*1.1*1.1 = -3.24

And so on. What do you think?

It might be really better as you suggest that the 1st position has the largest TP and then the exponential TP drops. In my case, the TP would be smaller at the first position, then at the 2nd the largest and at the 4th position TP = 0.

For 1 deal TP will be = 50 * (4-1) * 1/4 = 37.5

For 2 deals: 50 * (4-2) * 2/4 = 50

For 3 deals: 50 * (4-3) * 3/4 = 37.5

For 4 deals: 50 * (4-4) * 4/4 = 0

For 5 deals: 50 * (4-5) * 5/4 = -62.5

For 6 deals: 50 * (4-6) * 6/4 = -150

Avatar
0
Andrey Khatimlianskyi

Why TP for 2 deals should be so big?

Why after 3 deal it decreases so dramatically?

Are you sure it have sense?

Avatar
0
drago babnik
Quote from Andrey Khatimlianskyi

Why TP for 2 deals should be so big?

Why after 3 deal it decreases so dramatically?

Are you sure it have sense?

I agree that your proposal is better!

My proposal is theoretical and probably would not work as I imagine.

For 1 deal: Price is moving within the smallest channel and max TP cannot be expected.

For 2 deals: The price moves to a higher level, but with high confidence we expect it to return and therefore the highest average TP (we have double capital invested).

For 3 deals: Price moves at the edge of a wider channel e.g. (TF = H4). The chance of a quick return is diminished but no panic is required.

For 4 deals: It's time to seriously protect your invested capital and find the best opportunity to close without losing.

For 5 deals: There is a high probability that the price has broken out of the channel. It's time to deal with some loss. This TP can be used instead of SL.

Avatar
0
Andrey Khatimlianskyi
  • Planned (collecting votes)

Ok, let's try my idea and then make some conclusions.

Avatar
0
drago babnik

This is how I trade Martingale and grid systems on a EURUSD pair

I trade at least 3 different levels. Each level can have a maximum of 3 deals. Step between deals is approximately 350 points. The step between levels should be around 1500 points. I trade buy and sell deals at the same time but close profit separately on buy or sell.

Grid system:

LOPB = LastOrderOpenPrice (Buy)

LOPS = LastOrderOpenPrice (Sell)

b= number of buy deals

s= number of sell deals

Step=350

Level=1500


“Buy open trigger”

if ( (b==0 && Close[1]>iMA-(300*Point))

||

(b>0 && b<4 && Bid<=LOPB-Step*Point)

||

(b==4 && Bid<=LOPB-(Step+Level)*Point )

||

(b>4 && b<7 && Bid<=LOPB-Step*Point )

||

(b==7 && Bid<=LOPB-(Step+Level)*Point )

||

(b>7 && b<10 && Bid<=LOPB-Step*Point ) )

OrderSend(Symbol(),OP_BUY.....


“Sell open trigger”

if ( (s==0 && Close[1]<iMA+(300*Point))

||

(s>0 && s<4 && Ask>=LOPS+Step*Point)

||

(s==4 && Ask>=LOPS+(Step+Level)*Point )

||

(s>4 && s<7 && Ask>=LOPS+Step*Point )

||

(s==7 && Ask>=LOPS+(Step+Level)*Point )

||

(s>7 && s<10 && Ask>=LOPS+Step*Point ) )

OrderSend(Symbol(),OP_SELL.....


Martingale system:

if (b<4 && b>0) {LotBuy=NormalizeDouble((TradedLot+TradedLot*b/10),2);}

if (b>=4 && b<7) {LotBuy=NormalizeDouble((TradedLot+TradedLot*b/8),2);}

if (b>=7 && b<10) {LotBuy=NormalizeDouble((TradedLot+TradedLot*b/6),2);}

if (s<4 && s>0) {LotSell=NormalizeDouble((TradedLot+TradedLot*s/10),2);}

if (s>=4 && s<7) {LotSell=NormalizeDouble((TradedLot+TradedLot*s/8),2);}

if (s>=7 && s<10) {LotSell=NormalizeDouble((TradedLot+TradedLot*s/6),2);}


I think we could improve this system. Andrey, what do you think?

Avatar
0
Andrey Khatimlianskyi

Interesting.

Your grid looks like 350-350-1850-350-350-1850-350-350 and lots 1-1.1-1.2-1.3-1.5-1.63-1.75-... ?

I think we can implement such steps and lots. But please add these suggetions as separate topics.

Avatar
0
Andrey Khatimlianskyi
  • Started
Avatar
0
Andrey Khatimlianskyi
  • Completed

Changed formula a bit:

For example: TP = 50, ReduceTP = 10 and ReduceCoeff = 1.1:

For 1 deal TP will be = 50

For 2 deals: 50 -10 = 40

For 3 deals: 50 - 10*1.1 = 29

For 4 deals: 50 - 10 - 10*1.1 - 10*1.1*1.1 = 16.9

For 5 deals: 50 - 10 - 10*1.1 - 10*1.1*1.1 - 10*1.1*1.1*1.1 = 3.59

And so on (-11.05 for 6 deals, -27.15 for 7)

Min TakeProfit size also added (can be negative).

Available in 2.11