Limitare il trading escludendo ceri orari.

Viewing 15 posts - 1 through 15 (of 24 total)
  • Author
    Posts
  • #197551 quote
    Ciccarelli Franco
    Participant
    Junior

    In un codice vorrei escludere la possibilità di funzionare in certi orari.

     

    Grazie

    #197573 quote
    robertogozzi
    Moderator
    Master

    Usa una variabile, chiamiamola

    OrarioValido =Time >= 100000 AND Time <= 170000 //operare tra le 10 e le 17
    IF OrarioValido AND MieCondizioniLong THEN
       BUY 1 Contract at Market
    ENDIF

    ed utilizzala per entrare a mercato (insieme alle altre tue condizioni):

    #197611 quote
    Ciccarelli Franco
    Participant
    Junior

    Ma io voglio escludere solo alcune ore.

     

    Grazie

    #197614 quote
    robertogozzi
    Moderator
    Master

    Allora usa questo codice:

    OrarioNonValido = (Time >= 100000 AND Time <= 120000) OR  (Time >= 150000 AND Time <= 170000) //NON operare tra le 10 e le 12, né tra le 15 e le 17
    IF NOT OrarioNonValido AND MieCondizioniLong THEN
       BUY 1 Contract at Market
    ENDIF

    Ovviamente puoi aggiungere altre fasce orarie di tua scelta.

    #197897 quote
    Ciccarelli Franco
    Participant
    Junior

    Come definisco “Miecondizionilong”?

    #197933 quote
    MauroPro
    Participant
    Veteran

    “Miecondizionilong” è solo un espressione generica per indicare i tuoi segnali di entrata long di una strategia.

    #197942 quote
    Ciccarelli Franco
    Participant
    Junior

    Ho inserito le righe nel codice che allego e mi dice di definire la variabile “miestrategielong”. Come indicare i segnali?

     

    // Big Three Trading Strategy
    // Original Idea from: http://www.tradingstrategyguides.com/big-three-trading-strategy/
    // Market: DAX 30
    // Time Frame: 1 Hour
    // Time Zone: Any
    // Spread: 2.9
    // Version : 2.8
    // Revised on 2017-11-14
    Defparam preloadbars = 3000
    Defparam cumulateorders =false //true //false

    OrarioNonValido = (Time >= 050000 AND Time <= 050000) OR (Time >= 120000 AND Time <= 120000) OR (Time >= 150000 AND Time <= 150000) OR (Time >= 230000 AND Time <=230000) //NON operare tra le 10 e le 12, né tra le 15 e le 17
    IF NOT OrarioNonValido AND MieCondizioniLong THEN
    BUY 1 Contract at Market
    ENDIF

     

     

    //// Optional Function Switch ( 1 = Enable 0 = Disable ) ////
    FixedMinMaxStopLoss = 1 // Optional Function 1
    TargetProfit = 1 // Optional Function 2
    TimeExit = 1 // Optional Function 3
    MFETrailing = 1 // Optional Function 4
    MoneyManagement = 0 // Optional Function 5

    //// Core Indicator Parameter Setting ////
    // Moving Average Setting (Original: 20, 40, 80)
    Fast = fast// Not Optimize
    Medium = medium// Not Optimize
    Slow = slow // Not Optimize

    // Look Back Bar (Original: N/A)
    CP = 3 // Variables Optimized

    //// Optional Function ////
    // 1) Fixed Min Max Stop Loss Setting
    If FixedMinMaxStopLoss then
    //Long
    MaxLong = mal // by points, Variables Optimized
    MinLong = mil// by points, Variables Optimized
    //Short
    MaxShort = mas // by points, Variables Optimized
    MinShort = mis // by points, Variables Optimized
    Endif

    // 2) Take Profit Setting
    If TargetProfit then
    //Long
    TakeProfitLongRate = tpl// by %, Variables Optimized
    //Short
    TakeProfitShortRate = tps // by %, Variables Optimized
    Endif

    // 3) Time Exit Setting
    If TimeExit then
    //Long
    ONCE maxCandlesLongWithProfit = 78 // by bar, Variables Optimized
    ONCE maxCandlesLongWithoutProfit = 66 // by bar, Variables Optimized
    //Short
    ONCE maxCandlesShortWithProfit = 60 // by bar, Variables Optimized
    ONCE maxCandlesShortWithoutProfit = 54 // by bar, Variables Optimized
    Endif

    // 4) MFE Step Setting
    If MFETrailing then
    //Long
    MFELongStep = mefl // by %, Variables Optimized
    //Short
    MFEShortStep = mefs // by %, Variables Optimized
    Endif

    // 5) Money Management
    If MoneyManagement then
    LongRisk = 5// by %, Variables Optimized
    ShortRisk = 3 // by %, Variables Optimized
    CloseBalanceMaxDrop = 80 // by %, Personal preference
    Capital = 3000 // by $
    Equity = Capital + StrategyProfit
    LongMaxRisk = Round(Equity*LongRisk/100)
    ShortMaxRisk = Round(Equity*ShortRisk/100)

    //Max Contract
    MaxLongContract = 500 // by contract, Variables Optimized
    MaxShortContract = 100 // by contract, Variables Optimized

    //Check system account balance
    If equity<QuitLevel then
    Quit
    Endif
    RecordHighest = MAX(RecordHighest,Equity)
    QuitLevel = RecordHighest*((100-CloseBalanceMaxDrop)/100)
    Endif

    // Core indicator

    //Big Three MA
    FMA = Average[Fast](close) //green coloured(0,255,0)
    MMA = Average[Medium](close) //blue coloured(0,0,255)
    SMA = Average[Slow](close) //red coloured(255,0,0)

    // Entry Rules
    //Buy Signal
    B1 = low > SMA and low>MMA and low>FMA
    B2 = high >= highest[CP](high)
    BC = B1 and B2

    //Buy Candle
    BC1 = Close[1] < Close[2]
    BC2 = Close > Close[1]
    BC3 = Close > Open
    BCandle = BC1 and BC2 and BC3

    //Sell Signal
    S1 = high < FMA and high<MMA and high<SMA
    S2 = low <= lowest[CP](low)
    SC = S1 and S2

    //Sell Candle
    SC1 = Close[1] > Close[2]
    SC2 = Close < Close[1]
    SC3 = Close < Open
    SCandle = SC1 and SC2 and SC3

    // Exit Rules
    LongExit = Close crosses under SMA
    ShortExit = Close crosses over SMA

    //Long Entry
    If Not LongonMarket and BC and BCandle then
    BuyPrice = Close

    If FixedMinMaxStopLoss then
    StopLossLong = MIN(MaxLong,MAX(MinLong,(BuyPrice – SMA)))
    Else
    StopLossLong = BuyPrice – SMA
    Endif

    If TargetProfit then
    TakeProfitLong = StopLossLong * TakeProfitLongRate
    TP = TakeProfitLong
    Endif

    SL = StopLossLong

    If MoneyManagement then
    PositionSizeLong = min(MaxLongContract,(max(2,abs(round((LongMaxRisk/StopLossLong)/PointValue)*pipsize))))
    BUY PositionSizeLong CONTRACT AT MARKET
    Else
    BUY 1 CONTRACT AT MARKET
    Endif

    Endif

    //Long Exit
    If LongonMarket and LongExit then
    sell at market
    Endif

    //short entry
    If Not ShortonMarket and SC and SCandle then
    SellPrice = Close

    If FixedMinMaxStopLoss then
    StopLossShort = MIN(MaxShort,MAX(MinShort,(SMA – SellPrice)))
    Else
    StopLossShort = SMA – SellPrice
    Endif

    If TargetProfit then
    TakeProfitShort = StopLossShort * TakeProfitShortRate
    TP = TakeProfitShort
    Endif

    SL = StopLossShort

    If MoneyManagement then
    PositionSizeShort = min(MaxShortContract,(max(2,abs(round((ShortMaxRisk/StopLossShort)/PointValue)*pipsize))))
    SELLSHORT PositionSizeShort CONTRACT AT MARKET
    Else
    SELLSHORT 1 CONTRACT AT MARKET
    Endif

    Endif

    //Short Exit
    If ShortonMarket and ShortExit then
    exitshort at market
    Endif

    // Time Exit
    If TimeExit then
    If LongonMarket then
    posProfit = (((close – positionprice) * pointvalue) * countofposition) / pipsize
    elsif ShortonMarket then
    posProfit = (((positionprice – close) * pointvalue) * countofposition) / pipsize
    Endif

    m1 = posProfit > 0 AND (BarIndex – TradeIndex) >= maxCandlesLongWithProfit
    m2 = posProfit > 0 AND (BarIndex – TradeIndex) >= maxCandlesShortWithProfit
    m3 = posProfit < 0 AND (BarIndex – TradeIndex) >= maxCandlesLongWithoutProfit
    m4 = posProfit < 0 AND (BarIndex – TradeIndex) >= maxCandlesShortWithoutProfit

    // take profit after max candles
    IF LONGONMARKET AND (m1 OR m3) THEN
    sell at market
    endif
    IF SHORTONMARKET AND (m2 OR m4) THEN
    exitshort at market
    endif
    Endif

    //MFE Trailing stop
    If MFETrailing then

    MFELong = (TakeProfitLong/MFELongStep)
    MFEShort = (TakeProfitShort/MFEShortStep)

    If not onmarket then
    MAXPRICE = 0
    MINPRICE = close
    priceexit = 0
    Endif

    If longonmarket then
    MAXPRICE = MAX(MAXPRICE,close)
    If MAXPRICE-tradeprice(1)>=MFELong*pointsize then
    priceexit = MAXPRICE-MFELong*pointsize
    Endif
    Endif

    If shortonmarket then
    MINPRICE = MIN(MINPRICE,close)
    If tradeprice(1)-MINPRICE>=MFEShort*pointsize then
    priceexit = MINPRICE+MFEShort*pointsize
    Endif
    Endif

    If onmarket and priceexit>0 then
    EXITSHORT AT priceexit STOP
    SELL AT priceexit STOP
    Endif
    Endif

    // Stop Loss a
    SET STOP LOSS SL

    // Target Profit
    If TargetProfit then
    SET TARGET PROFIT TP
    Endif

    #197945 quote
    robertogozzi
    Moderator
    Master

    OrarioNonValido va bene come lo hai definito, anche se, quando il primo ed il secondo orario sono uguali puoi mettere solo OrarioNonValido  =  (Time = 050000) OR (Time = 120000) OR (Time = 150000) OR (Time =230000), comunque la forma che hai usato è corretta.

    Quello che non va bene sono le 3 righe successive. NON devi creare delle righe apposite con BUY o SELLSHORT, ma DEVI solo aggiungere IF NOT OrarioNonValido alle tue normali condizioni per entrare in posizione. Non esiste la variabile MieCondizioniLong, come ha scritto MauroPro, è semplicemente un modo per indicare una qualunque delle tue condizioni per aprire un’operazione, non necessariamente LONG, io ho indicato Long semplicemente perché ho fatto un esempio con BUY.

    Quindi, dove tu hai scrtto If Not ShortonMarket and SC and SCandle then, devi scrivere IF NOT OrarioNonValido AND Not ShortonMarket and SC and SCandle then. Lo stesso devi fare per le operazioni Long.

    #197998 quote
    Ciccarelli Franco
    Participant
    Junior

    Ho fatto esattamente (almeno credo) come da te descritto, ma facendolo girare in un test, non mi fa nessuna operazione.

     

    Grazie

    #198004 quote
    robertogozzi
    Moderator
    Master

    Posta l’ultimo codice che hai usato, con le modifiche.

    L’hai uasto sul grafico orario? su quale strumento?

    #198022 quote
    Ciccarelli Franco
    Participant
    Junior

    Il sottostante è il dax 1 Euro il tf 1 ora, di seguito il codice

     

    Defparam preloadbars = 3000
    Defparam cumulateorders =false //true //false

    OrarioNonValido = (Time = 050000 ) OR (Time = 120000 ) OR (Time= 150000) OR (Time =230000) //NON operare tra le 10 e le 12, né tra le 15 e le 17

     

    //// Optional Function Switch ( 1 = Enable 0 = Disable ) ////
    FixedMinMaxStopLoss = 1 // Optional Function 1
    TargetProfit = 1 // Optional Function 2
    TimeExit = 1 // Optional Function 3
    MFETrailing = 1 // Optional Function 4
    MoneyManagement = 0 // Optional Function 5

    //// Core Indicator Parameter Setting ////
    // Moving Average Setting (Original: 20, 40, 80)
    Fast = fast// Not Optimize
    Medium = medium// Not Optimize
    Slow = slow // Not Optimize

    // Look Back Bar (Original: N/A)
    CP = 3 // Variables Optimized

    //// Optional Function ////
    // 1) Fixed Min Max Stop Loss Setting
    If FixedMinMaxStopLoss then
    //Long
    MaxLong = mal // by points, Variables Optimized
    MinLong = mil// by points, Variables Optimized
    //Short
    MaxShort = mas // by points, Variables Optimized
    MinShort = mis // by points, Variables Optimized
    Endif

    // 2) Take Profit Setting
    If TargetProfit then
    //Long
    TakeProfitLongRate = tpl// by %, Variables Optimized
    //Short
    TakeProfitShortRate = tps // by %, Variables Optimized
    Endif

    // 3) Time Exit Setting
    If TimeExit then
    //Long
    ONCE maxCandlesLongWithProfit = 78 // by bar, Variables Optimized
    ONCE maxCandlesLongWithoutProfit = 66 // by bar, Variables Optimized
    //Short
    ONCE maxCandlesShortWithProfit = 60 // by bar, Variables Optimized
    ONCE maxCandlesShortWithoutProfit = 54 // by bar, Variables Optimized
    Endif

    // 4) MFE Step Setting
    If MFETrailing then
    //Long
    MFELongStep = mefl // by %, Variables Optimized
    //Short
    MFEShortStep = mefs // by %, Variables Optimized
    Endif

    // 5) Money Management
    If MoneyManagement then
    LongRisk = 5// by %, Variables Optimized
    ShortRisk = 3 // by %, Variables Optimized
    CloseBalanceMaxDrop = 80 // by %, Personal preference
    Capital = 3000 // by $
    Equity = Capital + StrategyProfit
    LongMaxRisk = Round(Equity*LongRisk/100)
    ShortMaxRisk = Round(Equity*ShortRisk/100)

    //Max Contract
    MaxLongContract = 500 // by contract, Variables Optimized
    MaxShortContract = 100 // by contract, Variables Optimized

    //Check system account balance
    If equity<QuitLevel then
    Quit
    Endif
    RecordHighest = MAX(RecordHighest,Equity)
    QuitLevel = RecordHighest*((100-CloseBalanceMaxDrop)/100)
    Endif

    // Core indicator

    //Big Three MA
    FMA = Average[Fast](close) //green coloured(0,255,0)
    MMA = Average[Medium](close) //blue coloured(0,0,255)
    SMA = Average[Slow](close) //red coloured(255,0,0)

    // Entry Rules
    //Buy Signal
    B1 = low > SMA and low>MMA and low>FMA
    B2 = high >= highest[CP](high)
    BC = B1 and B2

    //Buy Candle
    BC1 = Close[1] < Close[2]
    BC2 = Close > Close[1]
    BC3 = Close > Open
    BCandle = BC1 and BC2 and BC3

    //Sell Signal
    S1 = high < FMA and high<MMA and high<SMA
    S2 = low <= lowest[CP](low)
    SC = S1 and S2

    //Sell Candle
    SC1 = Close[1] > Close[2]
    SC2 = Close < Close[1]
    SC3 = Close < Open
    SCandle = SC1 and SC2 and SC3

    // Exit Rules
    LongExit = Close crosses under SMA
    ShortExit = Close crosses over SMA

    //Long Entry
    If Not OrarioNonValido AND LongonMarket and BC and BCandle then
    BuyPrice = Close

    If FixedMinMaxStopLoss then
    StopLossLong = MIN(MaxLong,MAX(MinLong,(BuyPrice – SMA)))
    Else
    StopLossLong = BuyPrice – SMA
    Endif

    If TargetProfit then
    TakeProfitLong = StopLossLong * TakeProfitLongRate
    TP = TakeProfitLong
    Endif

    SL = StopLossLong

    If MoneyManagement then
    PositionSizeLong = min(MaxLongContract,(max(2,abs(round((LongMaxRisk/StopLossLong)/PointValue)*pipsize))))
    BUY PositionSizeLong CONTRACT AT MARKET
    Else
    BUY 1 CONTRACT AT MARKET
    Endif

    Endif

    //Long Exit
    If LongonMarket and LongExit then
    sell at market
    Endif

    //short entry
    If Not OrarioNonValido AND ShortonMarket and SC and SCandle then
    SellPrice = Close

    If FixedMinMaxStopLoss then
    StopLossShort = MIN(MaxShort,MAX(MinShort,(SMA – SellPrice)))
    Else
    StopLossShort = SMA – SellPrice
    Endif

    If TargetProfit then
    TakeProfitShort = StopLossShort * TakeProfitShortRate
    TP = TakeProfitShort
    Endif

    SL = StopLossShort

    If MoneyManagement then
    PositionSizeShort = min(MaxShortContract,(max(2,abs(round((ShortMaxRisk/StopLossShort)/PointValue)*pipsize))))
    SELLSHORT PositionSizeShort CONTRACT AT MARKET
    Else
    SELLSHORT 1 CONTRACT AT MARKET
    Endif

    Endif

    //Short Exit
    If ShortonMarket and ShortExit then
    exitshort at market
    Endif

    // Time Exit
    If TimeExit then
    If LongonMarket then
    posProfit = (((close – positionprice) * pointvalue) * countofposition) / pipsize
    elsif ShortonMarket then
    posProfit = (((positionprice – close) * pointvalue) * countofposition) / pipsize
    Endif

    m1 = posProfit > 0 AND (BarIndex – TradeIndex) >= maxCandlesLongWithProfit
    m2 = posProfit > 0 AND (BarIndex – TradeIndex) >= maxCandlesShortWithProfit
    m3 = posProfit < 0 AND (BarIndex – TradeIndex) >= maxCandlesLongWithoutProfit
    m4 = posProfit < 0 AND (BarIndex – TradeIndex) >= maxCandlesShortWithoutProfit

    // take profit after max candles
    IF LONGONMARKET AND (m1 OR m3) THEN
    sell at market
    endif
    IF SHORTONMARKET AND (m2 OR m4) THEN
    exitshort at market
    endif
    Endif

    //MFE Trailing stop
    If MFETrailing then

    MFELong = (TakeProfitLong/MFELongStep)
    MFEShort = (TakeProfitShort/MFEShortStep)

    If not onmarket then
    MAXPRICE = 0
    MINPRICE = close
    priceexit = 0
    Endif

    If longonmarket then
    MAXPRICE = MAX(MAXPRICE,close)
    If MAXPRICE-tradeprice(1)>=MFELong*pointsize then
    priceexit = MAXPRICE-MFELong*pointsize
    Endif
    Endif

    If shortonmarket then
    MINPRICE = MIN(MINPRICE,close)
    If tradeprice(1)-MINPRICE>=MFEShort*pointsize then
    priceexit = MINPRICE+MFEShort*pointsize
    Endif
    Endif

    If onmarket and priceexit>0 then
    EXITSHORT AT priceexit STOP
    SELL AT priceexit STOP
    Endif
    Endif

    // Stop Loss a
    SET STOP LOSS SL

    // Target Profit
    If TargetProfit then
    SET TARGET PROFIT TP
    Endif

    #198297 quote
    Ciccarelli Franco
    Participant
    Junior

    Non funziona?

    #198367 quote
    robertogozzi
    Moderator
    Master

    No, perché mancano delle variabili, probabilmente sono nell’ottimizzatore.

    Allega il file ITF.

    #198398 quote
    Ciccarelli Franco
    Participant
    Junior

    In allegato il file Itf

    #198438 quote
    robertogozzi
    Moderator
    Master

    Sostituisci la riga 133 con:

    If Not OrarioNonValido AND Not OnMarket and BC and BCandle then

    e la riga 164 con:

    If Not OrarioNonValido AND Not OnMarket and SC and SCandle then

    perché per entrare NON può attendere di essere già a mercato!

Viewing 15 posts - 1 through 15 (of 24 total)
  • You must be logged in to reply to this topic.

Limitare il trading escludendo ceri orari.


ProOrder: Trading Automatico & Backtesting

New Reply
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 07/20/2022
Status: Active
Attachments: 2 files
Logo Logo
Loading...