Good morning,
The program below, depending on the type of bar, enters short or long.
If you enter long, you must remain on the market until the first red bar, therefore when closing the latter, you must close the long position and immediately return to the market based on the type of bar just closed.
If you enter short, you must remain on the market until the first green bar, then when closing the latter, you must close the short position and immediately return to the market based on the type of bar just closed.
The problem is that the program closes and enters immediately if for example they are long and at the first red bar I have to close and enter short. If they are long, I have to close and re-enter long, close, but they do not immediately return to the market. Same goes for the short case.
how can this be solved?
I enclose the program
// v1: 04/04/2020
//***************************************************************************************
//
DEFPARAM CumulateOrders = False
DEFPARAM PreLoadBars = 10000
////////////////////////////////////////////////////////////////////////////////////////
ONCE Capitale = 4196
ONCE LotNumber = 10
ONCE MinLots = 1
ONCE SpreadEntrata = 20 * pipsize
ONCE StopMinimo = 40 * pipsize
ONCE StopMassimo = 200 * pipsize
BarraVerde = Open < Close
BarraRossa = Open > Close
TradingDay = OpenDayOfWeek >= 1 AND OpenDayOfWeek <= 5 //trade only Mon. to Fri.
//Definisco il tipo barra
IF (close >= (high + low) / 2) THEN
TipoBarra = 1
ELSIF (close < (high + low) /2) THEN
TipoBarra = 2
ENDIF
IF BarraVerde THEN
SpikeSuperiore = high - close
SpikeInferiore = open - low
ELSIF BarraRossa THEN
SpikeSuperiore = high - open
SpikeInferiore = close - low
ENDIF
//Il profitto è dato dal capitale + il ricavato dal programma
MyProfit = Capitale + StrategyProfit
//Aumento della size al cambio del mese
IF Month <> Month[1] THEN
LotNumber = max(MinLots, (MyProfit / Capitale))
ENDIF
IF NOT ONMARKET THEN //Inizio prima entrata a mercato
IF TipoBarra = 1 AND TradingDay THEN
SELLSHORT LotNumber CONTRACT AT MARKET
TipoPosizione = -1
IF SpikeSuperiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeSuperiore + SpreadEntrata
SET STOP pLOSS max(StopMinimo,StopEntrata)
ENDIF
ELSIF TipoBarra = 2 AND TradingDay THEN
BUY LotNumber CONTRACT AT MARKET
TipoPosizione = 1
IF SpikeInferiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeInferiore + SpreadEntrata
SET STOP pLOSS max(Stopminimo,StopEntrata)
ENDIF
ENDIF
ELSE // Inizio se sono già a mercato
IF TipoPosizione = 1 AND BarraRossa THEN //Se sono LONG e Barra Rossa chiudi posizione
SELL AT MARKET
IF TipoBarra = 1 AND TradingDay THEN //Se la barra appena chiusa e tipo 1 entra SHORT
SELLSHORT LotNumber CONTRACT AT MARKET
IF SpikeSuperiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeSuperiore + SpreadEntrata
SET STOP pLOSS max(StopMinimo,StopEntrata)
ENDIF
ELSIF TipoBarra = 2 AND TradingDay THEN //Se la barra appena chiusa e tipo 2 entra LONG
BUY LotNumber CONTRACT AT MARKET
IF SpikeInferiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeInferiore + SpreadEntrata
SET STOP pLOSS max(StopMinimo,StopEntrata)
ENDIF
ENDIF
ELSIF TipoPosizione = -1 AND BarraVerde THEN //Se sono SHORT e Barra Verde chiudi posizione
EXITSHORT AT MARKET
IF TipoBarra = 1 AND TradingDay THEN //Se la barra appena chiusa e tipo 1 entra SHORT
SELLSHORT LotNumber CONTRACT AT MARKET
IF SpikeSuperiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeSuperiore + SpreadEntrata
SET STOP pLOSS max(StopMinimo,StopEntrata)
ENDIF
ELSIF TipoBarra = 2 AND TradingDay THEN //Se la barra appena chiusa e tipo 2 entra LONG
BUY LotNumber CONTRACT AT MARKET
IF SpikeInferiore >= 220 THEN
StopEntrata = StopMassimo + SpreadEntrata
SET STOP pLOSS StopEntrata
ELSE
StopEntrata = SpikeInferiore + SpreadEntrata
SET STOP pLOSS max(StopMinimo,StopEntrata)
ENDIF
ENDIF
ENDIF
ENDIF
BertonTomas – Please update your country flag in your profile.
There are some simple rules that everyone using the forums is expected to follow. Your post has broken one or more of these rules.
The forum rules are as follows. I have highlighted in bold the rule/rules that you have not followed:
Post your topic in the correct forum.
ProRealTime Platform Support only platform related issues.
ProOrder only strategy topics.
ProBuilder only indicator topics.
ProScreener only screener topics
General Discussion any other topics.
Welcome New Members for new forum members to introduce themselves.
Only post in the language of the forum that you are posting in. For example English only in the English speaking forums and French only in the French speaking forums.
Always use the ‘Insert PRT Code’ button when putting code in your posts to make it easier for others to read.
Do not double post. Ask your question only once and only in one forum. All double posts will be deleted anyway so posting the same question multiple times will just be wasting your own time and will not get you an answer any quicker. Double posting just creates confusion in the forums.
Be careful when quoting others in your posts. Only use the quote option when you need to highlight a particular bit of text that you are referring to or to highlight that you are replying to a particular member if there are several involved in a conversation. Do not include large amounts of code in your quotes. Just highlight the text you want to quote and then click on ‘Quote’.
Give your topic a meaningful title. Describe your question or your subject in your title. Do not use meaningless titles such as ‘Coding Help Needed’.
Do not include personal information such as email addresses or telephone numbers in your posts. If you would like to contact another forum member directly outside of the forums then contact the forums administrator via ‘Contact Us’ and they will pass your details on to the member that you wish to contact.
Always be polite and courteous to others.
Have fun.
I have edited your post where required. Please ensure that your future posts meet these few simple forum rules. 🙂
I already warned you:
- to post in the forum of the language you want to speak
- to use the correct support forum
- to use the button to insert code
- to update your flag
Now I need to also warn you to not double post!
I deleted your topic in the italian forum.
No matter what language you choose you seem not to be able to read the rules. Would you take a minute to point out the most difficult words so that we can improve the wording?
Thank you 🙂