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

 

Devo essermi perso qualcosa:

extern double LotsStep = 0.1;
       double Lots;
...

int start()
{
   ...
   
   if (NewOrder)
   { 
      if (OrdersTotal() == 0)
         Lots = LotsStep;
      else
         Lots += LotsStep;
      
      Lots = TrueLots(Lots);
      if (Lots < 0)
      {
         Alert("Не хватает денег на ", DoubleToStr(-Lots, 2), " лотов!");
         Lots = 0;
         Buy  = False;
         Sell = False;
      }
      
      NewOrder = False;
   }
      
   //Блок открытия на бай
   
   ...
}

double TrueLots(double Lots)
{
   double Free    = AccountFreeMargin();
   double One_Lot = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   
   if (Lots > Max_Lot)
   {
      Alert("...");
      Lots = Max_Lot;
   }

   if (Lots*One_Lot > Free)
      return(-Lots);
   
   return(Lots);
}

 

Un altro problema, ho avuto un errore '(' definizione della funzione inaspettata, ho messo questa funzione " double LotSize()
".
Voglioaumentare ogni lotto successivo da aprire, ma voglio che sia aperto solo con una serie di segnali di acquisto, e quando arrivano segnali opposti, il contatore si azzera e si inizia a costruire una nuova piramide, se è possibile, ecco perché ho preso questo frammento di codice, perché pensavo fosse responsabile di questo passo, ma non è andata così...

 
MaxZ:

Devo essermi perso qualcosa:


Grazie, lo proverò subito.
 
SeALALex:
Ecco fatto.


Guardate il trailer - correggetelo voi stessi.

File:
b-lots.mqh  3 kb
 
SeALALex:

Grazie, lo proverò ora.

Ho anche aggiunto un controllo per assicurarsi che un dato numero di Lotti possa essere aperto. Improvvisate e sarete fortunati! :))


La logica è la seguente:

Se non ci sono ordini nel mercato (qui, escludo gli ordini pendenti), allora assegniamo il valore iniziale alla variabile Lots (in questo caso, il passo stesso).

Se ci sono già ordini nel mercato, allora, ad ogni apertura, il parametro Lots sarà aumentato del valore di LotsStep.

Non so quale sia il tuo compito specifico, per questo ho scritto "improvvisare".


Romano.:


Guardate il trailer - correggetelo voi stessi.

Ti conviene padroneggiare tutto con le tue mani e allo stesso tempo imparerai a codificare! :D

 
MaxZ:

Devo essermi perso qualcosa:


Maxim, se hai tempo, dai un'occhiata a questo argomento... :-)))

Non riesco a trovare un "denominatore comune" per tutti gli EA contemporaneamente (un'opzione universale)... :-(((

Nei miei codici di EAs - si parla di "dabble" overflow...

Farò una domanda dettagliata con screenshot in quel thread ...

P.S. Per alcune versioni di gufi - funziona bene, per altre no... Ora si fa tutto secondo le regole, compresa la moltiplicazione... Il suo prodotto deve anche essere scomposto per l'approccio universale in moltiplicatori. Ho fatto un array, come hai raccomandato per la variabile TWR, ma finora non funziona per tutti gli EAs, per alcuni EAs è ancora traboccante di dati di tipo "doppio" su trade fino a 1000 unità sulla storia... quando si calcola il f ottimale in totale.

 
MaxZ:

Devo essermi perso qualcosa:


Mi dispiace, non sempre lo prendo.


Errore NewOrder -'NewOrder' - variabile non definita, dove devo nominarla prima?

 
Roman.:


Maxim, se hai tempo, dai un'occhiata a questo argomento... :-)))

Cosa dovrei vedere nel thread del forum di ProCapital? :))


Romano.:


Non posso arrivare a un "denominatore comune" per tutti gli EA in una volta sola (un'opzione universale)... :-(((

Nei miei codici di Expert Advisors - si parla di "dabble" overflow...

Farò una domanda dettagliata con screenshot in quel thread ...

P.S. Per alcune versioni di gufi - funziona bene, per altre no... Ora si fa solo a libro, compresa la moltiplicazione... Anche il suo prodotto deve essere scomposto per l'approccio universale in moltiplicatori. Ho fatto un array, come hai raccomandato per la variabile TWR, ma finora non funziona per tutti gli EAs, per alcuni EAs il tipo di dati "doppio" ancora trabocca con trade fino a 1000 pezzi sulla storia...quando si calcola il f ottimale finale.

Nella filiale ProCapital? Perché lì? Postalo, guarderò gli screenshot e ci penserò.
 
MaxZ:

Cosa dovrei vedere nel thread del forum di ProCapital? :))


Nella filiale di ProCapital? Perché lì? Postalo, guarderò gli screenshot e ci penserò.


Scusa, c'era un link sbagliato nel buffer - uno vecchio... :-)))

Qui.

Ora io stesso al lavoro - domanda dettagliata con screenshot - posterà nello stesso thread stasera o domani. :-)))

 
SeALALex:

Mi dispiace che non sempre lo prendo al volo.


Errore NewOrder -'NewOrder' - variabile non definita, dove la chiamo prima?

Con l'esperienza arriva l'esperienza! ;)


NewOrder è una variabile di tipo bool. Deve essere dichiarato all'inizio della funzione Start(), per esempio. Tutto dipende dalla struttura del vostro codice.

Impostiamo la variabile NewOrder su True, quando vogliamo aprire un ordine.

Per esempio, il nostro EA lavorerà con i prezzi aperti e l'indicatore della media mobile:

if ((Close[2] <= MA2 && Close[1] > MA1) || (Close[2] < MA2 && Close[1] >= MA1))
{
   NewOrder = True;
   Buy = True;
}