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

 
smartemiy:

Ragazzi!

come faccio a rendere ogni 40° ordine un lotto più grande? :: mercato e in attesa

Che ne dite di questo?

Non esattamente, dovresti contare il numero di ordini nella storia a = (OrdersHistoryTotal()+ 1) % 40

Bene, questo non tiene conto di quanti ordini possono essere aperti allo stesso tempo; altrimenti, dovremmo aggiungere l'OrdersTotal (probabilmente, meno gli ordini pendenti).

 
splxgf:

Non esattamente, dobbiamo contare il numero di ordini nella storia a = (OrdersHistoryTotal()+ 1) % 40

Bene, questo non tiene conto di quanti ordini possono essere aperti allo stesso tempo; altrimenti, dovremmo aggiungere l'OrdersTotal (probabilmente, meno gli ordini pendenti).


E se ci fossero posizioni aperte in altri simboli o in altri Expert Advisor? Pensa a quello che stai scrivendo
 
Figar0:

Per cominciare, la vostra funzione di calcolo del lotto è dichiarata all'interno della funzione start. Tiralo fuori. Poi ci saranno alcuni errori con variabili non dichiarate, ma penso che tu possa gestirli da solo.
Un'altra domanda, in quale funzione dichiarare il calcolo del lotto? init, deinit?
 
skyjet:
Un'altra domanda, in quale funzione devo dichiarare il calcolo del lotto? init, deinit?

Meglio fare una funzione separata e usarla quando serve (prima di aprire una nuova posizione)
 
Il computer può essere rallentato a causa dell'abbondanza di codice (non ottimizzato) nell'EA? Cioè l'apertura dei trade e il processo decisionale dell'EA stesso sarà rallentato se ha un codice grande?
 
Vinin:

Meglio fare una funzione separata e usarla quando serve (prima di aprire una nuova posizione)
Victor, seguendo il tuo consiglio ho aggiunto la funzione. Ora non compila.
void CheckForOpen()
double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
 

Mantenere la storia del tek



avatar
1
Gangrr 22.09.2011 17:32

Ciao a tutti!

La domanda è - c'è uno script per salvare la cronologia dei tick

...

FileSeek(ExtHandle,0,SEEK_END);

FileWrite(ExtHandle, TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS), Bid, Ask, iVolume(Symbol(), NULL, 0));

...

scrive così:

...

2011.08.15 08:38:49;76.936;76.946;1389

2011.08.15 08:38:51;76.934;76.953;1390
2011.08.15 08:38:56;76.929;76.958;1391
2011.08.15 08:38:56;76.935;76.945;1392

...

Cioè, si scopre che l'unità minima di tempo è un secondo. Quindi la mia domanda è: c'è un modo per scrivere i tick in millisecondi?

Grazie in anticipo.

 
1
Gangrr 22.09.2011 17:32

Così si scopre che l'unità minima di tempo è un secondo. Quindi domanda - c'è un modo per scrivere i tick in millisecondi?


Guarda GetTickCount... oppure fare riferimento alla funzione di Windows
 
skyjet:
Victor, seguendo il tuo consiglio ho aggiunto la funzione. Ora non compila.

void CheckForOpen()
  {



  }

double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
Le funzioni annidate non sono permesse
 
Vinin:

Le funzioni annidate non sono permesse
Questa non è una funzione annidata, ma fa parte del MACD Sample EA di base. Sto cercando di aggiungere un lotto calcolato. La principale e unica funzione start()
Motivazione: