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

 
pigvin:

Il problema è che l'EA riapre costantemente gli ordini, cioè c'è un segnale di acquisto - apre un ordine, poi lo chiude a profitto, e le condizioni sono ancora conservate lo apre di nuovo.

Ho pensato che potrebbe essere risolto con il tradizionale contatore di acquisto e vendita - se l'ordine di acquisto ha aperto il contatore +1 e un nuovo acquisto non può essere aperto finché il contatore non è sopra lo 0 e il contatore viene resettato solo dopo la vendita.

Cioè c'è un segnale su una barra ma è già stato usato?

Si potrebbe fare così

datetime save_time; 
int tf=0;
старт
...
if(total<1)//проверка количества ордеров 
   {
         if(save_time!=iTime(0,tf, iBarShift(0,tf,Time[0])))
            save_time =iTime(0,tf, iBarShift(0,tf,Time[0]));
         else return;


  ...
 if(ticket>0)
                      {
                         if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("открыта позиция BUY : ",OrderOpenPrice());
      
                         else Print("Ошибка при открытии BUY позиции : ",GetLastError()); 
                        }else{ save_time =0;}// так как ошибка запретим ретурн (см. выше)
 
Operr:

Prova così.

if (OrderOpenTime()+2*1440*60  > Time[0])   //т.е. последнее время текушего графика а не локальное

Dovrebbe funzionare in entrambi i sensi.

Per me ha più senso.

if (Time[0]-OrderOpenTime() >= 2*1440*60 )   
 

Ciao a tutti!

Scusa per l'off-topic, l'argomento è richiesto, è per questo che sto scrivendo qui, puoi darmi un suggerimento? Bloccato.

Come, usando solo operazioni elementari (+-*/%), eseguire l'esponenziazione (anche reale) di un numero reale? Per esempio, il calcolatore del vento, applicato alla potenza di 1,2, dà il risultato 1,2445647472073939777218169154111826. Interessato all'algoritmo, la lingua non ha importanza, nessuna. Lo tradurrò io stesso.

ZS. Quanti test di programmazione non hanno fatto, vedo un tale problema per la prima volta, anche se può essere banale per qualcuno?

 

Buon pomeriggio a tutti!

Ho cercato un sacco di forum e articoli su google , ma non ho trovato una risposta

Ho deciso di scrivere un EA per fare trading su due ordini opposti su М1

L'idea è semplice: metti due ordini opposti con piccoli TP, poi, quando il TP di uno di essi per il secondo timer attivato è il numero di barre (diciamo 5), sarà SL temporaneo. Il calcolo è che se la valuta si muoverà nella stessa direzione, le perdite quando il secondo ordine innesca lo SL temporaneo saranno minime, ma se il grafico si gira, siamo in nero su due posizioni.

Non so come scrivere un frammento di codice con"quando si innesca un TP di uno di loro, il timer del secondo si accende come numero di barre".

Attualmente ho solo un timer per due ordini contemporaneamente, ma non riesco a ottenere molto

PS per un mese non può risolvere questo problema, si prega di aiutare consigli o codice:)

Ecco il codice del consulente

extern int SL=100;

extern int TP=100;

extern double StartLot=0.1;

extern double StopLot=1.0;

extern int bar_time=20;


double Lot()

{

double lt;

if(OrdersHistoryTotal()==0) return (StartLot);

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()<0)

{

lt=OrderLots()*2;

if(lt>StopLot) return (StartLot);

else return (lt);

}

else

return (StartLot);

}

else

return (StartLot);

}

int start()

{

double lot;

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

{

int order;

{

lot=Lot();

order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);

order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);

}

}

//вот здесь должно быть что-то что является решением проблемы и связующим звеном

{

int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;

if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }

if ( bars >= bar_time )

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);

}

return(0);

}


Grazie in anticipo

 
Non su una barra! In linea di principio, non dovremmo aprire in questa tendenza fino a quando non ci sarà un segnale di inversione o di turbolenza del mercato!
costy_:

Cioè c'è un segnale su una barra, ma è già stato usato?

Potresti fare così

 
snail09:

Ciao a tutti!

Scusa per l'off-topic, l'argomento è richiesto, è per questo che sto scrivendo qui, puoi darmi un suggerimento? Bloccato.

Come, usando solo operazioni elementari (+-*/%), eseguire l'esponenziazione (anche reale) di un numero reale? Per esempio, il calcolatore del vento, applicato alla potenza di 1,2, dà il risultato 1,2445647472073939777218169154111826. Interessato all'algoritmo, la lingua non ha importanza, nessuna. Lo tradurrò io stesso.

ZS. Quanti test di programmazione non ho fatto, vedo un tale problema per la prima volta, anche se può essere banale per qualcuno?

https://docs.mql4.com/ru/math/MathPow no? Oppure le operazioni elementari sono una condizione del problema. Allora l'opzione http://bpascal.ru/download/desc/436.php se fai tutto a mano, allora implementa esponente e logaritmo con le tue funzioni.

 
индикаторcosty_:

Si usa while(i>=0), quindi quando appare una nuova candela i=1 (per assicurarsi che i dati della candela precedente siano calcolati sui dati fissi una volta).

Perché inserire some_time=D'1971.01.11 00:00'; usare Bars, IndicatorCounted non funziona per me (beh, l'errore è probabilmente dovuto alla first_t_bar).

Il tuo algoritmo e dovresti correggerlo.

"Sono nuovo nella programmazione."Sono nuovo nella programmazione dal 2007).


Tuttavia, non capisco perché il mio progetto funziona bene e quello standard no. some_time=D'1971.01.11 00:00'; qui è usato una volta all'avvio. Poi la data viene cambiata con un'altra, ma non c'entra niente perché funziona in un caso e non in un altro. Rifarò l'indicatore più tardi. Questa è una versione modificata di un altro indicatore. Grazie per la risposta!

 
Sonne:

Buon pomeriggio a tutti!

Ho cercato un sacco di forum e articoli su google , ma non ho trovato una risposta

Ho deciso di scrivere un EA per fare trading su due ordini opposti su М1

L'idea è semplice: metti due ordini opposti con piccoli TP, poi, quando il TP di uno di essi per il secondo timer attivato è il numero di barre (diciamo 5), sarà SL temporaneo. Il calcolo è che se la valuta si muoverà nella stessa direzione, le perdite quando il secondo ordine innesca lo SL temporaneo saranno minime, se il grafico si gira, siamo in nero su due posizioni.

Non so come scrivere un frammento di codice con"quando si innesca un TP di uno di loro, il timer del secondo si accende come numero di barre".

Attualmente ho solo un timer per due ordini contemporaneamente, ma non riesco a ottenere molto

PS Non ho risolto questo problema per un mese, per favore aiutatemi con consigli o codice:)

Ecco il codice

................................................

Darò il mio meglio in anticipo grazie in anticipo.

1. Se c'è una posizione chiusa su un Takei...

1.1 Se il suo tipo è OP_BUY, ...

1.1.2 Se c'è una posizione aperta OP_SELL, ...

1.1.3 Se il tempo della barra corrente meno il tempo della barra che apre la posizione di vendita è maggiore o uguale al numero di barre per il ritardo, ....

1.1.4 Chiudiamo la posizione Sell

1.2 Se il suo tipo è OP_SELL, ...

1.2.2 Se c'è una posizione aperta OP_BUY, ...

1.2.3 Se il tempo della barra corrente meno il tempo di apertura della posizione Buy è maggiore o uguale al numero di barre da tenere, ....

1.2.4 Chiudere la posizione Buy

 
Ciao, potresti per favore consigliarmi dove ottenere una storia normale (senza buchi) e se la storia dei minuti da MT5 per MT4?
 

Buona sera a tutti, mi scuso per la domanda stupida prima)

Voglio sapere se è possibile per un EA in cui c'è una variabile, diciamo "A", a cui viene dato un valore di prezzo al momento e che fa trading. Se vogliamo cambiare questo valore in un qualsiasi valore storico, per esempio, prendiamo un qualsiasi valore mensile e ricaviamo il valore desiderato dall'analisi della storia. Ho provato a farlo nello strategy tester, ma ho molti dubbi sulla sua correttezza. O dovrò rifarlo e lavorare con gli array! Grazie a tutti.

p.s. Voglio sapere perché non l'ho trovato nel manuale e nel tutorial MQL.