[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 177

 
badbadboy:

Ne ho bisogno affinché l'EA possa iniziare a calcolare se stesso.
Avete un EA che apre solo posizioni? Ogni copia (versione) dovrebbe avere il proprio mago e ognuno controllerà solo le proprie posizioni.
 

Aiuta a capire:

Il compito è quello di contare gli ordini di acquisto/vendita perdenti individualmente. Codice:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Il codice stesso è uno snippet di un EA. L'Expert Advisor è in funzione e genera costantemente perdite. Ci sono molti ordini perdenti (li stampo altrove), tutti registrati. Ma in questo frammento di codice, l'Expert Advisor non inserisce il

if (OrderProfit() < 0)


Cosa sto facendo di sbagliato?

 
borilunad:
Avete un EA che apre solo posizioni? Ogni copia (versione) dovrebbe avere il proprio mago e ognuno controllerà solo le proprie posizioni.

Capito, grazie mille!
 
belozad:

Aiuta a capire:

Il compito è quello di contare gli ordini di acquisto/vendita perdenti individualmente. Codice:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Il codice stesso è uno snippet di un EA. L'EA è in funzione e genera costantemente perdite. Ci sono un mucchio di ordini perdenti (li stampo altrove) che vengono tutti registrati. Ma in questo frammento di codice, l'Expert Advisor non inserisce il

if (OrderProfit() < 0)


Cosa sto facendo di sbagliato?

Prova

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

Sto perdendo la testa, cosa c'è che non va nel mio mql4?

Perché il software esegue la seguente condizione ad ogni ciclo? È scritto di stampare "i" solo quando un nuovo ordine è chiuso!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

Sto impazzendo, cosa c'è che non va nel mio mql4?

Perché il programma esegue la seguente condizione ad ogni ciclo? È scritto per stampare "i" solo quando viene chiuso un nuovo ordine!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Se i non è una variabile statica, sarà stampato ad ogni tick.
 
badbadboy:

Se i non è una variabile statica, verrà comunque stampato ad ogni tick.

Ooh, mi stavo chiedendo perché ho diversi pezzi nel mio programma che lavorano nel culo! =)

Quindi tutte le variabili di lavoro i cui valori uso in diversi tick devono essere dichiarate statiche?

 
belozad:

Ooh, mi stavo chiedendo perché ho alcuni software che lavorano nel mio sedere! =)

Quindi tutte le variabili di lavoro i cui valori uso in diversi istanti devono essere dichiarate statiche?


È difficile da dire. Guardate le proprietà delle variabili, e poi pensate a cosa dichiarare e come farlo.
 

La funzione OrderModify() non permette di cambiare i commenti. C'è un altro modo per farlo?

 
pasha5282:

La funzione OrderModify() non permette di cambiare i commenti. C'è un altro modo per farlo?


Solo dal terminale.
Motivazione: