Re bonjour à tous encore moi.
Je remonte l’algo eur/usd 3 minutes.
première perte jeudi 2 février 2023.
Je vous le remonte afin de mettre en place un autre algo. Je vous explique ma stratégie, je voudrais pouvoir utiliser les re tracements de fibonacci.
La technique serait calquer sur l’algo 3 minutes et je voudrais par exemple intégrer les paramètres suivants:
Quand l’algo 3 minutes ce met en route je voudrais utiliser le fibonnacci par rapport au timeframe 15 minutes ou 5 minutes qui prendrais du dernier plus haut au dernier plus bas et lui dire au retracement des 50% ou 60% par rapport au time frame choisi de prendre une position à la vente et de placer son take profit à la hauteur du take profit de celui du 3 min ou de placer son take profit au prix d’ouverture de l’algo 3 min.
Si cela peut intéresser quelqu’un , les résultats en prise de position manuel sont intéressantes c’est pour cela s’il y a possibilité de la programmer .
Dans l’attente de vous lire.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False
DEFPARAM PRELOADBARS = 2000
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
noEntryAfterTime = 110000
timeEnterAfter = time < noEntryAfterTime
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Conditions pour ouvrir une position en vente à découvert
// Conditions pour ouvrir une position en vente à découvert
indicator1 = SenkouSpanB[9,26,52]
indicator2 = SenkouSpanA[9,26,52]
c1 = (close CROSSES UNDER indicator1)
c2 = (close CROSSES UNDER indicator2)
indicator3 = Average[400](close)
c3 = (close > indicator3)
IF (c1 AND c2 and (c3 or (high[3]<high[1]and low[3]<low[1] )))AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry and tally < maxTrades THEN
sellshort 1 CONTRACT AT MArket
partial=0
endif
// sortie partielle
if shortonmarket and positionperf>0.10/100 and partial=0 then
exitshort 0.05 contract at market
partial = 1
endif
once maxTrades = 10 //maxNumberDailyTrades
once tally = 0
if intradayBarIndex = 0 then
tally = 0
endif
newTrades = (onMarket and not onMarket[1]) or ((not onMarket and not onMarket[1]) and (strategyProfit <> strategyProfit[1])) or (longOnMarket and ShortOnMarket[1]) or (longOnMarket[1] and shortOnMarket) or ((tradeIndex(1) = tradeIndex(2)) and (barIndex = tradeIndex(1)) and (barIndex > 0) and (strategyProfit = strategyProfit[1]))
if newTrades then
tally = tally +1
endif
//------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
//Max-Orders per Day
once maxOrdersL = 1 //long
once maxOrdersS = 1 //short
if intradayBarIndex = 0 then //reset orders count
ordersCountL = 0
ordersCountS = 0
endif
if longTriggered then //check if an order has opened in the current bar
ordersCountL = ordersCountL + 1
endif
if shortTriggered then //check if an order has opened in the current bar
ordersCountS = ordersCountS + 1
endif
//------------------------------------------------------------------------------------------------------------------------
// Stops et objectifs
set stop %loss 0.58
set target %profit 0.20
IF Not OnMarket THEN
//
// when NOT OnMarket reset values to default values
//
TrailStart = 3.0 //30 Start trailing profits from this 1.74
BasePerCent = 0.000 //20.0% Profit percentage to keep when setting BerakEven
StepSize = 1 //10 Pip chunks to increase Percentage
PerCentInc = 0.000 //10.0% PerCent increment after each StepSize chunk
BarNumber = 10 //10 Add further % so that trades don't keep running too long
BarPerCent = 0.235 //10% Add this additional percentage every BarNumber bars
RoundTO = -0.5 //-0.5 rounds always to Lower integer, +0.4 rounds always to Higher integer, 0 defaults PRT behaviour
PriceDistance = 9 * pipsize //7 minimun distance from current price
y1 = 0 //reset to 0
y2 = 0 //reset to 0
ProfitPerCent = BasePerCent //reset to desired default value
TradeBar = BarIndex
ELSIF LongOnMarket AND close > (TradePrice + (y1 * pipsize)) THEN //LONG positions
//
// compute the value of the Percentage of profits, if any, to lock in for LONG trades
//
x1 = (close - tradeprice) / pipsize //convert price to pips
IF x1 >= TrailStart THEN // go ahead only if N+ pips
Diff1 = abs(TrailStart - x1) //difference from current profit and TrailStart
Chunks1 = max(0,round((Diff1 / StepSize) + RoundTO)) //number of STEPSIZE chunks
ProfitPerCent = BasePerCent + (BasePerCent * (Chunks1 * PerCentInc)) //compute new size of ProfitPerCent
// compute number of bars elapsed and add an additionl percentage
// (this percentage is different from PerCentInc, since it's a direct percentage, not a Percentage of BasePerCent)
// (if BasePerCent is 20% and this is 10%, the whole percentage will be 30%, not 22%)
BarCount = BarIndex - TradeBar
IF BarCount MOD BarNumber = 0 THEN
ProfitPerCent = ProfitPerCent + BarPerCent
ENDIF
//
ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent)) //make sure ProfitPerCent doess not exceed 100%
y1 = max(x1 * ProfitPerCent, y1) //y1 = % of max profit
ENDIF
ELSIF ShortOnMarket AND close < (TradePrice - (y2 * pipsize)) THEN //SHORT positions
//
// compute the value of the Percentage of profits, if any, to lock in for SHORT trades
//
x2 = (tradeprice - close) / pipsize //convert price to pips
IF x2 >= TrailStart THEN // go ahead only if N+ pips
Diff2 = abs(TrailStart - x2) //difference from current profit and TrailStart
Chunks2 = max(0,round((Diff2 / StepSize) + RoundTO)) //number of STEPSIZE chunks
ProfitPerCent = BasePerCent + (BasePerCent * (Chunks2 * PerCentInc)) //compute new size of ProfitPerCent
// compute number of bars elapsed and add an additionl percentage
// (this percentage is different from PerCentInc, since it's a direct percentage, not a Percentage of BasePerCent)
// (if BasePerCent is 20% and this is 10%, the whole percentage will be 30%, not 22%)
BarCount = BarIndex - TradeBar
IF BarCount MOD BarNumber = 0 THEN
ProfitPerCent = ProfitPerCent + BarPerCent
ENDIF
//
ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent)) //make sure ProfitPerCent doess not exceed 100%
y2 = max(x2 * ProfitPerCent, y2) //y2 = % of max profit
ENDIF
ENDIF
IF y1 THEN //Place pending STOP order when y1 > 0 (LONG positions)
SellPrice = Tradeprice + (y1 * pipsize) //convert pips to price
//
// check the minimun distance between ExitPrice and current price
//
IF abs(close - SellPrice) > PriceDistance THEN
//
// place either a LIMIT or STOP pending order according to current price positioning
//
IF close >= SellPrice THEN
SELL AT SellPrice STOP
ELSE
SELL AT SellPrice LIMIT
ENDIF
ELSE
//
//sell AT MARKET when EXITPRICE does not meet the broker's minimun distance from current price
//
SELL AT Market
ENDIF
ENDIF
IF y2 THEN //Place pending STOP order when y2 > 0 (SHORT positions)
ExitPrice = Tradeprice - (y2 * pipsize) //convert pips to price
//
// check the minimun distance between ExitPrice and current price
//
IF abs(close - ExitPrice) > PriceDistance THEN
//
// place either a LIMIT or STOP pending order according to current price positioning
//
IF close <= ExitPrice THEN
EXITSHORT AT ExitPrice STOP
ELSE
EXITSHORT AT ExitPrice LIMIT
ENDIF
ELSE
//
//ExitShort AT MARKET when EXITPRICE does not meet the broker's minimun distance from current price
//
EXITSHORT AT Market
ENDIF
ENDIF