ProOrder no permite el uso de stops combinados

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #201792 quote
    sb0300
    Participant
    New

     

    Hola, alguien sabria decirme como pongo el trailing stop y el stop loss para que me deje hacer el proorder automatico, o es imposible???

    // quitado filtro horario: AND Time > 143000 AND Time < 220000

    periodos = 50

    // Condiciones para entrada de posiciones largas
    IF NOT LongOnMarket AND Open < ExponentialAverage[periodos](Close) AND Close > ExponentialAverage[periodos](Close) THEN
    BUY lotes CONTRACTS AT MARKET
    SET STOP LOSS sl pTRAILING tl
    SET TARGET pPROFIT tp
    ENDIF

    // Condiciones de entrada de posiciones cortas
    IF NOT ShortOnMarket AND Open > ExponentialAverage[periodos](Close) AND Close < ExponentialAverage[periodos](Close) THEN
    SELLSHORT lotes CONTRACTS AT MARKET
    SET STOP LOSS sl pTRAILING tl
    SET TARGET pPROFIT tp
    ENDIF

    #201795 quote
    robertogozzi
    Moderator
    Master

    El manual dice que puedes usar:

    SET STOP LOSS sl pTRAILING tl

    pero en realidad solo puede hacerlo en backtests, NO en autotrading, ya que no puede escribir dos tipos diferentes de stop loss en la misma línea.

    Necesitas usar uno de estos dos:

    SET STOP pLOSS sl      //or SET STOP LOSS sl
    SET STOP pTRAILING tl  //or SET STOP TRAILING tl

    si usa ambos, la segunda línea anulará la primera, ya que el código se lee secuencialmente de arriba a abajo.

    #201817 quote
    sb0300
    Participant
    New

    Muchas gracias por contestar,Mila verdad que yo soy de letras y esto me cuesta mucho, entonces le agradezco si me puede ayudar…

    lo que quiero es si por ejemplo entro en NQ al precio de 11000, poner un stop los de 50 puntos y un profit de 150, cuando el precio se haya ido a 11020, que el stop pase a breakeven +2, si el precio llega a 11025 que el stop pase a 11020 y ya vaya persiguiendo al precio a 5 puntos de distancia.  Esto sería posible??
    muchas gracias

    Susana Arias

    #201860 quote
    robertogozzi
    Moderator
    Master

    Agregue, al final de su código, este escrito por Nicolás (lo modifiqué ligeramente para que los puntos se guardaran en el punto de breakeven).

    Solo tienes que poner los valores que prefieras a los tres parámetros:

    • trailingstart
    • trailingstep
    • PointsToKeep
    //*********************************************************************************
    // https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
    // (lines 17- 56)
    //
    //trailing stop function
    trailingstart = 20   //trailing will start @trailinstart points profit
    trailingstep  = 5    //trailing step to move the "stoploss"
    PointsToKeep  = 2    //keep rhese points when it is first triggered
     
    //reset the stoploss value
    IF NOT ONMARKET THEN
     newSL=0
    ENDIF
     
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
     IF newSL=0 AND (close-tradeprice(1)) >= trailingstart*pipsize THEN
      newSL = tradeprice(1)+PointsToKeep*pipsize
     ENDIF
    //next moves
     IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
      newSL = newSL+trailingstep*pipsize
     ENDIF
    ENDIF
     
    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
     IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
      newSL = tradeprice(1)-PointsToKeep*pipsize
     ENDIF
    //next moves
     IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
      newSL = newSL-trailingstep*pipsize
     ENDIF
    ENDIF
     
    //stop order to exit the positions
    IF newSL>0 THEN
     SELL AT newSL STOP
     EXITSHORT AT newSL STOP
    ENDIF
    //*********************************************************************************
    #201912 quote
    sb0300
    Participant
    New

    Hola, pego tu código después del mío pero me da error, algo tengo que estar haciendo mal…puedes ayudarme por favor, lo que quiero es que haga la entrada tanto en corto como en largo al cierre de vela por encima (largo) o por debajo (corto) de la EMA 20, y si por ejemplo entro en NQ al precio de 11000, poner un stop loss de 50 puntos y un profit de 150, cuando el precio se haya ido a 11020, que el stop pase a breakeven +2, si el precio llega a 11025 que el stop pase a 11020 y ya vaya persiguiendo al precio a 5 puntos de distancia. cuando hago el backtesting me da error y no se porque, ya he cambiado mil cosas y nada…

    saludos

    Susana

    // quitado filtro horario: AND Time > 143000 AND Time < 220000

    periodos = 50

    // Condiciones para entrada de posiciones largas
    IF NOT LongOnMarket AND Open < ExponentialAverage[periodos](Close) AND Close > ExponentialAverage[periodos](Close) THEN
    BUY lotes CONTRACTS AT MARKET
    SET STOP LOSS sl pTRAILING tl
    SET TARGET pPROFIT tp
    ENDIF

    // Condiciones de entrada de posiciones cortas
    IF NOT ShortOnMarket AND Open > ExponentialAverage[periodos](Close) AND Close < ExponentialAverage[periodos](Close) THEN
    SELLSHORT lotes CONTRACTS AT MARKET
    SET STOP LOSS sl pTRAILING tl
    SET TARGET pPROFIT tp
    ENDIF

    <span class=”crayon-c”>//*********************************************************************************</span>
    <span class=”crayon-c”>// (lines 17- 56)</span>
    <span class=”crayon-c”>//</span>
    <span class=”crayon-c”>//trailing stop function</span>
    trailingstart <span class=”crayon-o”>=</span> <span class=”crayon-cn”>20</span><span class=”crayon-h”>   </span><span class=”crayon-c”>//trailing will start @trailinstart points profit</span>
    trailingstep<span class=”crayon-h”>  </span><span class=”crayon-o”>=</span> <span class=”crayon-cn”>5</span><span class=”crayon-h”>    </span><span class=”crayon-c”>//trailing step to move the “stoploss”</span>
    PointsToKeep<span class=”crayon-h”>  </span><span class=”crayon-o”>=</span> <span class=”crayon-cn”>2</span><span class=”crayon-h”>    </span><span class=”crayon-c”>//keep rhese points when it is first triggered</span>
    <span class=”crayon-c”>//reset the stoploss value</span>
    <span class=”crayon-st”>IF</span> <span class=”crayon-st”>NOT</span> <span class=”crayon-st”>ONMARKET</span> <span class=”crayon-st”>THEN</span>
    newSL<span class=”crayon-o”>=</span><span class=”crayon-cn”>0</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//manage long positions</span>
    <span class=”crayon-st”>IF</span> <span class=”crayon-st”>LONGONMARKET</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-c”>//first move (breakeven)</span>
    <span class=”crayon-st”>IF</span> newSL<span class=”crayon-o”>=</span><span class=”crayon-cn”>0</span> <span class=”crayon-st”>AND</span> (<span class=”crayon-st”>close</span><span class=”crayon-o”>-</span><span class=”crayon-st”>tradeprice</span>(<span class=”crayon-cn”>1</span>)) <span class=”crayon-o”>>=</span> trailingstart<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-h”>  </span>newSL <span class=”crayon-o”>=</span> <span class=”crayon-st”>tradeprice</span>(<span class=”crayon-cn”>1</span>)<span class=”crayon-o”>+</span>PointsToKeep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//next moves</span>
    <span class=”crayon-st”>IF</span> newSL<span class=”crayon-o”>></span><span class=”crayon-cn”>0</span> <span class=”crayon-st”>AND</span> <span class=”crayon-st”>close</span><span class=”crayon-o”>-</span>newSL<span class=”crayon-o”>>=</span>trailingstep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-h”>  </span>newSL <span class=”crayon-o”>=</span> newSL<span class=”crayon-o”>+</span>trailingstep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//manage short positions</span>
    <span class=”crayon-st”>IF</span> <span class=”crayon-st”>SHORTONMARKET</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-c”>//first move (breakeven)</span>
    <span class=”crayon-st”>IF</span> newSL<span class=”crayon-o”>=</span><span class=”crayon-cn”>0</span> <span class=”crayon-st”>AND</span> <span class=”crayon-st”>tradeprice</span>(<span class=”crayon-cn”>1</span>)<span class=”crayon-o”>-</span><span class=”crayon-st”>close</span><span class=”crayon-o”>>=</span>trailingstart<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-h”>  </span>newSL <span class=”crayon-o”>=</span> <span class=”crayon-st”>tradeprice</span>(<span class=”crayon-cn”>1</span>)<span class=”crayon-o”>-</span>PointsToKeep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//next moves</span>
    <span class=”crayon-st”>IF</span> newSL<span class=”crayon-o”>></span><span class=”crayon-cn”>0</span> <span class=”crayon-st”>AND</span> newSL<span class=”crayon-o”>-</span><span class=”crayon-st”>close</span><span class=”crayon-o”>>=</span>trailingstep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-h”>  </span>newSL <span class=”crayon-o”>=</span> newSL<span class=”crayon-o”>-</span>trailingstep<span class=”crayon-o”>*</span><span class=”crayon-st”>pipsize</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//stop order to exit the positions</span>
    <span class=”crayon-st”>IF</span> newSL<span class=”crayon-o”>></span><span class=”crayon-cn”>0</span> <span class=”crayon-st”>THEN</span>
    <span class=”crayon-st”>SELL</span> <span class=”crayon-st”>AT</span> newSL <span class=”crayon-st”>STOP</span>
    <span class=”crayon-st”>EXITSHORT</span> <span class=”crayon-st”>AT</span> newSL <span class=”crayon-st”>STOP</span>
    <span class=”crayon-st”>ENDIF</span>
    <span class=”crayon-c”>//*********************************************************************************</span>
    #201927 quote
    robertogozzi
    Moderator
    Master

    Te invito a releer el post  https://www.prorealcode.com/topic/proorder-no-permite-el-uso-de-stops-combinados/#post-201795.

    Esto funciona:

    DEFPARAM CumulateOrders = False
    
    // quitado filtro horario: AND Time > 143000 AND Time < 220000
    
    periodos = 100
    lotes    = 1
    sl       = 50
    tp       = 150
    
    // Condiciones para entrada de posiciones largas
    IF NOT LongOnMarket AND Open < ExponentialAverage[periodos](Close) AND Close > ExponentialAverage[periodos](Close) THEN
    BUY lotes CONTRACTS AT MARKET
    SET STOP LOSS sl
    SET TARGET pPROFIT tp
    ENDIF
    
    // Condiciones de entrada de posiciones cortas
    IF NOT ShortOnMarket AND Open > ExponentialAverage[periodos](Close) AND Close < ExponentialAverage[periodos](Close) THEN
    SELLSHORT lotes CONTRACTS AT MARKET
    SET STOP LOSS sl
    SET TARGET pPROFIT tp
    ENDIF
    //
    //*********************************************************************************
    // https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
    // (lines 17- 56)
    //
    //trailing stop function
    trailingstart = 20   //trailing will start @trailinstart points profit
    trailingstep  = 5    //trailing step to move the "stoploss"
    PointsToKeep  = 2    //keep rhese points when it is first triggered
     
    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
     
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND (close-tradeprice(1)) >= trailingstart*pipsize THEN
    newSL = tradeprice(1)+PointsToKeep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF
     
    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-PointsToKeep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF
     
    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    //*********************************************************************************
    graphonprice TradePrice
    graphonprice NewSL      coloured(255,0,0,255)
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

ProOrder no permite el uso de stops combinados


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
sb0300 @sb0300 Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by robertogozzi
3 years, 5 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 10/02/2022
Status: Active
Attachments: No files
Logo Logo
Loading...