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

 

Il numero del giorno del mese viene aggiunto al commento dell'ordine. Come posso calcolare quanti ordini (chiusi) ci sono stati durante il giorno con il commento di questo giorno?

Non so come fare.

commento = Giorno();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

 
A serega393
Il tuo commento dopo la funzione è una stringa o un intero?
La funzione sembra essere composta correttamente. Mettete dentro una stampa di tutte le variabili in entrata per vedere un quadro chiaro.
 
serega393 писал(а) >>

Il numero del giorno del mese viene aggiunto al commento dell'ordine. Come posso calcolare quanti ordini (chiusi) ci sono stati durante il giorno con il commento di questo giorno?

Non so come fare.

commento = Giorno();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
per (n = totale - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Stampa("quantità dell'ordine = ",f,");
ritorno(f);
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
E la stessa cosa quando si inviano ordini!
 
StatBars >> :
E lo stesso quando si inviano ordini!

>> È meglio così:

   comment = TimeDay(TimeCurrent());
È più veloce, più facile e più affidabile.
 

bool UseTF = true;


int start()
{

string comment = TimeDay(TimeCurrent());

if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false;
Print("No");
}
else
{
UseTF = true;
Print("Yes");

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

Qui si prova. Non si leggono ordini nella storia.

 

Buon pomeriggio a tutti.

Non sono riuscito a "segnare" correttamente l'apertura degli ordini pendenti nel mio codice. Ho letto il tutorial, l'aiuto e altre cose. La risposta è probabilmente lì, ma non riesco a capirla...


Ecco il problema. Ho un periodo di tempo durante il quale cerco il prezzo massimo e minimo e assegno questi valori a due variabili globali. Poi dobbiamo aprire un ordine pendente a quel prezzo. Non posso decidere il punto di prezzo. Voglio specificare correttamente l'intervallo del prezzo corrente.

1.Domanda - come appare la funzione del prezzo della barra corrente, per esempio alle 6 del mattino?

2 Come faccio a indicare il parametro del biglietto per chiudere l'ordine?

O un altro modo per chiudere uno dei due ordini precedentemente aperti?

Devo provare in questo modo...


per (int i=1; i<=OrdiniTotali(); i++)

{

if(OrderSelect(i,SELECT_BY_POS)==true)

{

int T=OrderTicket();

int Cur_Hour2=Hour(); // tempo del server in ore

double Cur_Min2=Minute(); // Tempo del server in minuti

double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Tempo del server

Allarme(Cur_time2);

se (Cur_time2>=Time_of_buy_sell_2)

OrderClose(T,1,Ask,3,Red);

}

return; // Esci da start()


Per favore, non giudicare strettamente:)

 
TheXpert писал(а) >>

È meglio così:

E più veloce, e più facile, e più affidabile.

Sono d'accordo, ma la mia enfasi era più sull'altro.

 
serega393 писал(а) >>

Prova questo. Non si leggono ordini nella storia.

Legge tutto normalmente. Controlla quale commento hai dopo la chiusura. Alcuni broker aggiungono le loro voci al commento quando un ordine viene chiuso.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if ( OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if ( UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for ( n = total - 1; n >= 0; n--)   
   {      
      OrderSelect( n, SELECT_BY_POS, MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(), comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(), comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ", f,"");   
   return( f);
} 
 
Puoi suggerire un EA che chiuda tutte le posizioni (e anche quelle non redditizie) quando viene raggiunto un certo profitto e rimuova tutti gli ordini pendenti non eseguiti?