Strategia con più entrate nella stessa direzione

Viewing 12 posts - 16 through 27 (of 27 total)
  • Author
    Posts
  • #157733 quote
    robertogozzi
    Moderator
    Master

    Senza il codice completo non posso fare verifiche.

    #157744 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, ho fatto MOLTE altre prove, ma niente: non riesco ad evitare lo stop and reverse tra i cLong2 e cShort2. (La tua ultima formula, ho ricontrollato bene, è come quelle precedenti, non fa più entrare lo stop and reverse.) Se vuoi a questo punto ti mando il TS che ho semplificato per controllare anche io  meglio i segnali. Dimmi se allegare il file o inserirlo con insert prt.

    Grazie

    #157750 quote
    MauroPro
    Participant
    Veteran

    Questo è un esempio di oggi in demo in cui si mostra che avviene sempre lo stop&reverse anche con cLong2 e cShort2 (mercato: micro Nasdaq – compressione 3 minuti).  [Gli oscillatori li trovi nel codice del Ts.]

    Esempio-2.jpg Esempio-2.jpg
    #157957 quote
    MauroPro
    Participant
    Veteran

    Codice per TS con due entrate differenti nella stessa direzione e stop&reverse soltanto su una delle due entrate (da provare)

    IF  cLong or (cLong2 and CountOfShortShares=0) THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    //IF longOnMarket and  then
    //SELL 1 CONTRACTS AT MARKET
    //endif
    
    If cShort or (cShort2 and CountOfLongsShares=0)  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF
    //If shortOnMarket and  THEN
    //EXITSHORT 1 CONTRACTS AT MARKET
    //ENDIF
    #157958 quote
    MauroPro
    Participant
    Veteran
    IF  cLong or (cLong2 and CountOfShortShares=0) THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    //IF longOnMarket and  then
    //SELL 1 CONTRACTS AT MARKET
    //endif
    
    If cShort or (cShort2 and CountOfLongShares=0)  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF
    //If shortOnMarket and  THEN
    //EXITSHORT 1 CONTRACTS AT MARKET
    //ENDIF
    #157960 quote
    robertogozzi
    Moderator
    Master

    OPer fare lo Stop & Reverse devi cambiare le condizioni di entrata:

    IF  cLong or (cLong2 and CountOfLonfgShares=0) THEN
    
    If cShort or (cShort2 and CountOfShortShares=0)  THEN
    #157962 quote
    MauroPro
    Participant
    Veteran

    Quella che hai scritto era la prima formula che avevo provato! Fa sempre lo stop&reverse, tuttavia non lo fa corretto, mentre mettendo, per il long: cLong OR (cLong2 and countOfShortShares=0) dalle prime prove mi sembra che sia corretto.

    #157970 quote
    MauroPro
    Participant
    Veteran

    Necessitano ulteriori contolli, ma logicamente mi sembra corretto: supponiamo di essere short (indifferentemente con cShort o cShort2), abbiamo in ogni caso una posizione short. Come  può entrare cLong2 (che non deve entrare, può entrare per lo stop&reverse solo cLong) se per entrare ha bisogno che non ci sia aperto uno short?

    (cLong2 and countOfShortShares=o) impedisce di entrare DA  una posizione short in quanto il count è <>0.   Concordi con il ragionamento?

    #157981 quote
    robertogozzi
    Moderator
    Master
    Se countOfShortShares=o significa che on ci sono operazioni Short aperte, quindi come fa a fare Stop & Reverse? puà solo accumulare posizioni Long (se DEFPARAM CumulateOrders <> FALSE).
    #157992 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, ti confermo che scrivere:

    IF  cLong or cLong2  THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    
    
    If cShort or cShort2  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF

    produce gli stessi identici risultati che scrivere:

    IF  cLong or (cLong2 and countoflongshares=0)  THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    
    
    If cShort or (cShort2 and countofshortshares=0)  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF

    ossia stop and reverse completi, ossia da: cLong o cLong2 sia a  cShort che cShort2 (il contrario per lo short)

    se invece si vuole lo stop and reverse parziale, ossia SOLO da cLong sia a cShort che cShort2 (il contrario per lo short) occorre scrivere (e da alcune prove limitate sembra funzionare (in ogni caso  produce risultati diversi dai primi due che sono identici e riduce, come dovrebbe, il numero delle operazioni (ovvio in quanto  vengono presi solo una parte degli stop and reverse, dato che è appunto parziale) occorre scrivere:

    IF  cLong or (cLong2 and countofshortshares=0)  THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    
    
    If cShort or (cShort2 and countoflongshares=0)  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF

    Questa è la bozza di TS assemblata con semplici condizioni, facili da verificare, con cui ho fatto delle prove (Nasdaq micro future – 3 minuti). Spero che mi confermi (o comunque risolvi) la cosa almeno abbiamo chiarito

    DEFPARAM CumulateOrders=False
    //                                                                                                                DATETIME SETTING
    DEFPARAM Flatbefore = 020000
    DEFPARAM Flatafter = 215500
    limitHour = time<213000
    //Ctime = (time >=001500 and time<=215500)
    //------------------------------------------------------------------------------------
    trailingActivation = (close * 0.7 / 100) / pointsize
    trailingDelta = (close * 0.6 / 100) / pointsize
    // ---------------------------------------------------------------------------------------------------------------OSCILLATORS LIST:
    
    //-----------------------------------------------------------------------------------------------------------------------
    myMacd = exponentialaverage[12]-exponentialaverage[32]                  //MY MACD  Mauro
    myMacdSignal = exponentialaverage[52](mymacd)
    myKama = AdaptiveAverage[20,2,30](mymacd)
    //-----------------------------------------------------------------------------------------------------------------------------
    Multiplier     = 3                                                      //SUPERTREND INVERSO Roberto Gozzi
    Periods        = 10
    Multiplier       = Max(1,Min(999,Multiplier))
    Periods          = Max(1,Min(999,Periods))
    IF BarIndex > Max(Periods,Multiplier) THEN
    MyATR         = AverageTrueRange[Periods](close) * Multiplier
    BasicUPPER    = MedianPrice + MyATR
    BasicLOWER    = MedianPrice - MyATR
    IF (BasicUPPER < FinalUPPER[1]) OR (close[1] > FinalUPPER[1]) THEN
    FinalUPPER = BasicUPPER
    ENDIF
    IF (BasicLOWER > FinalLOWER[1]) OR (close[1] < FinalLOWER[1]) THEN
    FinalLOWER = BasicLOWER
    ENDIF
    IF (ST[1] = FinalUPPER[1]) AND (close <= FinalUPPER) THEN
    ST = FinalUPPER
    SX = FinalLOWER
    ELSE
    IF (ST[1] = FinalUPPER[1]) AND (close > FinalUPPER) THEN
    ST = FinalLOWER
    SX = FinalUPPER
    ELSE
    IF (ST[1] = FinalLOWER[1]) AND (close >= FinalLOWER) THEN
    ST = FinalLOWER
    SX = FinalUPPER
    ELSE
    IF (ST[1] = FinalLOWER[1]) AND (close < FinalLOWER) THEN
    ST = FinalUPPER
    SX = FinalLOWER
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    //-------------------------------------------------------------                                LISTA CONDIZIONI SINGOLE
    c1=myMacd>myMacdSignal
    c2=myMacd[5]<myMacdSignal[5]
    c3=high > st
    
    c1A=myMacd>myKama
    c2A=myMacd[5]<myKama[5]
    c3A=high > st
    //--------------------------------------------------------------
    d1=myMacd<myMacdSignal
    d2=myMacd[5]>myMacdSignal[5]
    d3=low < st
    
    d1A=myMacd<myKama
    d2A=myMacd[5]>myKama[5]
    d3A=low < st
    // ------------------------------------------------------------                               CONDIZIONI RAGGRUPPATE
    cLong=c1 and c2 and c3 and limitHour
    cLong2=c1A and c2A and c3A and limitHour
    
    cShort=d1 and d2 and d3 and limitHour
    cShort2=d1A and d2A and d3A and limitHour
    // ------------------------------------------------------------                               CONDIZIONI ENTRATA - USCITA
    IF  cLong or (cLong2 and countofshortshares=0)  THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    
    
    If cShort or (cShort2 and countoflongshares=0)  THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF
    
    //-------------------------------------------------------------                                TRAILING
    If not onmarket then
    MaxPrice=0
    MinPrice=close
    priceExit=0
    endif
    If longonmarket then
    MaxPrice=Max(MaxPrice,high)
    if MaxPrice-tradeprice(1)>trailingActivation*pointsize then
    priceExit=MaxPrice-trailingDelta*pointsize
    endif
    endif
    if shortonmarket then
    MinPrice=Min(MinPrice,low)
    if tradeprice(1)-MinPrice>trailingActivation*pointsize then
    priceExit=Minprice+trailingDelta*pointsize
    endif
    endif
    if onmarket and priceExit>0 then
    sell at priceExit STOP
    exitshort at priceExit STOP
    endif
    //--------------------------------------------------------------                               STOP LOSS e TAKE PROFIT
    Set stop %loss 1
    Set target %profit 1.2

     

    questo problema delle multicondizioni. CIAO

    #158063 quote
    robertogozzi
    Moderator
    Master

    Lo Stop & Reverse lo fa, ovviamente, solo quando sono vere cLong e cShort.

    Con cLong2 e cShort2 non può farlo perché si annullano a vicenda, deve essere vera la condizione, ma non deve esserci nessuna operazione contraria! (come fa a fare Stop & Reverse?)

    Aggiungi queste righe alla fine del codice ed osserva, nella finestra delle variabili, il valore che hanno candela per candela:

    graph countoflongshares
    graph countofshortshares
    graph cLong
    graph cLong2
    graph cShort
    graph cShort2
    graph (cLong2 and countofshortshares=0)
    graph (cShort2 and countoflongshares=0)
    graph shortonmarket
    graph countofshortshares
    

    Io l’ho provato su un NASDAQ diverso, perché quello che tu hai indicato IG non me lo trova (su PRT non ho provato perché non ha il trading automatico). Ma questo non ha importanza, è la logica dell’operazione che conta.

    MauroPro thanked this post
    #158064 quote
    MauroPro
    Participant
    Veteran

    Quello che voglio è appunto questo: uno stop & reverse solo con cLong e cShort, con cLong2 e cShort2 non deve farlo (era questo il problema iniziale che volevo risolvere e la formula scritta nel TS di prova sopra funziona).

    Provo ad aggiungere come suggerisci i graph per monitorare meglio le condizioni.

    Grazie per i suggerimenti.

Viewing 12 posts - 16 through 27 (of 27 total)
  • You must be logged in to reply to this topic.

Strategia con più entrate nella stessa direzione


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 26 replies,
has 2 voices, and was last updated by MauroPro
5 years ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 01/12/2021
Status: Active
Attachments: 3 files
Logo Logo
Loading...