Trasformare Strategia in Screener

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #76097 quote
    GianlucaGianluca
    Participant
    Master

    Salve, vorrei utilizzare alcune strategie sui mercati ufficiali, visto che li non è possibile utilizzare il trading automatico vorrei poter convertire una strategia in uno screener (oppure un indicatore), ora nello specifico ci sono alcune strategie che indicano l’eventuale prezzo di entrata, e riporto qui sotto la strategia di breakout esposta da Nicolas e modificata da Ale.
    potreste aiutarmi a convertirla? da li poi penso di riuscire a convertire anche le altre differenti che ho.
    Grazie.

    // MAIN CODE : BREAKOUT STRATEGY BY NICOLAS, COSMIC1
    // INSPIRED BY BRAKOUT DAX 15MIN - COSMIC1 AND PROREALCODE SHARING COMMUNITY
    //-------------------------------------------------------------------------
    // IG MARKET GERMANY 30 CASH (EUR 1 MINI) - SPREAD 1 - 15 MIN
    // WE DO NOT STORE DATA UNTIL THE SYSTEM STARTS.
    // IF IT IS THE FIRST DAY THAT THE SYSTEM IS LAUNCHED AND IF IT IS AFTERNOON,
    // IT WILL WAIT UNTIL THE NEXT DAY FOR DEFINING SELL AND BUY ORDERS.
    
    //ALL TIMES ARE +0200 UTC/GMT
    
    DEFPARAM PRELOADBARS = 0
    
    // POSITION IS CLOSED AT 21H00 PM
    DEFPARAM FLATAFTER = 210000
    
    // NO NEW POSITION WILL BE INITIATED AFTER THE 16:00PM CANDLESTICK. ANY EXISTING ORDERS CANCELLED AT 17:15PM
    LIMITHOUR = 181400
    
    // MARKET SCAN BEGIN WITH THE 15 MINUTE CANDLESTICK THAT CLOSED AT 9:15AM
    STARTHOUR = 091500
    
    IF  DAYOFWEEK =1 THEN
    TRADINGDAY = 0
    ELSE
    TRADINGDAY = 1
    ENDIF
    
    // VARIABLES THAT WOULD BE ADAPTED TO YOUR PREFERENCES
    IF TIME = 080000 THEN
    //POSITIONSIZE = MAX(1,1+ROUND((STRATEGYPROFIT-1000)/1000)) //GAIN RE-INVEST TRADE VOLUME
    POSITIONSIZE = 1 //CONSTANT TRADE VOLUME OVER THE TIME
    ENDIF
    MAXAMPLITUDE = 120
    MINAMPLITUDE = 60
    ORDERDISTANCE = 7
    POURCENTAGEMIN = 20
    
    // VARIABLE INITILIZATION ONCE AT SYSTEM START
    ONCE STARTTRADINGDAY = -1
    
    // VARIABLES THAT CAN CHANGE IN INTRADAY ARE INITILIAZED
    // AT FIRST BAR ON EACH NEW DAY
    IF (TIME <= STARTHOUR AND STARTTRADINGDAY <> 0) OR INTRADAYBARINDEX = 0 THEN
    BUYTRESHOLD = 0
    SELLTRESHOLD = 0
    BUYPOSITION = 0
    SELLPOSITION = 0
    STARTTRADINGDAY = 0
    ELSIF TIME >= STARTHOUR AND STARTTRADINGDAY = 0 AND TRADINGDAY = 1 THEN
    
    // WE STORE THE FIRST TRADING DAY BAR INDEX
    DAYSTARTINDEX = INTRADAYBARINDEX
    STARTTRADINGDAY = 1
    ELSIF STARTTRADINGDAY = 1 AND TIME <= LIMITHOUR THEN
    
    // FOR EACH TRADING DAY, WE DEFINE EACH 15 MINUTES
    // THE HIGHER AND LOWER PRICE VALUE OF THE INSTRUMENT SINCE STARTHOUR
    // UNTIL THE BUY AND SELL TRESHOLDS ARE NOT DEFINED
    IF BUYTRESHOLD = 0 OR SELLTRESHOLD = 0 THEN
    HIGHLEVEL = HIGHEST[INTRADAYBARINDEX - DAYSTARTINDEX + 1](HIGH)
    LOWLEVEL = LOWEST [INTRADAYBARINDEX - DAYSTARTINDEX + 1](LOW)
    
    // SPREAD CALCULATION BETWEEN THE HIGHER AND THE
    // LOWER VALUE OF THE INSTRUMENT SINCE STARTHOUR
    DAYSPREAD = HIGHLEVEL - LOWLEVEL
    
    // MINIMAL SPREAD CALCULATION ALLOWED TO CONSIDER A SIGNIFICANT PRICE BREAKOUT
    // OF THE HIGHER AND LOWER VALUE
    MINSPREAD = DAYSPREAD * POURCENTAGEMIN / 100
    
    // BUY AND SELL TRESHOLDS FOR THE ACTUAL IF CONDITIONS ARE MET
    IF DAYSPREAD <= MAXAMPLITUDE THEN
    IF SELLTRESHOLD = 0 AND (CLOSE - LOWLEVEL) >= MINSPREAD THEN
    SELLTRESHOLD = LOWLEVEL + ORDERDISTANCE
    ENDIF
    IF BUYTRESHOLD = 0 AND (HIGHLEVEL - CLOSE) >= MINSPREAD THEN
    BUYTRESHOLD = HIGHLEVEL - ORDERDISTANCE
    ENDIF
    ENDIF
    ENDIF
    
    // CREATION OF THE BUY AND SELL ORDERS FOR THE DAY
    // IF THE CONDITIONS ARE MET
    IF SELLTRESHOLD > 0 AND BUYTRESHOLD > 0 AND (BUYTRESHOLD - SELLTRESHOLD) >= MINAMPLITUDE THEN
    IF BUYPOSITION = 0 THEN
    IF LONGONMARKET THEN
    BUYPOSITION = 1
    ELSE
    BUY POSITIONSIZE CONTRACT AT BUYTRESHOLD STOP
    ENDIF
    ENDIF
    IF SELLPOSITION = 0 THEN
    IF SHORTONMARKET THEN
    SELLPOSITION = 1
    ELSE
    SELLSHORT POSITIONSIZE CONTRACT AT SELLTRESHOLD STOP
    ENDIF
    ENDIF
    ENDIF
    // CONDITIONS DEFINITIONS TO EXIT MARKET WHEN A BUY OR SELL ORDER IS ALREADY LAUNCHED
    IF LONGONMARKET AND (TIME> LIMITHOUR) THEN
    SELL AT SELLTRESHOLD STOP
    ELSIF SHORTONMARKET AND (TIME > LIMITHOUR) THEN
    EXITSHORT AT BUYTRESHOLD STOP
    ENDIF
    
    //Regards Ale
    
    #76100 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Prova questo codice, ho solo tolto i BUY/SELL SELLSHORT/EXITSHORT, sostituendoli con i seguenti valori da restituire:

    • 1 = Buy
    • 2 = Sellshort
    • 5 = Sell
    • 6 = Exitshort
    // MAIN CODE : BREAKOUT STRATEGY BY NICOLAS, COSMIC1
    // INSPIRED BY BRAKOUT DAX 15MIN - COSMIC1 AND PROREALCODE SHARING COMMUNITY
    //-------------------------------------------------------------------------
    // IG MARKET GERMANY 30 CASH (EUR 1 MINI) - SPREAD 1 - 15 MIN
    // WE DO NOT STORE DATA UNTIL THE SYSTEM STARTS.
    // IF IT IS THE FIRST DAY THAT THE SYSTEM IS LAUNCHED AND IF IT IS AFTERNOON,
    // IT WILL WAIT UNTIL THE NEXT DAY FOR DEFINING SELL AND BUY ORDERS.
     
    //ALL TIMES ARE +0200 UTC/GMT
     
    //DEFPARAM PRELOADBARS = 0
     
    // POSITION IS CLOSED AT 21H00 PM
    //DEFPARAM FLATAFTER = 210000
     
    // NO NEW POSITION WILL BE INITIATED AFTER THE 16:00PM CANDLESTICK. ANY EXISTING ORDERS CANCELLED AT 17:15PM
    LIMITHOUR = 181400
     
    // MARKET SCAN BEGIN WITH THE 15 MINUTE CANDLESTICK THAT CLOSED AT 9:15AM
    STARTHOUR = 091500
     
    IF  DAYOFWEEK =1 THEN
    TRADINGDAY = 0
    ELSE
    TRADINGDAY = 1
    ENDIF
     
    // VARIABLES THAT WOULD BE ADAPTED TO YOUR PREFERENCES
    //IF TIME = 080000 THEN
    //POSITIONSIZE = MAX(1,1+ROUND((STRATEGYPROFIT-1000)/1000)) //GAIN RE-INVEST TRADE VOLUME
    //POSITIONSIZE = 1 //CONSTANT TRADE VOLUME OVER THE TIME
    //ENDIF
    MAXAMPLITUDE = 120
    MINAMPLITUDE = 60
    ORDERDISTANCE = 7
    POURCENTAGEMIN = 20
     
    // VARIABLE INITILIZATION ONCE AT SYSTEM START
    ONCE STARTTRADINGDAY = -1
    Result = 0
    // VARIABLES THAT CAN CHANGE IN INTRADAY ARE INITILIAZED
    // AT FIRST BAR ON EACH NEW DAY
    IF (TIME <= STARTHOUR AND STARTTRADINGDAY <> 0) OR INTRADAYBARINDEX = 0 THEN
    BUYTRESHOLD = 0
    SELLTRESHOLD = 0
    BUYPOSITION = 0
    SELLPOSITION = 0
    STARTTRADINGDAY = 0
    ELSIF TIME >= STARTHOUR AND STARTTRADINGDAY = 0 AND TRADINGDAY = 1 THEN
     
    // WE STORE THE FIRST TRADING DAY BAR INDEX
    DAYSTARTINDEX = INTRADAYBARINDEX
    STARTTRADINGDAY = 1
    ELSIF STARTTRADINGDAY = 1 AND TIME <= LIMITHOUR THEN
     
    // FOR EACH TRADING DAY, WE DEFINE EACH 15 MINUTES
    // THE HIGHER AND LOWER PRICE VALUE OF THE INSTRUMENT SINCE STARTHOUR
    // UNTIL THE BUY AND SELL TRESHOLDS ARE NOT DEFINED
    IF BUYTRESHOLD = 0 OR SELLTRESHOLD = 0 THEN
    HIGHLEVEL = HIGHEST[INTRADAYBARINDEX - DAYSTARTINDEX + 1](HIGH)
    LOWLEVEL = LOWEST [INTRADAYBARINDEX - DAYSTARTINDEX + 1](LOW)
     
    // SPREAD CALCULATION BETWEEN THE HIGHER AND THE
    // LOWER VALUE OF THE INSTRUMENT SINCE STARTHOUR
    DAYSPREAD = HIGHLEVEL - LOWLEVEL
     
    // MINIMAL SPREAD CALCULATION ALLOWED TO CONSIDER A SIGNIFICANT PRICE BREAKOUT
    // OF THE HIGHER AND LOWER VALUE
    MINSPREAD = DAYSPREAD * POURCENTAGEMIN / 100
     
    // BUY AND SELL TRESHOLDS FOR THE ACTUAL IF CONDITIONS ARE MET
    IF DAYSPREAD <= MAXAMPLITUDE THEN
    IF SELLTRESHOLD = 0 AND (CLOSE - LOWLEVEL) >= MINSPREAD THEN
    SELLTRESHOLD = LOWLEVEL + ORDERDISTANCE
    ENDIF
    IF BUYTRESHOLD = 0 AND (HIGHLEVEL - CLOSE) >= MINSPREAD THEN
    BUYTRESHOLD = HIGHLEVEL - ORDERDISTANCE
    ENDIF
    ENDIF
    ENDIF
     
    // CREATION OF THE BUY AND SELL ORDERS FOR THE DAY
    // IF THE CONDITIONS ARE MET
    IF SELLTRESHOLD > 0 AND BUYTRESHOLD > 0 AND (BUYTRESHOLD - SELLTRESHOLD) >= MINAMPLITUDE THEN
    IF BUYPOSITION = 0 THEN
    IF IamLong THEN
    BUYPOSITION = 1
    ELSE
    Result = 1
    //BUY POSITIONSIZE CONTRACT AT BUYTRESHOLD STOP
    IamLong = 1
    IamShort = 0
    ENDIF
    ENDIF
    IF SELLPOSITION = 0 THEN
    IF IamShort THEN
    SELLPOSITION = 1
    ELSE
    Result = 2
    //SELLSHORT POSITIONSIZE CONTRACT AT SELLTRESHOLD STOP
    IamLong = 0
    IamShort = 1
    ENDIF
    ENDIF
    ENDIF
    // CONDITIONS DEFINITIONS TO EXIT MARKET WHEN A BUY OR SELL ORDER IS ALREADY LAUNCHED
    IF IamLong AND (TIME> LIMITHOUR) THEN
    Result = 5
    IamLong = 0
    //SELL AT SELLTRESHOLD STOP
    ELSIF IamShort AND (TIME > LIMITHOUR) THEN
    Result = 6
    IamShort = 0
    //EXITSHORT AT BUYTRESHOLD STOP
    ENDIF
     ENDIF
    //Regards Ale
    
    SCREENER [Result] (Result as "1256")

    dovrebbe funzionare, ma ho solo fatto una prova sommaria e mi ha dato pochi risultati su un TF ad 1 ora (su tutti gli strumenti, Forex, Indici, Azioni, Commodities, Cryptovalute).

    #76106 quote
    GianlucaGianluca
    Participant
    Master

    Grazie mille Roberto, ora lo provo, ma la mia domanda è anche un altra, c’e’ modo che mi dia i livelli di prezzo a cui immettere l’ordine?

    #76110 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Invece di uno SCREENER devo trasformarlo in indicatore, provo a farlo.

    #76117 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Provalo

    // MAIN CODE : BREAKOUT STRATEGY BY NICOLAS, COSMIC1
    // INSPIRED BY BRAKOUT DAX 15MIN - COSMIC1 AND PROREALCODE SHARING COMMUNITY
    //-------------------------------------------------------------------------
    // IG MARKET GERMANY 30 CASH (EUR 1 MINI) - SPREAD 1 - 15 MIN
    // WE DO NOT STORE DATA UNTIL THE SYSTEM STARTS.
    // IF IT IS THE FIRST DAY THAT THE SYSTEM IS LAUNCHED AND IF IT IS AFTERNOON,
    // IT WILL WAIT UNTIL THE NEXT DAY FOR DEFINING SELL AND BUY ORDERS.
     
    //ALL TIMES ARE +0200 UTC/GMT
     
    //DEFPARAM PRELOADBARS = 0
     
    // POSITION IS CLOSED AT 21H00 PM
    //DEFPARAM FLATAFTER = 210000
     
    // NO NEW POSITION WILL BE INITIATED AFTER THE 16:00PM CANDLESTICK. ANY EXISTING ORDERS CANCELLED AT 17:15PM
    LIMITHOUR = 181400
     
    // MARKET SCAN BEGIN WITH THE 15 MINUTE CANDLESTICK THAT CLOSED AT 9:15AM
    STARTHOUR = 091500
     
    IF  DAYOFWEEK =1 THEN
    TRADINGDAY = 0
    ELSE
    TRADINGDAY = 1
    ENDIF
     
    // VARIABLES THAT WOULD BE ADAPTED TO YOUR PREFERENCES
    //IF TIME = 080000 THEN
    //POSITIONSIZE = MAX(1,1+ROUND((STRATEGYPROFIT-1000)/1000)) //GAIN RE-INVEST TRADE VOLUME
    //POSITIONSIZE = 1 //CONSTANT TRADE VOLUME OVER THE TIME
    //ENDIF
    MAXAMPLITUDE = 120
    MINAMPLITUDE = 60
    ORDERDISTANCE = 7
    POURCENTAGEMIN = 20
     
    // VARIABLE INITILIZATION ONCE AT SYSTEM START
    ONCE STARTTRADINGDAY = -1
    Result = 0
    // VARIABLES THAT CAN CHANGE IN INTRADAY ARE INITILIAZED
    // AT FIRST BAR ON EACH NEW DAY
    IF (TIME <= STARTHOUR AND STARTTRADINGDAY <> 0) OR INTRADAYBARINDEX = 0 THEN
    BUYTRESHOLD = 0
    SELLTRESHOLD = 0
    BUYPOSITION = 0
    SELLPOSITION = 0
    STARTTRADINGDAY = 0
    ELSIF TIME >= STARTHOUR AND STARTTRADINGDAY = 0 AND TRADINGDAY = 1 THEN
     
    // WE STORE THE FIRST TRADING DAY BAR INDEX
    DAYSTARTINDEX = INTRADAYBARINDEX
    STARTTRADINGDAY = 1
    ELSIF STARTTRADINGDAY = 1 AND TIME <= LIMITHOUR THEN
     
    // FOR EACH TRADING DAY, WE DEFINE EACH 15 MINUTES
    // THE HIGHER AND LOWER PRICE VALUE OF THE INSTRUMENT SINCE STARTHOUR
    // UNTIL THE BUY AND SELL TRESHOLDS ARE NOT DEFINED
    IF BUYTRESHOLD = 0 OR SELLTRESHOLD = 0 THEN
    HIGHLEVEL = HIGHEST[INTRADAYBARINDEX - DAYSTARTINDEX + 1](HIGH)
    LOWLEVEL = LOWEST [INTRADAYBARINDEX - DAYSTARTINDEX + 1](LOW)
     
    // SPREAD CALCULATION BETWEEN THE HIGHER AND THE
    // LOWER VALUE OF THE INSTRUMENT SINCE STARTHOUR
    DAYSPREAD = HIGHLEVEL - LOWLEVEL
     
    // MINIMAL SPREAD CALCULATION ALLOWED TO CONSIDER A SIGNIFICANT PRICE BREAKOUT
    // OF THE HIGHER AND LOWER VALUE
    MINSPREAD = DAYSPREAD * POURCENTAGEMIN / 100
     
    // BUY AND SELL TRESHOLDS FOR THE ACTUAL IF CONDITIONS ARE MET
    IF DAYSPREAD <= MAXAMPLITUDE THEN
    IF SELLTRESHOLD = 0 AND (CLOSE - LOWLEVEL) >= MINSPREAD THEN
    SELLTRESHOLD = LOWLEVEL + ORDERDISTANCE
    ENDIF
    IF BUYTRESHOLD = 0 AND (HIGHLEVEL - CLOSE) >= MINSPREAD THEN
    BUYTRESHOLD = HIGHLEVEL - ORDERDISTANCE
    ENDIF
    ENDIF
    ENDIF
     
    // CREATION OF THE BUY AND SELL ORDERS FOR THE DAY
    // IF THE CONDITIONS ARE MET
    IF SELLTRESHOLD > 0 AND BUYTRESHOLD > 0 AND (BUYTRESHOLD - SELLTRESHOLD) >= MINAMPLITUDE THEN
    IF BUYPOSITION = 0 THEN
    IF IamLong THEN
    BUYPOSITION = 1
    ELSE
    Result = 1
    //BUY POSITIONSIZE CONTRACT AT BUYTRESHOLD STOP
    DRAWTEXT("#BUYTRESHOLD#", barindex, high, Dialog, Bold, 10) COLOURED(0,255,0,255)
    IamLong = 1
    IamShort = 0
    ENDIF
    ENDIF
    IF SELLPOSITION = 0 THEN
    IF IamShort THEN
    SELLPOSITION = 1
    ELSE
    Result = 2
    DRAWTEXT("#SELLTRESHOLD#", barindex, low, Dialog, Bold, 10) COLOURED(255,0,0,255)
    //SELLSHORT POSITIONSIZE CONTRACT AT SELLTRESHOLD STOP
    IamLong = 0
    IamShort = 1
    ENDIF
    ENDIF
    ENDIF
    // CONDITIONS DEFINITIONS TO EXIT MARKET WHEN A BUY OR SELL ORDER IS ALREADY LAUNCHED
    IF IamLong AND (TIME> LIMITHOUR) THEN
    Result = 5
    IamLong = 0
    //SELL AT SELLTRESHOLD STOP
    ELSIF IamShort AND (TIME > LIMITHOUR) THEN
    Result = 6
    IamShort = 0
    //EXITSHORT AT BUYTRESHOLD STOP
    ENDIF
    ENDIF
    //Regards Ale
    IF Result THEN    //blocco IF...ENDIF inutile, solo per usare la variabile RESULT
    ENDIF
    RETURN
    #76123 quote
    GianlucaGianluca
    Participant
    Master

    [attachment file=76124]
    EH più o meno

    Cattura.jpg Cattura.jpg
    #76127 quote
    GianlucaGianluca
    Participant
    Master

    anziche’ il drawtext che poi viene disegnato su tutte le barre successive e non solo sulla prima dove si verifica l’evento, non è possibile farlo uscire stile istogramma sotto i grafici?

    #76141 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Si, eccolo:

    // MAIN CODE : BREAKOUT STRATEGY BY NICOLAS, COSMIC1
    // INSPIRED BY BRAKOUT DAX 15MIN - COSMIC1 AND PROREALCODE SHARING COMMUNITY
    //-------------------------------------------------------------------------
    // IG MARKET GERMANY 30 CASH (EUR 1 MINI) - SPREAD 1 - 15 MIN
    // WE DO NOT STORE DATA UNTIL THE SYSTEM STARTS.
    // IF IT IS THE FIRST DAY THAT THE SYSTEM IS LAUNCHED AND IF IT IS AFTERNOON,
    // IT WILL WAIT UNTIL THE NEXT DAY FOR DEFINING SELL AND BUY ORDERS.
     
    //ALL TIMES ARE +0200 UTC/GMT
     
    //DEFPARAM PRELOADBARS = 0
     
    // POSITION IS CLOSED AT 21H00 PM
    //DEFPARAM FLATAFTER = 210000
    MyBUYTRESHOLD=0
    MySELLTRESHOLD=0
    // NO NEW POSITION WILL BE INITIATED AFTER THE 16:00PM CANDLESTICK. ANY EXISTING ORDERS CANCELLED AT 17:15PM
    LIMITHOUR = 181400
     
    // MARKET SCAN BEGIN WITH THE 15 MINUTE CANDLESTICK THAT CLOSED AT 9:15AM
    STARTHOUR = 091500
     
    IF  DAYOFWEEK =1 THEN
    TRADINGDAY = 0
    ELSE
    TRADINGDAY = 1
    ENDIF
     
    // VARIABLES THAT WOULD BE ADAPTED TO YOUR PREFERENCES
    //IF TIME = 080000 THEN
    //POSITIONSIZE = MAX(1,1+ROUND((STRATEGYPROFIT-1000)/1000)) //GAIN RE-INVEST TRADE VOLUME
    //POSITIONSIZE = 1 //CONSTANT TRADE VOLUME OVER THE TIME
    //ENDIF
    MAXAMPLITUDE = 120
    MINAMPLITUDE = 60
    ORDERDISTANCE = 7
    POURCENTAGEMIN = 20
     
    // VARIABLE INITILIZATION ONCE AT SYSTEM START
    ONCE STARTTRADINGDAY = -1
    Result = 0
    // VARIABLES THAT CAN CHANGE IN INTRADAY ARE INITILIAZED
    // AT FIRST BAR ON EACH NEW DAY
    IF (TIME <= STARTHOUR AND STARTTRADINGDAY <> 0) OR INTRADAYBARINDEX = 0 THEN
    BUYTRESHOLD = 0
    SELLTRESHOLD = 0
    BUYPOSITION = 0
    SELLPOSITION = 0
    STARTTRADINGDAY = 0
    ELSIF TIME >= STARTHOUR AND STARTTRADINGDAY = 0 AND TRADINGDAY = 1 THEN
     
    // WE STORE THE FIRST TRADING DAY BAR INDEX
    DAYSTARTINDEX = INTRADAYBARINDEX
    STARTTRADINGDAY = 1
    ELSIF STARTTRADINGDAY = 1 AND TIME <= LIMITHOUR THEN
     
    // FOR EACH TRADING DAY, WE DEFINE EACH 15 MINUTES
    // THE HIGHER AND LOWER PRICE VALUE OF THE INSTRUMENT SINCE STARTHOUR
    // UNTIL THE BUY AND SELL TRESHOLDS ARE NOT DEFINED
    IF BUYTRESHOLD = 0 OR SELLTRESHOLD = 0 THEN
    HIGHLEVEL = HIGHEST[INTRADAYBARINDEX - DAYSTARTINDEX + 1](HIGH)
    LOWLEVEL = LOWEST [INTRADAYBARINDEX - DAYSTARTINDEX + 1](LOW)
     
    // SPREAD CALCULATION BETWEEN THE HIGHER AND THE
    // LOWER VALUE OF THE INSTRUMENT SINCE STARTHOUR
    DAYSPREAD = HIGHLEVEL - LOWLEVEL
     
    // MINIMAL SPREAD CALCULATION ALLOWED TO CONSIDER A SIGNIFICANT PRICE BREAKOUT
    // OF THE HIGHER AND LOWER VALUE
    MINSPREAD = DAYSPREAD * POURCENTAGEMIN / 100
     
    // BUY AND SELL TRESHOLDS FOR THE ACTUAL IF CONDITIONS ARE MET
    IF DAYSPREAD <= MAXAMPLITUDE THEN
    IF SELLTRESHOLD = 0 AND (CLOSE - LOWLEVEL) >= MINSPREAD THEN
    SELLTRESHOLD = LOWLEVEL + ORDERDISTANCE
    ENDIF
    IF BUYTRESHOLD = 0 AND (HIGHLEVEL - CLOSE) >= MINSPREAD THEN
    BUYTRESHOLD = HIGHLEVEL - ORDERDISTANCE
    ENDIF
    ENDIF
    ENDIF
     
    // CREATION OF THE BUY AND SELL ORDERS FOR THE DAY
    // IF THE CONDITIONS ARE MET
    IF SELLTRESHOLD > 0 AND BUYTRESHOLD > 0 AND (BUYTRESHOLD - SELLTRESHOLD) >= MINAMPLITUDE THEN
    IF BUYPOSITION = 0 THEN
    IF IamLong THEN
    BUYPOSITION = 1
    ELSE
    Result = 1
    //BUY POSITIONSIZE CONTRACT AT BUYTRESHOLD STOP
    //DRAWTEXT("#BUYTRESHOLD#", barindex, high, Dialog, Bold, 10) COLOURED(0,255,0,255)
    MyBUYTRESHOLD=BUYTRESHOLD
    IamLong = 1
    IamShort = 0
    ENDIF
    ENDIF
    IF SELLPOSITION = 0 THEN
    IF IamShort THEN
    SELLPOSITION = 1
    ELSE
    Result = 2
    //DRAWTEXT("#SELLTRESHOLD#", barindex, low, Dialog, Bold, 10) COLOURED(255,0,0,255)
    //SELLSHORT POSITIONSIZE CONTRACT AT SELLTRESHOLD STOP
    MySELLTRESHOLD=SELLTRESHOLD
    IamLong = 0
    IamShort = 1
    ENDIF
    ENDIF
    ENDIF
    // CONDITIONS DEFINITIONS TO EXIT MARKET WHEN A BUY OR SELL ORDER IS ALREADY LAUNCHED
    IF IamLong AND (TIME> LIMITHOUR) THEN
    Result = 5
    IamLong = 0
    //SELL AT SELLTRESHOLD STOP
    ELSIF IamShort AND (TIME > LIMITHOUR) THEN
    Result = 6
    IamShort = 0
    //EXITSHORT AT BUYTRESHOLD STOP
    ENDIF
    ENDIF
    //Regards Ale
    IF Result THEN    //blocco IF...ENDIF inutile, solo per usare la variabile RESULT
    ENDIF
    RETURN MyBUYTRESHOLD,MySELLTRESHOLD
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Trasformare Strategia in Screener


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
Gianluca @altares Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by robertogozzirobertogozzi
8 years, 2 months ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 07/16/2018
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...