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

 
r772ra:
doppio iClose( simbolo stringa, int timeframe, int shift)

Qualcosa del genere.

Grazie mille!



 
extern double lot = 1;
extern double ts = 50; 
extern double sl = 50; 
extern double tp = 40;
extern double periodrsi = 30;
extern double hirsi = 80;
extern double lowrsi = 30;

int K=0;
int L=0;
 


int init()
  {
   return(0);
  }

 
int start()
  { 
    double r1 = iRSI(NULL,0,periodrsi,PRICE_CLOSE,1);


  

    static bool first = true;
    static int pre_OrdersTotal = 0;
    int _OrdersTotal = OrdersTotal();
    if ( first )
    {
        pre_OrdersTotal = _OrdersTotal;
        first = false;
        return(0);
    }
 
   
   
   
    if ( _OrdersTotal > pre_OrdersTotal ) 
{K=0;
L=0;}
    if ( _OrdersTotal < pre_OrdersTotal )
{K=0;
L=0;}
    pre_OrdersTotal = _OrdersTotal; 

if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }



 if(OrdersTotal()<1)

 {
 if((r1<hirsi) && (L==2))   //есть два прохода

 OrderSend(Symbol(),OP_SELL,lot,Bid,0,Ask+sl*Point,Bid-tp*Point,"Easiest ever",0,0);
Ciao amici, per favore consigliatemi una funzione che aggiunga la seguente condizione a questo codice. L'affare viene aperto solo se l'rsi ha fatto due passaggi al ribasso durante n-numero di barre. cioè se l'rsi ha fatto due passaggi al ribasso durante 30 barre allora apriamo un ordine, non riesco a capirlo) sono un principiante)
 
TemirKhan:
Ciao amici, suggerite una funzione che aggiunga la seguente condizione a questo codice. Se l'rsi ha fatto due passaggi al ribasso durante n-numero di barre. cioè se l'rsi ha fatto due passaggi al ribasso durante 30 barre allora aprire l'ordine, non riesco a capirlo).


Si avvia il contatore. Poi, quando si esegue la cronologia, si conta in base alla condizione: "Se si incrocia verso il basso, si aggiunge uno al contatore... "ecc.

Impara e prenditi il tuo tempo e lo farai bene!

 
hoz:


Si avvia il contatore. Poi, quando lo si esegue nella storia, conta in base alla condizione: "Se si incrocia verso il basso, aggiungere uno al contatore... "ecc.

Imparate e prendetevi il vostro tempo e tutto si risolverà!


Quindi c'è un contatore di incroci, eccolo:
if (r1>hirsi) K=1;
 {
 if ((K==1) && (r1<hirsi))

 { 
  L=(L+1);                        // набираем проходы вниз под hirsi

K=0;
 }
 }
ora abbiamo bisogno di un contatore di barre, ma come?)) in modo che L possa ottenere un valore di "2" solo se i crossover avvengono entro 30 barre
 

Ho iniziato a pensare. Ho esaminato la funzione di Kim per dissipare i miei dubbi... e il mio ragionamento è stato confermato. Per qualche ragione, il controllo "Free Trade Flow" avviene solo a apertura и chiusura ordini... E quando modifiche (impostazione iniziale di SL e TP), a traale e durante il trasferimento di una posizione a Breakeven non c'è nessun controllo. Perché? Dopo tutto, in entrambi i casi il server è chiamato!

Dopo tutto, se il trader viene preso, l'Expert Advisor logicamente non imposterà stop, per esempio, e non farà assolutamente nulla con la posizione. Non capisco questo.

 
hoz:

Ho iniziato a pensare. Ho esaminato la funzione di Kim per dissipare i miei dubbi... e il mio ragionamento è stato confermato. Per qualche ragione, il controllo "Free Trade Flow" avviene solo a apertura и chiusura ordini... E quando modifiche (impostazione iniziale di SL e TP), a traale e durante il trasferimento di una posizione a Breakeven non c'è nessun controllo. Perché? Dopo tutto, in entrambi i casi il server è chiamato!

Dopo tutto, se il trader viene preso, l'Expert Advisor logicamente non imposterà stop, per esempio, e non farà assolutamente nulla con la posizione. Non capisco questo.


Niente di che. Impostalo sul prossimo segno di spunta
 
Vinin:

Non è un grosso problema. Lo imposterà al prossimo tick

Quindi, in questo caso, perché controllare all'apertura o alla chiusura? Sarà impostato anche sul prossimo tick :) Dopotutto, può giocare un grande ruolo per uno scalper...
 
hoz:

Quindi, in questo caso, perché controllare quando si apre o si chiude? Sarà anche impostato sul prossimo tick :) Dopo tutto, può giocare un ruolo enorme per uno scalper...

Quindi tutto è nelle vostre mani. Così sarà fatto. Alcuni lo fanno in questo modo.
 

Di nuovo ho guardato nel riferimento e di nuovo ho letto le righe qui:

https://docs.mql4.com/ru/basis/preprosessor/import

Для импорта функций во время выполнения mql4-программы используется так называемое позднее связывание. Это значит, что пока не вызвана импортируемая функция, соответствующий модуль (ex4 или dll) не загружается.

Voglio dire, affinché la libreria sia caricata, dovrebbe essere chiamata nel codice dopo le linee di importazione, giusto?

Per esempio, ho fatto così:

#import "hoz_Base@Library.ex4"
   double ND(double A);
   double Get_TradePrice(int fi_priceId,       // Цена: 0 - Ask; 1 - Bid
                      string fs_symbol);

1. Si scopre che noi dichiarare le funzioni. che useremo nell'Expert Advisor proprio all'inizio del codice dell'Expert Advisor?

2. e non dichiararli molto nel codice dell'Expert Advisor stesso e usare file di intestazione? Cioè solo per le dichiarazioni?

Questa domanda è venuta fuori perché ho visto tali Expert Advisor che sono stati scritti da programmatori abbastanza seri, ma i loro file di intestazione contengono tutte le funzioni principali e non principali. Sono rimasto sorpreso da questo... La ragione è che la velocità delle librerie compilate è molto più veloce, inoltre, il codice delle funzioni di libreria è "isolato", che è anche molto conveniente.

 
Buongiorno, è la prima volta che vengo qui quindi mi scuso, non ho visto questo thread e ne ho creato uno nuovo, ho davvero bisogno di sentire i professionisti!

https://www.mql5.com/ru/forum/145453