Funzionamento Stop&Reverse
Forums › ProRealTime forum Italiano › Supporto ProOrder › Funzionamento Stop&Reverse
- This topic has 9 replies, 3 voices, and was last updated 3 years ago by MauroPro.
-
-
01/14/2021 at 8:32 PM #157893
Buongiono, vorrei sapere come Prt usa lo stop and reverse. A volte il programma non chiude una semplice operazione long (per esempio), con la chiusura del long ed apertura dello short, ma effettua tre operazioni, ossia oltre alla chiusura del long e all’apertura corretta dello short, nella stessa barra ed alla stessa ora, lo richiude con un long che non capisco da dove scaturisce dato che in quel punto non ci sono condizioni long (infatti il ts era appena entrata short con lo stop&reverse), non ci sono stoploss, né orari di chiusura …[sono escluse posizioni cumulate]
GRAZIE
Allego immagine
01/14/2021 at 8:59 PM #157895Non saprei, occorre il codice e le informazioni per ripetere le operazioni: strumento, TF, spread e capitale indicato.
È strano, in effetti.
01/14/2021 at 9:28 PM #157896Stò provando a scrivere un codice con vari indicatori, tra cui vorrei aggiungere in seguito anche il “tuo” supertrendinverso per delle uscite (lo vedrai nel codice) (questa bozza ha SOLO una semplice entrata ed uscita dato che aspetto ancora di risolvere le multientrate cLong-cLong2 dell’altro TOPIC
CODICE: MNQXXXX (future micro Nasdaq)
TIMEFRAME : 3 minuti
SPREAD: da 0 ad 1 tick
CAPITALE: Demo (10000 euro)
DATI CARICATI: 10K (è ancora solo una bozza di trading system)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153DEFPARAM CumulateOrders=False// DATETIME SETTINGDEFPARAM Flatbefore = 001500DEFPARAM Flatafter = 215500limitHour = time<213000//Ctime = (time >=001500 and time<=215500)//------------------------------------------------------------------------------------trailingActivation = (close * 0.5 / 100) / pointsizetrailingDelta = (close * 0.4 / 100) / pointsize// ---------------------------------------------------------------------------------------------------------------OSCILLATORS LIST:x=3 // 3 default PERFECT TREND Adaptation from Nicolas Codey=7 // 7 defaultH1 = Highest[x](high)L1 = Lowest[x](low)H2 = Highest[y](high)L2 = Lowest[y](low)if high<H1 thenNewhigh1=H1elseNewhigh1=highendifif low>L1 thenNewlow1=L1elseNewlow1=lowendifif high<H2 thenNewhigh2=H2elseNewhigh2=highendifif low>L2 thenNewlow2=L2elseNewlow2=lowendifif close>LineBlu[1] thenlineBlu=NewLow1elselineBlu=NewHigh1endifif close>LineRed[1] thenlineRed=NewLow2elselineRed=NewHigh2endifBlue= close>LineBlu and close>LineRedGrayUp= close<LineBlu and close>LineRedRed= close<LineBlu and close<LineRedGrayDown= close>LineBlu and close<LineRed//-----------------------------------------------------------------------------------------------------------------------myMacd = exponentialaverage[12]-exponentialaverage[32] // My MACD & Mauro KamamyMacdSignal = exponentialaverage[52](mymacd)myKama = AdaptiveAverage[20,2,30](mymacd)//-----------------------------------------------------------------------------------------------------------------------nPeriod = 10 //CHANDE KROLL & Mauro Channelmultiplier = 3atr = averageTrueRange[nPeriod]nPeriod2 = 20multiplier2 = 1.5stDev = std[nPeriod](abs(ckUp-ckDown))up = (Highest[nPeriod](high))- multiplier*atrdown = (Lowest[nPeriod](low))+ multiplier*atrckUp = Highest[nPeriod2](up)ckDown = Lowest[nPeriod2](down)ckZoneUp=max(ckUp,ckDown)ckZoneDown=min(ckUp,ckDown)ckPlus = typicalprice + multiplier2*stDevckMinus = typicalprice - multiplier2*stDev//-----------------------------------------------------------------------------------------------------------------------------Multiplier = 3 //SUPERTREND INVERSO Roberto GozziPeriods = 10Multiplier = Max(1,Min(999,Multiplier))Periods = Max(1,Min(999,Periods))IF BarIndex > Max(Periods,Multiplier) THENMyATR = AverageTrueRange[Periods](close) * MultiplierBasicUPPER = MedianPrice + MyATRBasicLOWER = MedianPrice - MyATRIF (BasicUPPER < FinalUPPER[1]) OR (close[1] > FinalUPPER[1]) THENFinalUPPER = BasicUPPERENDIFIF (BasicLOWER > FinalLOWER[1]) OR (close[1] < FinalLOWER[1]) THENFinalLOWER = BasicLOWERENDIFIF (ST[1] = FinalUPPER[1]) AND (close <= FinalUPPER) THENST = FinalUPPERSX = FinalLOWERELSEIF (ST[1] = FinalUPPER[1]) AND (close > FinalUPPER) THENST = FinalLOWERSX = FinalUPPERELSEIF (ST[1] = FinalLOWER[1]) AND (close >= FinalLOWER) THENST = FinalLOWERSX = FinalUPPERELSEIF (ST[1] = FinalLOWER[1]) AND (close < FinalLOWER) THENST = FinalUPPERSX = FinalLOWERENDIFENDIFENDIFENDIFENDIF//------------------------------------------------------------- LISTA CONDIZIONI SINGOLEc1=close>ckZoneUp //LONGc2=Bluec3=myMacd>=myKamad1=close<ckZOneDown //SHORTd2=Redd3=myMacd<=myKama// ------------------------------------------------------------ CONDIZIONI RAGGRUPPATEcLong=c1 and c2 and c3 and limitHourcShort=d1 and d2 and d3 and limitHour// ------------------------------------------------------------ CONDIZIONI ENTRATA - USCITAIF cLong THENBUY 1 CONTRACTS AT MARKETENDIF//IF longOnMarket and then//SELL 1 CONTRACTS AT MARKET//endifIf cShort THENSELLSHORT 1 CONTRACTS AT MARKETENDIF//If shortOnMarket and THEN//EXITSHORT 1 CONTRACTS AT MARKET//ENDIF//------------------------------------------------------------- TRAILINGIf not onmarket thenMaxPrice=0MinPrice=closepriceExit=0endifIf longonmarket thenMaxPrice=Max(MaxPrice,high)if MaxPrice-tradeprice(1)>trailingActivation*pointsize thenpriceExit=MaxPrice-trailingDelta*pointsizeendifendifif shortonmarket thenMinPrice=Min(MinPrice,low)if tradeprice(1)-MinPrice>trailingActivation*pointsize thenpriceExit=Minprice+trailingDelta*pointsizeendifendifif onmarket and priceExit>0 thensell at priceExit STOPexitshort at priceExit STOPendif//-------------------------------------------------------------- STOP LOSS AND TAKE PROFITSet stop %loss 0.801/15/2021 at 10:23 AM #157926Ho fatto un sacco di prove modificando DEFPARAM CumulateOrders, aggiungendo IF NotLongOnMarket e IF Not ShortOnMarket, ma non riesco a capire cosa faccia. Dopo l’uscita dal Long entra Short ed esce immediatamente per poi rientrare la barra successiva!
Ho provato sulla vecchia versione 10.3 che, seppure ferma al 18 Dicembre come barre, funziona ancora regolarmente, si nota la chiusura dell’operazione in corso e la riapertura di quella contraria per lo Stop & Reverse. Sono due semplici operazioni, non 4!
Devi aprire una richiesta d’assistenza con ProRealTime premendo Ctrl+M dalla piattaforma.
Quando risponderanno sarebbe interessante se tu postassi la risposta in modo da condividere il problema e la soluzione.
01/15/2021 at 11:08 AM #157935Grazie intanto per la risposta e per le prove. Confermo dalle prove tutto quello che hai scritto, un esempio: supponiamo che il Ts è long a X e deve uscire in stop and reverse a Y, il comportamento corretto sarebbe chiudere il long ed entrare short (due operazioni su un barra ). Invece chiude il long con un exit, apre lo short (correttamente in quanto deve fare stop&reverse) e SUBITO richiude lo short con un long inspiegabile. Poi siccome permangono spesso le condizioni per lo short, dopo alcune barre riapre lo short (facendo in totale 4 operazioni al posto di due). Questo problema lo ho notato su diversi trading system, anche in quello relativo alle doppie condizioni compariva questo problema, ed era un altro Ts, quindi a questo punto dipende dalla versione 11. Per questo problema contatto l’assistenza e poi chiaramente posto la risposta sul forum.
Per il problema sulle doppie condizioni sento l’assistenza ugualmente? oppure possiamo fare altre prove? Ti posso dire che nell’altro software la cosa era banale, si inventava un FLAG, esempio: position = 0 e si procedeva con:
if position =0 and cLong then
if position =1 and cLong1 then
if position =0 and cShort then
if posision =-1 and cShort2 then
è possibile utilizzare dei flag simili al posto di onMarket (che non abilita lo stop&reverse) oppure not longOnMarket in cLong2 e not shortOnMarket in cShort 2, che per inspiegabili motivi, abilitano sempre lo stop&reverse per tutte le condizioni?
(poi chiaramente questi flag vanno resettati “penso”, probabilmente anche nel trailing mft. Pensi che come idea sia possibile e praticabile?
GRAZIE
01/15/2021 at 11:15 AM #157937Puoi usare IF CountOfLongShares = …. (per gli short CountOfShortShares), oppure anche CountOfPosition che è generuico ma devi usare ABS() perché per le posizioni Short restituisce valori negativi.
01/15/2021 at 11:36 AM #15794001/15/2021 at 5:17 PM #157956- Dato che hai controllato e nella versione 10.3 non ci sono problemi, sembra chiaro che sia un bug della versione 11. Ho scritto all’assistenza, appena rispondono posto il contenuto.
- Per quanto riguarda la doppia entrata, mi “sembra”, dopo molte prove, di aver risolto con le funzioni CountOfLongShares e CountOfShortShares. Riporto il codice con insertPrt nel topic adeguato. Prova a controllare se ti sembra corretto. Grazie
01/16/2021 at 8:56 PM #158092Dubito che abbia a che fare con quello che avete discusso tu e Roberto, ma …
La riga 53 può essere // fuori e non fa differenza per i risultati.
myMacdSignal (alla riga 53) non è utilizzato da nessuna parte nel resto del codice e tuttavia non viene visualizzato con un messaggio di errore che dice … myMacdSignal non è utilizzato nel codice.
01/16/2021 at 9:06 PM #158094Si ho visto, ma dato che non dà messaggio di errore non ho usato: //
Chiedo anche a te una cosa GraHal riportata nel TOPIC “Funzionamento Stop&Reverse” : ti sono capitati nella versione 11 errori nello stop&Reverse”? (rispondi nel Topic indicato se hai informazioni utili)
Grazie
-
AuthorPosts
Find exclusive trading pro-tools on