FiutoPRO Scripting System (in breve FPSS)

Collapse
This topic is closed.
X
X
 
  • Ora
  • Show
Clear All
new posts

  • Andrea Cagalli
    replied
    Ciao a tutti,
    vi lascio il link della discussione che abbiamo aperto in una sezione apposita del forum proprio per lo scambio di idee e consigli tra gli utenti sullo script di FiutoPRO.

    Questa discussione è creata appositamente per lo scambio di idee e consigli tra gli utenti sul sistema di scripting di FiutoPRO. Questa discussione NON è moderata.... spazio alla vostra fantasia !


    Ciao Ciao

    Leave a comment:


  • Francario Massimiliano
    replied
    Salve,
    Originariamente Scritto da CIVT
    Venendo a concetti piu\' operativi tempo fà ho utilizzato un software per MT4 che genera codice in automatico, vi incollo uno script molto semplice che lavora sulle EMA, qualcuno mi sa dire che linguaggio è e soprattutto se secondo voi è fattibile fare un copia/incolla dal codice prodotto in automatico allo script di FiutoPro??? Ok...non sarà ottimizzato e scritto in modo elegante ma se gira direi che è un ottimo compromesso!!!:cheerful:


    Codice:
    //-------------------------------------------------------------
    //  Etasoft Inc. Forex EA and Script Generator version 4.4   EA
    //-------------------------------------------------------------
    // Keywords: MT4, Forex EA builder, create EA, expert advisor developer
    
    #property copyright "Copyright © 2011, Etasoft Inc. Forex EA Generator v4.4"
    #property link      "http://www.forexgenerator.com/"
    
    #include <stdlib.mqh>
    #include <WinUser32.mqh>
    
    // exported variables
    extern double BuyLots13 = 0.1;
    extern int BuyStoploss13 = 50;
    extern int BuyTakeprofit13 = 100;
    extern double SellLots14 = 0.1;
    extern int SellStoploss14 = 50;
    extern int SellTakeprofit14 = 100;
    
    
    // local variables
    double PipValue=1;    // this variable is here to support 5-digit brokers
    bool Terminated = false;
    string LF = "\n";  // use this in custom or utility blocks where you need line feeds
    int NDigits = 4;   // used mostly for NormalizeDouble in Flex type blocks
    int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
    int current = 0;
    
    
    
    int init()
    {
        NDigits = Digits;
        
        if (false) ObjectsDeleteAll();      // clear the chart
        
        
        Comment("");    // clear the chart
    }
    
    // Expert start
    int start()
    {
        if (Bars < 10)
        {
            Comment("Not enough bars");
            return (0);
        }
        if (Terminated == true)
        {
            Comment("EA Terminated.");
            return (0);
        }
        
        OnEveryTick1();
        
    }
    
    void OnEveryTick1()
    {
        if (true == false && true) PipValue = 10;
        if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
        
        TechnicalAnalysis3x5();
        TechnicalAnalysis3x23();
        
    }
    
    void TechnicalAnalysis3x5()
    {
        if ((iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,3)))
        {
            TechnicalAnalysis3x22();
            
        }
    }
    
    void TechnicalAnalysis3x22()
    {
        if ((iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,0)) && (iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,1) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_MEDIAN,0)))
        {
            BuyOrder13();
            
        }
    }
    
    void BuyOrder13()
    {
        double SL = Ask - BuyStoploss13*PipValue*Point;
        if (BuyStoploss13 == 0) SL = 0;
        double TP = Ask + BuyTakeprofit13*PipValue*Point;
        if (BuyTakeprofit13 == 0) TP = 0;
        int ticket = -1;
        if (true)
        ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, 0, 0, "My Expert", 1, 0, Blue);
        else
        ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, SL, TP, "My Expert", 1, 0, Blue);
        if (ticket > -1)
        {
            if (true)
            {
                OrderSelect(ticket, SELECT_BY_TICKET);
                bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Blue);
                if (ret == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print("OrderSend() error - ", ErrorDescription(GetLastError()));
        }
    }
    
    void TechnicalAnalysis3x23()
    {
        if ((iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2) < iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,3)))
        {
            TechnicalAnalysis3x10();
            
        }
    }
    
    void TechnicalAnalysis3x10()
    {
        if ((iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,0)) && (iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,1) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_MEDIAN,0)))
        {
            SellOrder14();
            
        }
    }
    
    void SellOrder14()
    {
        double SL = Bid + SellStoploss14*PipValue*Point;
        if (SellStoploss14 == 0) SL = 0;
        double TP = Bid - SellTakeprofit14*PipValue*Point;
        if (SellTakeprofit14 == 0) TP = 0;
        int ticket = -1;
        if (true)
        ticket = OrderSend(Symbol(), OP_SELL, SellLots14, Bid, 4, 0, 0, "My Expert", 1, 0, Red);
        else
        ticket = OrderSend(Symbol(), OP_SELL, SellLots14, Bid, 4, SL, TP, "My Expert", 1, 0, Red);
        if (ticket > -1)
        {
            if (true)
            {
                OrderSelect(ticket, SELECT_BY_TICKET);
                bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Red);
                if (ret == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print("OrderSend() error - ", ErrorDescription(GetLastError()));
        }
    }
    
    
    
    int deinit()
    {
        if (false) ObjectsDeleteAll();
        
        
    }
    Il codice in questione, a quanto vedo è C. Dire che questo codice è molto semplice mi pare un eufemismo, diciamo così. :laughing:

    Questo codice non si potrà riutilizzare in FiutoPRO.

    Max Francario

    Leave a comment:


  • CIVT
    replied
    Premetto che prima di imparare a programmare vorrei imparare a gestire le opzioni in modo corretto :w00t:.....ad ogni modo nel lontano 1998 in un paio di lezioni mi hanno introdotto al turbopascal (se non ho capito male è uno dei due linguaggi accettati da FPSS) e già all\'epoca mi domandavo a cosa mi sarebbe potuto servire saper programmare....bhe oggi ho la risposta!:silly:

    Venendo a concetti piu\' operativi tempo fà ho utilizzato un software per MT4 che genera codice in automatico, vi incollo uno script molto semplice che lavora sulle EMA, qualcuno mi sa dire che linguaggio è e soprattutto se secondo voi è fattibile fare un copia/incolla dal codice prodotto in automatico allo script di FiutoPro??? Ok...non sarà ottimizzato e scritto in modo elegante ma se gira direi che è un ottimo compromesso!!!:cheerful:


    Codice:
    //-------------------------------------------------------------
    //  Etasoft Inc. Forex EA and Script Generator version 4.4   EA
    //-------------------------------------------------------------
    // Keywords: MT4, Forex EA builder, create EA, expert advisor developer
    
    #property copyright "Copyright © 2011, Etasoft Inc. Forex EA Generator v4.4"
    #property link      "http://www.forexgenerator.com/"
    
    #include <stdlib.mqh>
    #include <WinUser32.mqh>
    
    // exported variables
    extern double BuyLots13 = 0.1;
    extern int BuyStoploss13 = 50;
    extern int BuyTakeprofit13 = 100;
    extern double SellLots14 = 0.1;
    extern int SellStoploss14 = 50;
    extern int SellTakeprofit14 = 100;
    
    
    // local variables
    double PipValue=1;    // this variable is here to support 5-digit brokers
    bool Terminated = false;
    string LF = "\n";  // use this in custom or utility blocks where you need line feeds
    int NDigits = 4;   // used mostly for NormalizeDouble in Flex type blocks
    int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
    int current = 0;
    
    
    
    int init()
    {
        NDigits = Digits;
        
        if (false) ObjectsDeleteAll();      // clear the chart
        
        
        Comment("");    // clear the chart
    }
    
    // Expert start
    int start()
    {
        if (Bars < 10)
        {
            Comment("Not enough bars");
            return (0);
        }
        if (Terminated == true)
        {
            Comment("EA Terminated.");
            return (0);
        }
        
        OnEveryTick1();
        
    }
    
    void OnEveryTick1()
    {
        if (true == false && true) PipValue = 10;
        if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
        
        TechnicalAnalysis3x5();
        TechnicalAnalysis3x23();
        
    }
    
    void TechnicalAnalysis3x5()
    {
        if ((iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,3)))
        {
            TechnicalAnalysis3x22();
            
        }
    }
    
    void TechnicalAnalysis3x22()
    {
        if ((iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,0)) && (iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,1) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) > iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_MEDIAN,0)))
        {
            BuyOrder13();
            
        }
    }
    
    void BuyOrder13()
    {
        double SL = Ask - BuyStoploss13*PipValue*Point;
        if (BuyStoploss13 == 0) SL = 0;
        double TP = Ask + BuyTakeprofit13*PipValue*Point;
        if (BuyTakeprofit13 == 0) TP = 0;
        int ticket = -1;
        if (true)
        ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, 0, 0, "My Expert", 1, 0, Blue);
        else
        ticket = OrderSend(Symbol(), OP_BUY, BuyLots13, Ask, 4, SL, TP, "My Expert", 1, 0, Blue);
        if (ticket > -1)
        {
            if (true)
            {
                OrderSelect(ticket, SELECT_BY_TICKET);
                bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Blue);
                if (ret == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print("OrderSend() error - ", ErrorDescription(GetLastError()));
        }
    }
    
    void TechnicalAnalysis3x23()
    {
        if ((iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,1) > iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,2) < iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,3)))
        {
            TechnicalAnalysis3x10();
            
        }
    }
    
    void TechnicalAnalysis3x10()
    {
        if ((iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,0)) && (iMA(NULL, PERIOD_M30,25,0,MODE_EMA,PRICE_MEDIAN,1) < iMA(NULL, PERIOD_M30,50,0,MODE_EMA,PRICE_MEDIAN,1)) && (iMA(NULL, PERIOD_H4,50,0,MODE_EMA,PRICE_MEDIAN,0) < iMA(NULL, PERIOD_H4,200,0,MODE_EMA,PRICE_MEDIAN,0)))
        {
            SellOrder14();
            
        }
    }
    
    void SellOrder14()
    {
        double SL = Bid + SellStoploss14*PipValue*Point;
        if (SellStoploss14 == 0) SL = 0;
        double TP = Bid - SellTakeprofit14*PipValue*Point;
        if (SellTakeprofit14 == 0) TP = 0;
        int ticket = -1;
        if (true)
        ticket = OrderSend(Symbol(), OP_SELL, SellLots14, Bid, 4, 0, 0, "My Expert", 1, 0, Red);
        else
        ticket = OrderSend(Symbol(), OP_SELL, SellLots14, Bid, 4, SL, TP, "My Expert", 1, 0, Red);
        if (ticket > -1)
        {
            if (true)
            {
                OrderSelect(ticket, SELECT_BY_TICKET);
                bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Red);
                if (ret == false)
                Print("OrderModify() error - ", ErrorDescription(GetLastError()));
            }
                
        }
        else
        {
            Print("OrderSend() error - ", ErrorDescription(GetLastError()));
        }
    }
    
    
    
    int deinit()
    {
        if (false) ObjectsDeleteAll();
        
        
    }
    Last edited by CIVT; 18-01-13, 07:17.

    Leave a comment:


  • Apocalips
    replied
    Originariamente Scritto da livioptions
    Mamma mia come sono rimasto indietro! :caspita: e ora chi lo recupera quel 2 in pagella ?
    Ragazzi questa volta bisogna studiare quindi rimbocchiamoci le maniche e armiamoci di pazienza e volonta se vogliamo fare il definitivo salto nella schiera del 5% di coloro che guadagnano con il trading.

    ho aperto giusto per curiosità l\'editor dello script
    ecco quello che ci aspetta:

    script.png

    dai dai che ce la facciamo :calp:

    Andrea, Tiziano, Denis, Max mi raccomando accompagnateci in questa nuova avventura come avete sempre fatto

    Apo
    Last edited by Apocalips; 16-01-13, 23:35.

    Leave a comment:


  • livioptions
    replied
    Mamma mia come sono rimasto indietro! :caspita: e ora chi lo recupera quel 2 in pagella ?

    Leave a comment:


  • fnet
    replied
    risorse pascal

    linko alcune risorse free (gratis )
    http://www.lazarus.freepascal.org/ qui trovate tool di programmazione

    Leave a comment:


  • TraderLoki
    replied
    Originariamente Scritto da Cagalli Tiziano
    UNo solo dei due!

    MI piacerebbe che ci fosse un\'area dove i programmatori, anche utenti, realizzassero dei mini progetti per gli utenti che non sanno programare.

    Così si cresce, così si fanno le innovazioni...in gruppo.
    Mi sembra una bellissima idea!

    Non posso dirmi certamente un programmatore (far from it!) ma un po\' di rudimenti di Visual Basic for Applications li ho appresi, per creare qualche simulazione con Excel. Mi guarderò bene lo script e poi contribuirò come posso, molto volentieri!

    Loki

    Leave a comment:


  • fnet
    replied
    Originariamente Scritto da chrisbasetta
    Ciao...
    Non credo ci sia una differenza abissale...però è una scelta soggettiva...io farei così... cerca dei video in internet su youtube dei due linguaggi...e scegli quello che riesci di primo acchitto a "digerire" meglio :-)
    ... ho seguito il Tuo consiglio, grazie ....
    ..... penso andrò a scegliere pascal in quanto "open" ( = software vario gratis , che per uno che inizia non è affatto male )

    Leave a comment:


  • cmerru
    replied
    Originariamente Scritto da chrisbasetta
    Ottima iniziativa! Io sono un autodidatta quindi non assicuro grandi cose però se quest\'area esisterà contribuirò volentieri...
    Prima però attendo il manuale dettagliato dello Script :-)
    davvero molto interessante..specie per chi come me ha davvero pochi (o dovrei dire pocherrimi :laughing: ) rudimenti..per giunta abbastanza arrugginiti!

    Leave a comment:


  • chrisbasetta
    replied
    Originariamente Scritto da Cagalli Tiziano

    MI piacerebbe che ci fosse un\'area dove i programmatori, anche utenti, realizzassero dei mini progetti per gli utenti che non sanno programare.

    Così si cresce, così si fanno le innovazioni...in gruppo.
    Ottima iniziativa! Io sono un autodidatta quindi non assicuro grandi cose però se quest\'area esisterà contribuirò volentieri...
    Prima però attendo il manuale dettagliato dello Script :-)

    Leave a comment:


  • Cagalli Tiziano
    replied
    Originariamente Scritto da Apocalips
    Mi sembra di capire che si puo programmare uno script indifferentemente sia in linguaggio basic che pascal ? oppure bisogna necessariamente conoscere entrambi ?


    PS: mi sbaglio o un software per opzioni che integri uno script di programmazione non ancora esiste al mondo?

    complimenti !!...siete fortissimi !! :calp::calp:

    grazie
    Apo
    UNo solo dei due!

    Come avrai visto o comunque come faremo vedere non è un semplice script ma ti permette anche di crearti finestre a piacere, esempio: delta/gamma o theta/giorni e un miliardo di altre cose.
    E\' stato voluto così in modo tale che ogni utente che ha una sua idea la possa realizzare e proverla senza essere vincolato a ciò che c\'è ...

    MI piacerebbe che ci fosse un\'area dove i programmatori, anche utenti, realizzassero dei mini progetti per gli utenti che non sanno programare.

    Così si cresce, così si fanno le innovazioni...in gruppo.

    Leave a comment:


  • Apocalips
    replied
    Mi sembra di capire che si puo programmare uno script indifferentemente sia in linguaggio basic che pascal ? oppure bisogna necessariamente conoscere entrambi ?


    PS: mi sbaglio o un software per opzioni che integri uno script di programmazione non ancora esiste al mondo?

    complimenti !!...siete fortissimi !! :calp::calp:

    grazie
    Apo
    Last edited by Apocalips; 15-01-13, 22:52.

    Leave a comment:


  • chrisbasetta
    replied
    Ciao...
    Non credo ci sia una differenza abissale...però è una scelta soggettiva...io farei così... cerca dei video in internet su youtube dei due linguaggi...e scegli quello che riesci di primo acchitto a "digerire" meglio :-)

    Leave a comment:


  • fnet
    started a topic FiutoPRO Scripting System (in breve FPSS)

    FiutoPRO Scripting System (in breve FPSS)

    ... scusate se sono in anticipo con la discussione su tale argomento, chiedevo cortesemente a Massimiliano ( e/o a Chi del forum ne abbia esperienza ) se per uno a digiuno di linguaggi di programmazione , è consigliabile di iniziare a studiare Visual Basic o Pascal ? ...
    grazie in anticipo
    fabio
Working...