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

 
orlovkem >> :

Forse il commento è sbagliato, ma l'essenza è vera, il livello di prezzo è superiore al valore dell'indicatore, dovrebbe comprare, ma dovrebbe essere fatto solo una volta, e l'EA comprerà finché ci sono soldi nel deposito. Devi solo limitare il numero di offerte. Per fare non più di uno alla volta, non funziona.

Fai un controllo sulla barra attuale e sulla barra precedente, poi il segnale sarà uno,

solo all'incrocio.

Cioè se nella barra attuale l'indicatore è più alto, e in quella precedente era più basso

significa comprare, e sarà solo un acquisto per il segnale.

 
orlovkem >> :

Forse non l'ho scritto correttamente, ma l'essenza è corretta, il livello del prezzo è diventato più alto del valore dell'indicatore, ho bisogno di comprare e compra, ma ho bisogno di farlo una volta, e l'EA compra finché c'è denaro sul deposito. Devi solo limitare il numero di offerte. Per fare non più di uno alla volta, non funziona.

Sei sicuro che il consulente stia comprando (vendendo)? L'avete provato? A giudicare dal codice, non dovrebbe esserci affatto un solo trade, non che "compra finché c'è denaro nel deposito". O non hai scritto il codice?

 
xeon >> :

Il modo più semplice per controllare il numero di ordini aperti allo stesso tempo

un po' diverso - gli ordini non si aprono in parallelo, appena dopo aver chiuso un ordine se ne apre un altro nella stessa direzione (a questo punto il trade ha già esaurito la sua potenza e sono in perdita)

((

 
VladislavVG >> :

Sei sicuro che il consulente stia comprando (vendendo)? L'avete provato? A giudicare dal codice, non ci dovrebbe essere proprio un solo trade, non che "compra finché ci sono soldi in deposito". O non hai scritto il codice?


Ho scritto il codice, e compra e vende. Provato sul tester di strategia.

 
satop >> :

Fai un controllo sulla barra attuale e sulla barra precedente, poi il segnale sarà uno,

solo quando attraversa.

Cioè, se l'indicatore è più alto sulla barra corrente e più basso su quella precedente

significa comprare, e sarà solo un acquisto per il segnale.

Grazie per il suggerimento, credo di aver capito cosa mi viene richiesto. Lo proverò. Grazie ancora.

 
xruss >> :

leggermente sbagliato - gli ordini non si aprono in parallelo, appena dopo aver chiuso un ordine se ne apre un altro nella stessa direzione (a quel punto il trade ha già esaurito la sua forza e sono in perdita)

((

E se ci inviate l'intero frammento, che è responsabile della selezione dell'ultimo ordine e della condizione del suo controllo, lo capiremo. È difficile suggerire qualcosa in questo modo. In alternativa, dopo il segnale, simultaneamente all'apertura di una posizione, è possibile impostare un flag per proibire i seguenti trade di questo tipo, e nel blocco delle posizioni di apertura controllare la sua presenza. Se la bandierina è alzata - il trade viene saltato. Alla ricezione di un segnale opposto, la bandiera viene rimossa, ma dopo la prima apertura riuscita di una posizione, la nuova bandiera viene impostata - vietando l'apertura di operazioni di quel tipo, per le quali è stato ricevuto un nuovo segnale. E così via.

 
orlovkem >> :

Ho scritto il codice e compra e vende. Ho provato con lo Strategy Tester.

Quindi non è il codice che hai postato nella pagina precedente. Quel codice non compra nulla e non vende nulla. Potete copiarlo, se non mi credete, ed eseguirlo nel tester.

Per esempio, per me è chiaro che non esiste una coppia di numeri per cui le condizioni a>=b e a<b siano soddisfatte simultaneamente. A giudicare dal suo esperto, non solo non è ovvio per lei, ma per lei è ovvio che tali numeri esistano. Naturalmente, potrei sbagliarmi - allora per favore, se non è difficile, fatemi un esempio di una tale coppia di numeri. Solo in questo caso, verrà piazzato un ordine di acquisto utilizzando il tuo algoritmo. Lo stesso per la vendita.

>> Buona fortuna.

 
Everlost писал(а) >>

E se poteste postare l'intero frammento, che è responsabile della selezione dell'ultimo ordine e la condizione per controllarlo, possiamo risolverlo. È difficile suggerire qualcosa in questo modo. In alternativa, dopo il segnale, simultaneamente all'apertura di una posizione, è possibile impostare un flag per proibire i seguenti trade di questo tipo, e nel blocco delle posizioni di apertura controllare la sua presenza. Se la bandierina è alzata - il trade viene saltato. Alla ricezione di un segnale opposto, la bandiera viene rimossa, ma dopo la prima apertura riuscita di una posizione, la nuova bandiera viene impostata - vietando l'apertura di operazioni di quel tipo, per le quali è stato ricevuto un nuovo segnale. E così via.

Lo mostrerò un po' più tardi, ma mi sembra che le bandiere sarebbero più fresche. Come impostarle attraverso mql4?

Ecco il mio codice:

//Учет ордеров истории
int ORDtype=-1;
double ORDprofit=0.001;
for( i=OrdersHistoryTotal(); i>=0; i--)
{
if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY))
 {
  if(OrderSymbol()==Symbol())
  {
   if(OrderCloseTime()!=0)
   {
     ORDtype=OrderType();
     ORDprofit=OrderProfit();
   }
  }
 }
}    

....

if (( ORDtype==OP_SELL)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
if (( ORDtype==OP_BUY)||( ORDtype==-1)&&(( ORDprofit<=0)||( ORDprofit==0.001))...
{
...
}
 

Volevo fare in modo che l'esperto non lavorasse dalle 6 alle 20 sul broker, controllando prima che si spenga e aspettando che si chiuda. Tutto funziona ma vorrei poter aggiungere un avviso come se il trading fosse finito quando l'esperto smette di fare trading.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

inizia a suonare ad ogni ticchettio. In questo caso l'allarme non colpirà solo una volta, ma anche il ciclo sarà interrotto. Per favore consigliatemi quale strada prendere, non riesco a capirlo...

 
Dimoncheg >> :

Volevo fare in modo che l'esperto non lavorasse dalle 6 alle 20 sul broker, controllando prima che si spenga e aspettando che si chiuda. Tutto funziona ma vorrei poter aggiungere un avviso come se il trading fosse finito quando l'esperto smette di fare trading.

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
{
if (OrdersTotal() == 0)
Alert("Торговля закончена");
return(0);
}

inizia a suonare ad ogni ticchettio. In questo caso l'allarme non colpirà solo una volta, ma anche il ciclo sarà interrotto. Per favore, consigliatemi quale strada prendere, non riesco proprio a capirlo...

Una delle opzioni:

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
   {
   if (OrdersTotal() == 0)
   if( NeedAlert){ Alert("Торговля закончена"); NeedAlert=false;}
   return(0);
   }
Impostare la variabile bool NeedAlert su true quando si inizia il trading.