Trasformare Strategia in Screener

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #76097 quote
    Gianluca
    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
    robertogozzi
    Moderator
    Master

    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
    Gianluca
    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
    robertogozzi
    Moderator
    Master

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

    #76117 quote
    robertogozzi
    Moderator
    Master

    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
    Gianluca
    Participant
    Master

    [attachment file=76124]
    EH più o meno

    Cattura.jpg Cattura.jpg
    #76127 quote
    Gianluca
    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
    robertogozzi
    Moderator
    Master

    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.

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 robertogozzi
7 years, 7 months ago.

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