Prova di scrittura codice
Forums › ProRealTime forum Italiano › Supporto ProOrder › Prova di scrittura codice
- This topic has 3 replies, 2 voices, and was last updated 1 year ago by robertogozzi.
-
-
09/30/2023 at 9:27 AM #221857
Roberto buongiorno,
dopo aver bazzicato per 2 anni in PRT , ho provato a trasformare in codice una mia idea e cioè ; se ci sono due candele ascendenti si va long se il segnale è confermato da un indicatore, ho messo poi un filtro con volume e stop loss / profit /thrilling (in allegato).
La mia domanda è se il su codice ha una sua logicità, lo sto provando su EUR/USD TF 1 Spread 0,2 ora e mi da dei discreti risultati.
DEFPARAM CumulateOrders = False // Posizioni cumulate disattiva
TradingTime=Time>=090000and Time<=210000td = opendayofweek >= 1 and opendayofweek <= 5
//condizioni per entrata long
indicator1 = Volume
indicator2 = ExponentialAverage[14](Volume)
c3 = (indicator1 >= indicator2)ONCE c1 = 0
ONCE c2 = 0IF c1 = 0 AND Not OnMarket THEN
c1 = ( close > open and close[1] > open[1] )
ENDIF
indicator3 = CALL “PRC_Adjustible CoRa_Wave”[20, 2, 1, 1](close)
IF c2 = 0 AND Not OnMarket THEN
c2 = (close >= indicator3)
ENDIF
IF c1 AND c2 AND td and c3 and TradingTime THEN
BUY 1 CONTRACT AT MARKET
c1 = 0
c2 = 0
ENDIFSET STOP LOSS l*AverageTrueRange[10](close)
SET TARGET PROFIT p*AverageTrueRange[12](close)//SET STOP PLOSS l
//SET TARGET PPROFIT p//************************************************************************
//trailing stop
trailingstop = tra//resetting variables when no trades are on market
if not onmarket then
MAXPRICE = 0
MINPRICE = close
priceexit = 0
endif//case SHORT order
if shortonmarket then
MINPRICE = MIN(MINPRICE,close) //saving the MFE of the current trade
if tradeprice(1)-MINPRICE>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
priceexit = MINPRICE+trailingstop*pointsize //set the exit price at the MFE + trailing stop price level
endif
endif//case LONG order
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close) //saving the MFE of the current trade
if MAXPRICE-tradeprice(1)>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
priceexit = MAXPRICE-trailingstop*pointsize //set the exit price at the MFE – trailing stop price level
endif
endifGrazie
09/30/2023 at 10:19 AM #221863All’inizio ho dovuto aggiungere le tre variabili mancanti, in quanto tule hai nell’ottimizzatore del backtest,mailCopia & Incolla non le copia.
Ho aggiunto in fondo 3 righe che mancavano nel trailing stop, cioè l’USCITA, quindi NON usciva mai in trailing stop:
123IF PriceExit > 0 THENSET STOP PRICE PriceExitENDIFHo spostato SET STOP LOSS e SET TARGET PROFIT all’interno del blocco IF…ENDIF dove c’è BUY, perché altrimenti ti vanificano il trailing stop.
Ho spostato la condizione AND Not OnMarket sulla riga IF dell’entrata, èinutile metterla su ogni condizione, c1, c2 ecc…
Ho inserito il Multi Time Frame, per cui le condizioni e l’entrate le verifica ed entra sul TF di 1 ora, mentre il trailing stop lo fa su 1 minuto (ma puoi anche provarlo sul 5 minuti):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566DEFPARAM CumulateOrders = False // Posizioni cumulate disattiva//timeframe(default)TradingTime=Time>=090000and Time<=210000l = 0.8p = 1.0tra = 13//Timeframe(1h,UpdateOnClose)td = opendayofweek >= 1 and opendayofweek <= 5//condizioni per entrata longindicator1 = Volumeindicator2 = ExponentialAverage[14](Volume)c3 = (indicator1 >= indicator2)ONCE c1 = 0ONCE c2 = 0c1 = ( close > open and close[1] > open[1] )indicator3 = CALL "PRC_Adjustible CoRa_Wave"[20, 2, 1, 1](close)c2 = (close >= indicator3)IF c1 AND c2 AND td and c3 and TradingTime AND Not OnMarket THENBUY 1 CONTRACT AT MARKETc1 = 0c2 = 0SET STOP LOSS l*AverageTrueRange[10](close)SET TARGET PROFIT p*AverageTrueRange[12](close)ENDIF//SET STOP PLOSS l//SET TARGET PPROFIT p//timeframe(default)//************************************************************************//trailing stoptrailingstop = tra//resetting variables when no trades are on marketif not onmarket thenMAXPRICE = 0MINPRICE = closepriceexit = 0endif//case SHORT orderif shortonmarket thenMINPRICE = MIN(MINPRICE,close) //saving the MFE of the current tradeif tradeprice(1)-MINPRICE>=trailingstop*pointsize then //if the MFE is higher than the trailingstop thenpriceexit = MINPRICE+trailingstop*pointsize //set the exit price at the MFE + trailing stop price levelendifendif//case LONG orderif longonmarket thenMAXPRICE = MAX(MAXPRICE,close) //saving the MFE of the current tradeif MAXPRICE-tradeprice(1)>=trailingstop*pointsize then //if the MFE is higher than the trailingstop thenpriceexit = MAXPRICE-trailingstop*pointsize //set the exit price at the MFE - trailing stop price levelendifendifIF PriceExit > 0 THENSET STOP PRICE PriceExitENDIFl’ho provato con 200K barre ed è profittevole, ma devi testarlo per vari mesi prima di poterlo utilizzare, perché operare sulle medie spesso porta a risultati disastrosi a causa della sovraottimizzazione.
09/30/2023 at 11:32 AM #221865Grazie veramente tanto gentile, il thrilling stop a 1 minuto mi sembra troppo stretto, come faccio a portarlo a 5 minuti.
Grazie
09/30/2023 at 7:16 PM #221873Basta che sostituisci la riga 37 con:
1Timeframe(5mn,UpdateOnClose) -
AuthorPosts
Find exclusive trading pro-tools on