END OF MONTH
Forums › ProRealTime forum Italiano › Supporto ProOrder › END OF MONTH
- This topic has 3 replies, 3 voices, and was last updated 11 months ago by Hary Trading.
Tagged: fine mese
-
-
12/27/2023 at 12:56 PM #225732
Buongiorno e buone feste a tutti
un ringraziamento anticipato a chi vorrà aiutarmi
Vorrei codificare una strategia di questo tipo:
Entra long con 1 contratto gli ultimi due giorni dI contrattazione del mese (prendiamo per esempio Marzo) e chiudiamo il trade il secondo giorno del mese successivo (in questo caso Aprile)
Grazie ancora
Hary
12/27/2023 at 3:10 PM #225734L’uscita al secondo giorno di negoziazione del mese è facile, ma l’apertura al penultimo giorno non può essere automatizzata, poiché non esiste un calendario di trading che indichi il numero teorico di giorni di negoziazione rimanenti nel mese.
12/27/2023 at 6:27 PM #225742In effetti è un pò difficile essere certi che funzioni tutti i mesi.
Si può trovare l’ultimo giorno del mese ed andare indietro di due giorni presumibilmente non festivi, ma non è detto che sia sempre così. Ad esempio, questo mese il 31 è domenica, quindi andando indietro di due giorni NON festivi si arriva al 28 Dicembre e tutto funziona correttamente, ma se il 28 Dicembre il trading fosse chiuso non possiano saperlo, quindi per quel mese non verrebbe aperta nessuna posizione.
Questo l’ho provato sul DAX, Giornaliero:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253DEFPARAM CumulateOrders = FalseONCE EntryDay = 0x = OpenMonthIF x <> x[1] THEN //al cambio del mese si feterminano i giorni totali del mese$gg[OpenDay] = OpenDayOfWeekFOR i = (OpenDay + 1) TO 31 //riempire un ARRAY con tutti i giorni delle settimana del mese$gg[i] = $gg[i-1] + 1IF $gg[i] > 7 THEN$gg[i] = 1ENDIFNEXTDayMax = 31IF (x = 4) OR (x = 6) OR (x = 9) OR (x = 11) THENDayMax = 30ELSIF x = 2 THENDayMax = 28IF (Year MOD 4) = 0 THENIF (Year MOD 100) <> 0 THENDayMax = 29ELSEIF (Year MOD 400) = 0 THENDayMax = 29ENDIFENDIFENDIFENDIFj = 0EntryDay = 0FOR i = 1 TO 20IF ($gg[DayMax] >= 1) AND ($gg[DayMax] <= 5) THENEntryDay = DayMaxj = j + 1IF j = 2 THENbreakENDIFENDIFDayMax = DayMax - 1NEXTENDIFIF (Day >= EntryDay) AND Not OnMarket THENBUY 1 CONTRACT AT MARKETj = 0ENDIFIF OnMarket THENIF x <> x[1] THENj = j + 1IF j >= 2 THENSELL AT MARKETENDIFENDIFENDIF//graph EntryDay//graph DayOfWeekse trovi qualche incongruenza fammi sapere il Mese e l’Anno (e lo strumento su cui l’hai provato), per vedere se si può risolvere o meno.
12/27/2023 at 11:42 PM #225745Grazie infinite ad entrambi per il vostro aiuto
Siete sempre gentilissimi
Grazie
-
AuthorPosts