Announcement

Collapse
No announcement yet.

Protezione EA multipli

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Protezione EA multipli

    ciao a tutti, sono nuovo del forum, faccio i miei complimenti per i numerosi argomenti trattati, arrivo subito al dunque, ho diversi EA che vorrei proteggere con limite in tempo di utilizzo e numero di conto. Questa parte di codice vorrei metterla in una libreria e farla caricare da tutti gli expert alla loro apertura, in modo tale che, modificando solo questa poi tutti gli expert funzionino con i nuovi dati. Mi sono perso e non riesco ad uscirne. Metto qui sotto il codice che ho all'interno del primo Expert, ho provato con le funzioni #include e #import ma non riesco a caricare i dati. Questo e' il codice incriminato: la data indicata ed il numero di conto sono per esempio. Grazie mille a tutti.

    ​​​​​​//+------------------------------------------------------------------+
    // -- Protezione EA
    //+------------------------------------------------------------------+
    // Data da modificare con scadenza utilizzo EA
    //string expire_date; ="2018.10.20"; //<-- hard coded datetime year-month-day

    // N. Conto da modificare
    //static int AllowedAccountNo; =156249;

    //+------------------------------------------------------------------+
    // -- Functions
    //+------------------------------------------------------------------+


    int start() {


    // funzione controllo data
    datetime e_d=StrToTime(expire_date);

    if(TimeCurrent()>=e_d)
    {
    Alert("The MPA Portfolio EA has been expired");
    Comment("The MPA Portfolio EA has been expired");
    return(0);
    }

    //---- Account validation check ----

    int numconto = AccountNumber();
    if (numconto == 0)
    {
    Print("Waiting account number...");
    return(0);
    }

    datetime nopermitalert=0;
    if (numconto != AllowedAccountNo && nopermitalert != Time[0])
    {
    Alert("You are not allowed to use This MPA Portfolio Expert Advisor!");
    nopermitalert = Time[0];
    return(-1);
    }



    poi continua il codice dell'expert

    #2
    Dovresti inserire i controlli che fai all'interno della start() dentro delle funzioni sulla libreria (formato MQH).
    Dopodiché potrai importare (con #include) la libreria e usare le sue funzioni all'interno del codice.

    Ricorda che nelle librerie (MQH) ci vanno solo le funzioni che sviluppi te.
    Non c'è bisogno di mettere la init(), start(), deinit().
    Skype: cadddami

    Comment


      #3
      ciao cadddami, grazie mille per la risposta, allora io ho fatto in questo modo, ma sicuramente ho sbagliato qualcosa in quanto all'avvio dell'EA questo funziona anche se metto data scaduta e/o numero conto errato.
      questo e' quello che ho lasciato nell'expert dopo la funzione int start()

      int start() {


      // funzione controllo data
      datetime e_d=StrToTime(expire_date);

      if(TimeCurrent()>=e_d)
      {
      Alert("The EA has been expired");
      Comment("The EA has been expired");
      return(0);
      }

      //---- Account validation check ----

      int numconto = AccountNumber();
      if (numconto == 0)
      {
      Print("Waiting account number...");
      return(0);
      }

      datetime nopermitalert=0;
      if (numconto != AllowedAccountNo && nopermitalert != Time[0])
      {
      Alert("You are not allowed to use This Expert Advisor!");
      nopermitalert = Time[0];
      return(-1);
      }


      all'inizio dell'expert ho inserito :


      #import "EACheck.ex4";
      string expire_date;
      static int AllowedAccountNo;
      #import


      poi ho creato un file EACheck.ex4 con a''interno questo: (dentro la directory /mql4/libraries/....)

      #property library
      #property strict


      // -- Protezione EA
      //+------------------------------------------------------------------+
      // Data da modificare con scadenza utilizzo indicatore
      string expire_date="2018.10.29"; //<-- hard coded datetime year-month-day

      // Conto da modificare con lo specifico del cliente che acquista
      static int AllowedAccountNo=156248;

      Comment


        #4
        Le librerie si usano per "immagazzinare" le funzioni che poi puoi importare.
        Tu stai importando tentando di importare variabili, che non si può fare.
        Skype: cadddami

        Comment


          #5
          ok grazie ancora, quindi per importare solo le due variabili, una di tempo e la seconda del numero di conto, ed avere un unico file che abiliti gli expert, come posso fare, se posso chiedere? Grazie ancora in anticipo

          Comment


            #6
            Non credo esista un metodo per fare ciò che chiedi.
            Ma avrebbe anche poco senso, perché alle variabili gli posso anche cambiare il valore.
            Potrei (ipoteticamente) importare una variabile con il numero di conto e modificarlo con il mio prima del controllo.
            Skype: cadddami

            Comment

            Working...
            X