Bonjour,
j’ai crée un code de stratégie avec l’outil de PRT, puis j’ai pris la main dessus (pièce jointe). j’aimerai rajouter une variable à l’achat et la vente suivante.
Sur mon graphique 15m (time frame utilisé pour la stratégie), j’ai trois VWAP ( une en WEEKLY qui redémarre chaque début de semaine ; une en DAILY qui redémarre chaque début de Journée ; et une en DAILY GLISSANTE sans interruption).
Mon problème est que, si j’essai de les rajouter par l’outil de PRT qui a générer le code, les VWAP ne sont pas proposé dans la liste des indicateurs de mon graphique.
Mais si j’essai de les rajouter par l’outil Fx (insérer fonction) directement depuis le code, je ne les trouve pas comme indicateur ( la seule chose que j’ai trouvé, est ” VolumeAdjustedAverage[20](close)” mais du coup étant novice dans la programmation je ne sais si c’est, ce qui correspond au VWAP, et je ne sais pas comment le paramétrer?
J’ai mis le code en fichier texte en pj, car je ‘ai pas trouvé le bouton “Insert PRT Code”
Pouvez vous m’aider?
Merci et bonne journée.
Pour cela il va falloir utiliser un coder personnel pour les recalculer, il n’y a en effet aucune instruction à ce jour pour récupérer les valeurs des VWAP.
Par contre je ne comprends ce qu’est un VWAP “DAILY GLISSANTE sans interruption”? Pourrais tu partager un copie d’écran de l’indicateur stp ?
voici la capture d’écran et le code
Merci de ton aide.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 1 OR OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Conditions pour ouvrir une position acheteuse
indicator1, ignored = CALL "DR_pente mm vente"[1, 20, 50]
c1 = (indicator1 CROSSES OVER 13)
//smableu n'améliore pas les perfs
//smableu = Average[9](TotalPrice )
//c1a = (close > smableu)
IF c1 AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
indicator2, ignored = CALL "DR_pente mm vente"[1, 20, 50]
c2 = (indicator2 CROSSES UNDER -4)
IF c2 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
indicator3, ignored = CALL "DR_pente mm vente"[1, 20, 50]
c3 = (indicator3 CROSSES UNDER -14)
// sma bleu améliore les perfs à la vente.
smableu = Average[9](TotalPrice )
c3a = (close < smableu)
IF c3 and c3a AND not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
indicator4, ignored = CALL "DR_pente mm vente"[1, 20, 50]
c4 = (indicator4 CROSSES OVER -1)
IF c4 THEN
EXITSHORT AT MARKET
ENDIF
// Stops et objectifs
SET STOP %LOSS 0.2
Quelques liens pour les codes des VWAP weekly, monthly qui pourrait t’aider:
VWAP Weekly Monthly & Yearly
https://www.prorealcode.com/tag/vwap/
vwap Weekly
Bonjour,
voici le code modifié de ma stratégie. En probacktest, quand je lance le code, il fonctionne, sauf que:
Je ne sais pas comment faire pour lui indiquer que si une position à la vente ou à l’achat est en cours, il ne peut pas ouvrir une position inverse. il doit attendre que la position ouverte (peu importe à l’achat ou à la vente) soit clôturée pour en ouvrir une autre?
Merci beaucoup de votre aide.
Belle journée.
// Définition des paramètres du code
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
// Jours de semaine
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
//variables
myAngle, mylevel0 = CALL "DR_pente mm vente"[7, 24, 21]
myVWAPWEEK = CALL "DR_VWAP WEEKLY"
myVWAP, myupper1STD, mylower1STD, myupper2STD, mylower2STD, myupper3STD, mylower3STD, myyesterdayVWAP = CALL "DR_VWAP Daily"
myVWAPC = CALL "DR_VWAP Nbre Periodes"[60]
myVWAPR = CALL "DR_VWAP Nbre Periodes"[17]
difA = CALL "DR_Diff Achats"
difV = CALL "DR_Diff Vente"
////////
smableu = Average[9](TotalPrice )
smajaune = Average[20](TotalPrice )
smarouge = Average[11](TotalPrice )
smaviolette = Average[17](TotalPrice )
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// ACHAT
//Conditions d'entrée à l'achat 1
if not daysForbiddenEntry then
if (myAngle <=72)and(close CROSSES OVER myVWAPC)and (smarouge <myVWAPC)and(smarouge < smaviolette )and(smaviolette < smajaune)and (difA <=0) then
BUY 1 SHARES AT MARKET
endif
A1=1
else
A1=0
endif
//Conditions d'entrée à l'achat 2
if not daysForbiddenEntry then
if (myAngle >=79)and(close CROSSES OVER myVWAPC )and(smaviolette > smajaune)and (difA >=0) then
BUY 1 SHARES AT MARKET
endif
A2=1
else
A2=0
endif
//Conditions d'entrée à l'achat 3
if not daysForbiddenEntry then
if (myAngle >=83)and(myVWAPWEEK>myVWAPC) and (myVWAPR>myVWAPWEEK)and (close CROSSES OVER myVWAPR )and(difA >=0) then
BUY 1 SHARES AT MARKET
endif
A3=1
else
A3=0
endif
//// VENTE ////
//Conditions d'entrée à la vente 1
if not daysForbiddenEntry then
if (myAngle >=77)and(close CROSSES under myVWAPWEEK )and (myVWAPWEEK > myVWAPC)and (smarouge>close)and (difv<=0) then
SELLSHORT 1 SHARES AT MARKET
endif
V1=1
else
V1=0
endif
//Conditions d'entrée à la vente 2
if not daysForbiddenEntry then
if (close CROSSES under myVWAPWEEK )and(myAngle <=-69)and (myVWAPWEEK > myVWAPC)and (smarouge>close)and (difv<-12) then
SELLSHORT 1 SHARES AT MARKET
endif
V2=1
else
V2=0
endif
///// SORTIE /////
// TAKE PROFIT
SET TARGET PROFIT 535
// Stops et objectifs
SET STOP %LOSS 0.2
L’instruction onmarket sera vraie si dans le marché et fausse sinon:
ONMARKET
Afin d’obtenir: “si une position à la vente ou à l’achat est en cours, il ne peut pas ouvrir une position inverse“, tu peux par exemple l’utiliser en rajoutant à tes conditions d’entrée:
if not onmarket and …(les conditions que tu avais jusqu’ici)… then
…
endif
Merci JC.
j’ai modifié comme tu l as dis et c’est nickel!, exactement ce que je voulais, pas de croisements entre les buy et les sell.
Merci encore.
Bonne journée.
// Définition des paramètres du code
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
// Jours de semaine
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
//variables
Angle, level0 = CALL "DR_pente mm vente"[1, 21, 49]
VWAP = CALL "VWAP D"
VWAPW = CALL "DR_VWAP WEEKLY"
vwapy, vwapm, vwapc, vwapr, Difm, difY, difD, difC, DifR = CALL "DR_Diff vvapY/M/C/D/R_Réf Week"[2000, 400, 40, 10]
ema= ExponentialAverage[26](difm)
/////////
smableu = Average[9](TotalPrice )
smajaune = Average[50](TotalPrice )
smarouge = Average[11](TotalPrice )
smaviolette = Average[16](TotalPrice )
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// ACHAT
if not daysForbiddenEntry then
endif
if not SHORTONMARKET then
endif //pas en position inverse
if (vwapm>vwapy)and (close>vwapy) or (vwapm>vwapy)and (close<vwapm)and (close>vwapy) and(vwapm-close>110) then
//Conditions d'entrée à l'achat 1 // Prix est sous M
if (close<vwapm)and(angle>-90)and (angle<5)and (difc-difr>32)and (difm >difm[15])and (difm-difd>127)and(difc>difr)and (difc-difr>38)and (difr-difd<37)and (difd>-60)and (difd<=1)and (close CROSSES OVER vwapr )then
BUY 1 SHARES AT MARKET
endif
//Conditions d'entrée à l'achat 2 // Le prix est sur M
if (close>vwapm)and(angle>-78)and (angle<-25)and (difm<difc)and (difm <difm[62])and (difc<17)and (difm<-78)and(difc>difr)and (difc-difr>21)and (difr-difd<5)and (difd<15)and (close CROSSES OVER vwapr )then
BUY 1 SHARES AT MARKET
endif
//Conditions d'entrée à l'achat 3 // le prix est sous M et sous Y. on attend le croisement de M.
if (close<vwapm)and(angle>40)and (angle<90)and (close CROSSES OVER vwapy)and(close>vwap)and (vwap>vwapr)and (vwapr>vwapw)and (difc<difr)then
BUY 1 SHARES AT MARKET
endif
endif
//////////////////////////////////////////////////////////////////////////////////////////////////////////
////VENTE contre tendance. On prendra uniquement sur W eloigné de X points par rapport à M
if not daysForbiddenEntry then
endif
if not LONGONMARKET then
endif //pas en position inverse
if (vwapm>vwapy)and (close>vwapm) and (vwapw-vwapm>190) then
endif
//Conditions d'entrée à la vente en CTDA // Le prix est éloigné de M de 200 points
if(angle>48)and (angle<80)and (difm<difc)and (difm < difm[20])and (difm<-150)and (difc<-70)and(difc<difr)and (difr-difd<2)and (difr<1)and (close CROSSES under vwapr )then
SELLSHORT 1 CONTRACTS AT MARKET
endif
// Stops et objectifs
//VARIABLES STOP
trailingstart= 56
trailingstart3= 195
trailbe = 1
trailingsl3=158
////reset the stoploss value
IF NOT ONMARKET THEN
sl=0
ENDIF
//// Positions achats
////manage long positions
IF LONGONMARKET THEN
//BE
IF sl=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
sl = tradeprice(1)+trailbe*pipsize
ENDIF
// NIVEAU 1 SL
IF sl>0 and close-sl>=trailingstart3*pipsize then
sl = sl+trailingsl3 *pipsize
ENDIF
endif
///// STOP VENTE /////
////reset the stoploss value
IF NOT ONMARKET THEN
sl=0
ENDIF
//// Positions Vente
////manage short positions
IF SHORTONMARKET THEN
//BE
IF sl=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
sl = tradeprice(1)-trailbe*pipsize
ENDIF
// NIVEAU 1 SL
IF sl>0 and sl-close>=trailingstart3*pipsize then
sl = sl-trailingsl3 *pipsize
ENDIF
endif
////stop order to exit the positions
IF sl>0 THEN
sell at sl stop
EXITSHORT AT sl STOP
ENDIF
// Stops et objectifs
SET STOP %LOSS 0.41
// TAKE PROFIT
SET TARGET PROFIT 365
Bonjour
je reviens vers vous avec ce code, ou je n arrive pas a lui dire que (mes conditions):
Si je suis en position en Long, MAIS que les conditions d’entrée en Short arrivent et sont respectées, qu’il coupe la position Long, et entre en position Short!
ET INVERSEMENT !
j’ai essayé plein de trucs mais je suis débutant et je n’y arrive pas.
Merci de votre aide et bonne journée.
Bonjour.
Une idée sur mon probleme ci-dessus?
Merci.
Si je suis en position Long, MAIS les conditions pour entrer en Short arrivent et sont remplies, il coupe la position Long, et entre en position Short !
Ci-dessus, le comportement normal, nous ne pouvons pas être à la fois Long et Short en même temps avec AutoTrading.
Merci.
Mais je me suis peut être mal exprimé.
Admettons qu’autotrading a ouvert une position LONG, et qu’AVANT d’arriver au SL ou TP, qu’une des conditions pour entrer en SHORT se présente. J’aimerai qu’il coupe la position en cours LONG, et qu’il ouvre la nouvelle en SHORT.
Et inversement.
Merci.
DEFPARAM CumulerCommandes = false
Si BuyCond Alors
ACHETER positionsize ACTIONS AU MARCHÉ
SET STOP % PERTE 0.2
SET TARGET % PROFIT 0.4
ENDIF
Si SellShortCond Then
SELLSHORT positionsize ACTIONS AU MARCHÉ
SET STOP % PERTE 0.2
SET TARGET % PROFIT 0.4
ENDIF
Si votre code peut être écrit comme ci-dessous, le code fonctionnera comme vous le décrivez ci-dessus.