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

 
neisseria:
Ho provato a creare un EA basato su una moneta, testa compra, croce vende. Ma non funziona. Quando si prova in una finestra c'è una scritta: Quando si apre l'ordine errore 131, nell'applicazione guardato - non è il volume corretto. Ho guardato attentamente, non riesco a trovare alcun errore. C'è un punto ovunque, per separare la parte intera, non una virgola. Per favore, aiutatemi. Il codice è nel file.
Il conto permette il lotto 0,01? Forse un lotto minimo di 0,1?
 
neisseria:
Ho provato a creare un EA, basato su moneta, aquila comprare, croce vendere. Ma non ha funzionato. Durante il test, ho ottenuto il seguente messaggio nella finestra: Errore 131 all'apertura dell'ordine, l'ho cercato nell'applicazione, non è il volume corretto. Ho guardato attentamente, non riesco a trovare alcun errore. C'è un punto ovunque, per separare la parte intera, non una virgola. Per favore, aiutatemi. Il codice è nel file.


uso:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Dimensione minima possibile del lotto

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Passo minimo di cambio lotto

Il lotto dovrebbe essere >= MinLot e normalizzato usando Lot=NormalizeDouble(Lot,Dig);

dove Dig = Numero di cifre dopo il punto decimale StepLota, cioè StepLot=0,01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Per esempio, con MinLot=0.1 e StepLot=0.01:

Il lotto può essere 0,1, 0,11, 0,12 ecc. Ma non può essere 0,99, 0,98 e certamente non può essere 0,998, 0,999, 0,111, 0,101.

 
Sepulca:


uso:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Dimensione minima possibile del lotto

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Passo minimo di cambio lotto

Il lotto deve essere >= MinLot e normalizzato usando Lot=NormalizeDouble(Lot,Dig);

dove Dig = Numero di cifre dopo il punto decimale StepLota, cioè StepLot=0,01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Per esempio, con MinLot=0.1 e StepLot=0.01:

Il lotto può essere 0,1, 0,11, 0,12 ecc. Ma non può essere 0,99, 0,98 e certamente non può essere 0,998,0,999, 0,111, 0,101.


Per esempio, con MinLot=0.1 e StepLot=0.01:

Il lotto può essere 0,1, 0,11, 0,12 ecc. Ma non può essere 0,99, 0,98.

Non ci credo... davvero?

88 o 89 volte aumentare il lotto del passo minimo. Per esempio - il lotto di ogni posizione successiva aperta deve essere aumentato del passo minimo. Cioè, aggiungere senza mezzi termini il passo minimo di cambio di lotto al lotto della posizione precedente. La 98a posizione da aprire avrà il lotto 0,98, rispettivamente, il lotto della 99a posizione sarà aumentato di un passo minimo 0,98+0,01=0,99...

Pensate che DT non si lascerà aprire con una tale quantità?

 
artmedia70:

Per esempio con MinLot=0.1 e StepLot=0.01:

Il lotto può essere 0,1, 0,11, 0,12 ecc. Ma non può essere 0,99, 0,98

Non ci credo... davvero?

88 o 89 volte aumentare il lotto del passo minimo. Per esempio - il lotto di ogni posizione successiva aperta deve essere aumentato del passo minimo. Cioè, aggiungere senza mezzi termini il passo minimo di cambio di lotto al lotto della posizione precedente. La 98a posizione da aprire avrà il lotto 0,98, rispettivamente, il lotto della 99a posizione sarà aumentato di un passo minimo 0,98+0,01=0,99...

Pensi che le società di intermediazione non permetteranno l'apertura con un tale lotto?


Dannazione .... Sbagliato ovviamente. Non può essere 0,09, 0,08.

E stupido o non stupido - sta allo scrittore di EA decidere.

 
kellin:
No, ovviamente devo aprire con un ordine di acquisto o di vendita all'apertura della prossima o di una delle barre successive. E ho anche intenzione di chiudere con un ordine, assegnandolo in base al numero di punti dall'apertura.

Più tardi (nel fine settimana) posterò qui il codice per aprire un ordine di mercato - sia di acquisto che di vendita (a vostra scelta), all'apertura di una nuova candela.
 
Sepulca:


uso:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Volume minimo possibile del lotto

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Passo minimo di cambio lotto

Il lotto deve essere >= MinLot e normalizzato usando Lot=NormalizeDouble(Lot,Dig);

dove Dig = Numero di cifre dopo il punto decimale StepLota, cioè StepLot=0,01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Per esempio, con MinLot=0.1 e StepLot=0.01:

Il lotto può essere 0,1, 0,11, 0,12 ecc. Ma non può essere 0,99, 0,98 e tanto meno 0,998,0,999, 0,111,0,101

Conosco già queste informazioni. Nel mio broker min lot 0.01, step 0.01. L'ho cambiato in 0.1 e 1 lot per amor di coscienza, non esce niente, l'errore è in qualcos'altro.
 

A proposito, non ho intenzione di usare questo Expert Advisor, sto solo imparando il linguaggio di programmazione. Infatti, ho deciso per divertimento di vedere come funzionerà sul tester, ho appena letto che il generatore di numeri casuali non dà numeri così casuali, poiché si ripete. Il problema non sembra essere nell'ortografia sbagliata del numero, ma nell'algoritmo, proprio qual è il problema?

 
T-G:
Aiuto per un problema.
La domanda è questa: ho un gufo martin, apre le ginocchia dopo un determinato numero di punti, ma con un nuovo majik. Risulta che il segnale apre uno o tre ordini con majic = 1, poi meno il prossimo ginocchio su un segnale2 apre uno o tre ordini con un majic 2 e così via.
Così ogni ginocchio va su 1-3 ordini con la propria maestria.

Ora il punto della domanda è come calcolare in un ciclo gli ordini di ogni majic, per esempio, ho provato a farlo in questo modo

Che ne dite di questo:

int Count() {
   int i, Сounts[100];
   
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>Magic+100)   continue;
         if (OrderType()>1)                  continue;
         Сounts[OrderMagicNumber()]++;
         }
      }//for 
   Comment(10, Сounts[0] +"="+ Сounts[1] +"="+ Сounts[2]);
}

Non l'ho controllato, l'ho steso sul mio ginocchio...

 
artmedia70:

Che ne dite di questo:

Non l'ho controllato, l'ho solo abbozzato sulle mie ginocchia...

Non ha funzionato, ma mi hai dato la risposta giusta, sono a posto, grazie.
 
Se qualcuno lo sa, ho una domanda: ho bisogno di uno script in loop che "prema" il pulsante "Refresh" una volta ogni 0,5 secondi nel grafico corrente e reinizializzi gli indicatori. "Ho provato a fare uno script in loop usando WindowRedraw(). Ho provato a fare uno script in loop usando WindowRedraw() e Sleep(500), ma gli indicatori non vengono reinizializzati.
Motivazione: