Ingressi frazionati

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #80791 quote
    mourning33
    Participant
    Junior

    Buongiorno,

    sto provando a predisporre il codice per una strategia mean reverting piuttosto semplice, ma sono in difficoltà con l’immissione degli ordini frazionati. Io infatti vorrei entrare a mercato long se il prezzo è maggiore della media mobile a 200 periodi e contemporaneamente l’RSI a 2 periodi è inferiore di 10 utilizzando al massimo 4 ingressi frazionati (40%-30%-20%-10%) nel caso i parametri fossero rispettati. In pratica prima entrerei col 40% della posizione, poi se il giorno successivo le condizioni sono ancora verificate entrerei con un altro 30% e così via fino al 100% della posizione. Ovviamente non riesco ad inserire questi ordini frazionati. Nel codice ho utilizzato per semplicità una posizione totale di 10.000 euro così da entrare prima con 4.000 euro e poi eventualmente con i rimanenti 3.000-2.000 e 1.000 euro. Il problema è che la prima entrata è corretta, mentre poi le rimanenti sono errate e continua ad entrare a mercato superando la quota totale di 10.000 euro, che in effetti non saprei come indicare.

    Ecco il codice:

    mm200 = average[200] (close)
    myrsi = RSI[2] (close)
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND close>mm200 and myrsi<10 THEN
    BUY 4000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 THEN
    BUY 3000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 THEN
    BUY 2000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 THEN
    BUY 1000 CASH AT MARKET
    ENDIF
    // Condizioni per uscire da posizioni long
    If LongOnMarket AND myrsi>70 THEN
    SELL AT MARKET
    ENDIF
    SET STOP %LOSS 10

     

    Riuscireste cortesemente ad indicarmi dove sbaglio?

    Grazie mille!

    #80792 quote
    robertogozzi
    Moderator
    Master

    Devi mettere una variabile che funga fa segnale, che inizi da 0 quando non sei a mercato e poi dovrai mettetla dopo ogni BUY incrementandone (1,2,3) il valore.

    Alle condizioni BUY dovrai aggiungere AND Segnale=0 (per il primo BUY, 1 per il secondo ecc…).

    #80897 quote
    mourning33
    Participant
    Junior

    Ciao,

    ho provato a correggere in questo modo, ma stavolta mi fa sempre e solo la prima entrata e mai quelle successive.

    mm200 = average[200] (close)
    myrsi = RSI[2] (close)
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND close>mm200 and myrsi<10 AND COUNTOFPOSITION=0 THEN
    BUY 4000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND COUNTOFPOSITION=1 THEN
    BUY 3000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10  AND COUNTOFPOSITION=2 THEN
    BUY 2000 CASH AT MARKET
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND COUNTOFPOSITION=3 THEN
    BUY 1000 CASH AT MARKET
    ENDIF
    // Condizioni per uscire da posizioni long
    If LongOnMarket AND myrsi>70 THEN
    SELL AT MARKET
    ENDIF
    SET STOP %LOSS 10
    #80910 quote
    robertogozzi
    Moderator
    Master

    Non Funziona perché COUNTOFPOSITION dopo il primo BUY conterrà 4000, non 1!

    Io ho usato una variabile per contare le operazioni fatte, indipendentemte dai lotti tradati (provalo, io non l’ho testato):

    IF NotOnMarket THEN
       Segnale = 0
    ENDIF
    mm200 = average[200] (close)
    myrsi = RSI[2] (close)
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND close>mm200 and myrsi<10 AND Segnale=0 THEN
       BUY 4000 CASH AT MARKET
       Segnale = 1
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND Segnale=1 THEN
       BUY 3000 CASH AT MARKET
       Segnale = 2
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10  AND Segnale=2 THEN
       BUY 2000 CASH AT MARKET
       Segnale = 3
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND Segnale=3 THEN
       BUY 1000 CASH AT MARKET
       Segnale = 4
    ENDIF
    // Condizioni per uscire da posizioni long
    IF LongOnMarket AND myrsi>70 THEN
       SELL AT MARKET
    ENDIF
    SET STOP %LOSS 10
    #80911 quote
    robertogozzi
    Moderator
    Master

    Scusami, l’ho modificato perché ho notato una mia svista, questo è quello corretto:

    IF NotOnMarket THEN
       Segnale = 0
    ENDIF
    mm200 = average[200] (close)
    myrsi = RSI[2] (close)
    // Condizioni per entrare su posizioni long
    IF NOT LongOnMarket AND close>mm200 and myrsi<10 AND Segnale=0 THEN
       BUY 4000 CASH AT MARKET
       Segnale = 1
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND Segnale[1]=1 THEN
       BUY 3000 CASH AT MARKET
       Segnale = 2
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10  AND Segnale[1]=2 THEN
       BUY 2000 CASH AT MARKET
       Segnale = 2
    ENDIF
    // Condizioni per entrare su posizioni long
    IF LongOnMarket AND close>mm200 and myrsi<10 AND Segnale[1]=3 THEN
       BUY 1000 CASH AT MARKET
       Segnale = 4
    ENDIF
    // Condizioni per uscire da posizioni long
    IF LongOnMarket AND myrsi>70 THEN
       SELL AT MARKET
    ENDIF
    SET STOP %LOSS 10
    #80914 quote
    mourning33
    Participant
    Junior

    Funziona alla grande!

    Grazie mille per l’aiuto!

    robertogozzi thanked this post
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

Ingressi frazionati


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
mourning33 @mourning33 Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by mourning33
7 years, 4 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 09/18/2018
Status: Active
Attachments: No files
Logo Logo
Loading...