[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 195

 

Per favore aiutatemi con due semplici script che aprono

ordini pendenti per comprare e vendere con stoploss e takeprofit impostati a un dato

Distanza dal prezzo corrente. In qualche modo ne ho scritto uno che funziona, ma l'ho cancellato per sbaglio.

L'ho cancellato per sbaglio e ora non riesco a ricordare cosa ho fatto per farlo funzionare.

unica speranza per te...

vendere:


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}


e comprare


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}

aiuto per favore...

 
NickXXX:

Ciao a tutti!

Oggi mi sto esercitando con il tempo) Per esempio, ho bisogno di far fare qualcosa ad un indicatore ad una certa ora.

Il codice sarà il seguente:

Ora, diciamo che vogliamo che la nostra condizione funzioni non solo alle 21.30, ma anche alle 22.00, 22.30, 23.00, e così via...

Potete, ovviamente, fare quanto segue:

Ma penso che sia in qualche modo irrazionale, soprattutto se ci saranno molti punti di controllo. Penso che si possa e che sia più semplice.

Domanda, come rendere più facile (giusto) ?)

Qui dipende se le condizioni temporali si prestano a qualche tipo di legge, se c'è un modello. Per esempio per il tuo caso, ogni mezz'ora: if(TimeCurrent()%1800==0) {tra-ta}. Se non c'è logica in questi punti di tempo - la vostra opzione. Solo che non mi piace, è un'uguaglianza rigorosa, se non c'è un segno di spunta in questo minuto - EA mancherà la condizione...
 
Figar0:
Qui tutto dipende se le condizioni di tempo sono soggette a qualche legge, se c'è un modello o no. Per esempio, per il vostro caso, ogni mezz'ora: if (TimeCurrent()%1800==0) {tra-ta}. Se non c'è logica in questi punti di tempo - la vostra opzione. Solo che non mi piace, è un'uguaglianza rigorosa, se non c'è un segno di spunta in questo minuto - EA mancherà la condizione...

Cioè il controllo del resto della divisione funziona. Ma mi sembra che in questo caso ci sarà sempre un resto...

Sono completamente d'accordo con la stretta uguaglianza, non ci ho ancora pensato. In linea di principio, si potrebbe probabilmente fare qualcosa come un intervallo, come 16.00 - 16.03.

Ma il punto era solo fare una volta ogni mezz'ora per fare i calcoli e andare a dormire. In modo che il sistema non sia costantemente gravato da calcoli inutili.

 
NickXXX:

Cioè il controllo del resto della divisione funziona. Ma mi sembra che in questo caso ci sarà sempre un resto...


Sì, hai ragione, è meglio: if(TimeCurrent()%1800<60) {tra-ta}.
 
Figar0:

Beh sì, hai ragione, meglio così: if (TimeCurrent()%1800<60) {tra-ta}.

< 0,6, o qualcosa del genere. Il resto della divisione è sempre meno di uno :)
 

E se ci sono molte variabili come questa?

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

È un peccato o funzionerà?

E un'altra piccola domanda, se diciamo che imposto un intervallo (per esempio 16.00-16.03) per l'esecuzione di una condizione. Come fare in modo che lo esegua solo una volta, nonostante l'arrivo di nuovi tick?

 

1. C'è un tipo di dati: datetime. Se volete qualcosa di esotico, potete usare int per il tempo, ma double è un caso estremo.

2. vai indietro di 5-10 pagine: c'è scritto come fare quello che vuoi.

 

Salve.

Per favore aiutatemi a correggere il codice.

Entrambe le linee qui sotto sono glitchate.

Grazie in anticipo.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

Il programma stesso:

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
Per favore, non diffondete l'eresia in pubblico. Vai a fare il nerd da qualche altra parte, c'è molto da fare...
 
tara:

1. C'è un tipo di dati: datetime. Se volete qualcosa di esotico, potete usare int per il tempo, ma double è un caso estremo.

Se vuoi usare il tempo, devi usare int e double. 2) Riavvolgi 5-10 pagine all'indietro: lì è scritto come fare ciò che vuoi.

1. Bene, qui il doppio era usato solo per aggiungere minuti e ore, in modo da poter segnare i punti di controllo come HH.MM (es. 16. 23).

2. Guardato le ultime pagine, naturalmente c'è circa datetime, ma non esattamente lo stesso. Emettono semplicemente in formato HH.MM l'ora dell'ultimo ordine.


Motivazione: