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

 
smartemiy:

Cari professionisti!

Chiedo il vostro aiuto!

Ho un robot di trading che fa 20-80 scambi ciascuno. Non riesco a capire che dipende dalla società di intermediazione?

Invece di uno - mette 100 pezzi.

Per favore aiutatemi!!!

La funzione di avvio viene eseguita su ogni tick e se la condizione di apertura dell'ordine è soddisfatta un nuovo ordine verrà aperto su ogni tick.

Metti dei limiti al numero massimo di ordini aperti o un ordine per barra, ecc.

 
splxgf:

La funzione di avvio viene eseguita su ogni tick, e se la condizione per aprire un ordine è soddisfatta, un nuovo ordine sarà aperto su ogni tick.

Metti dei limiti al numero massimo di ordini aperti o un ordine per barra, ecc.

Grazie mille per la risposta!

Splxgf , ci stavo pensando anch'io:

int init()
{  RefreshRates();
   if (NumberOfOrders()>15) return(0); // если число открытых ордеров превышает число 15, тогда советние не торгует
   if (OpenStop()>30) return(0);       // если число отложеных ордеров превышает число 15, тогда советние не торгует
}

NumberOfOrders è una f-from che conta il numero di ordini aperti. OpenStop - f-op conta il numero di ordini aperti.

La condizione di apertura dell'ordine è soddisfatta e l'EA mette un numero qualsiasi di ordini in fila.

>splxgf: Questa è una variante del codice che ferma l'Expert Advisor quando viene superato il numero di trade. Come faccio a scrivere che un ordine venga piazzato quando la condizione viene attivata?

 

init viene eseguito solo una volta https://docs.mql4.com/ru/basis/functions/special

int MaxOpenOrders=15;

int start()
  { 
    //bla-bla
    if (((OrderOpenPrice()-pAsk) >= -60 || OrdersTotal()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
    OrderSend...
  

Infatti, c'è un tutorial su https://book.mql4.com/ru/

Se volete che la condizione sia attivata solo una volta, è più complicato

 
Signori! Quindi qualcuno può rispondere alla mia domanda su netbook e modem 3G (a pagina 221). Grazie in anticipo.
 
splxgf:

init viene eseguito solo una volta https://docs.mql4.com/ru/basis/functions/special

Infatti, c'è un tutorial su https://book.mql4.com/ru/

Se volete che la condizione sia attivata solo una volta, è più complicato.

Grazie!

Ci darò un'occhiata!

 

Ho cercato nel database e non l'ho trovato, ma forse non stavo cercando abbastanza.

Ditemi, cari, avete qualcosa di simile:

L'algoritmo è semplice: un analogo di una griglia in cui si apre un ordine ogni n pips (comprare o vendere, a seconda della direzione del prezzo). Gli ordini sono aperti fino a quando c'è un profitto di m pips. Quando questo valore viene raggiunto, tutti gli ordini vengono chiusi e tutto ricomincia da capo.

Grazie in anticipo per la vostra attenzione.

 
Zhunko:
Il compito era quello di salvare la cronologia scaricata nei file della cronologia. Durante il processo di scaricamento tutta la storia è tenuta in memoria. Dopo aver chiuso la finestra di MT4, inizia il salvataggio nei file utilizzando gli strumenti di MT4. Questo non è un processo rapido.

Vadim, ho risolto il problema del salvataggio in questo modo:

if(Bars<7000)
  {
    int handle, bar, wParam;
    handle=WindowHandle(Symbol(),Period());
    switch(Period())
            {
                  case PERIOD_M1:  wParam = 33137; break;
                  case PERIOD_H1:  wParam = 33135; break;
                  case PERIOD_D1:  wParam = 33134; break;
            }
    for(bar=1;bar<7000;bar=+100)
      {
        Comment(Bars);
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33135,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33134,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33137,0);  Comment(Bars); Sleep(10000); 
        bar=Bars;
        RefreshRates();
        if(Bars>=7000) {PostMessageA(handle,WM_KEYDOWN,VK_END,0); StartProfit();} //обязательный выход, иначе просто остается и подкачивает данные
        
      }
   }

Grazie al salto tra i timeframes, la storia viene salvata simultaneamente su diversi timeframes (in questo caso è 1 minuto, 1 ora e 1 giorno). Così, non è necessario spegnere il terminale, ma il caricamento non è molto veloce, la velocità è di circa 1 minuto (in queste condizioni) per una coppia di valute, cioè se lo avviamo per molte valute, il terminale si blocca per mezz'ora. L'Expert Advisor inizia ad utilizzare i dati storici senza ricaricare il terminale.

 
forexnew:

Vadim, ho risolto il problema della conservazione in questo modo:

Grazie al salto tra i timeframes, la storia viene salvata simultaneamente per diversi timeframes (in questo caso è 1 minuto, 1 ora e 1 giorno). Così, non c'è bisogno di spegnere il terminale, ma il caricamento non è così veloce, la velocità è di circa 1 minuto (a queste condizioni) per una coppia di valute, cioè se lo avviamo per molte valute, il terminale si blocca per mezz'ora. L'Expert Advisor inizia a utilizzare i dati storici senza ricaricare il terminale.

Ho la stessa cosa solo molte volte più affidabile. Quando si cambia il TF, la storia non viene salvata su file. Solo quando si scarica il terminale.

A volte il terminale salva la cronologia stessa, ma non ha niente a che fare con TFswitching.

 
Zhunko:

Ho la stessa cosa solo molte volte più affidabile. Quando si cambia il TF, la storia non viene salvata su file. Solo quando il terminale è scarico.

A volte il terminale inizia a salvare la cronologia da solo, ma non è legato alla commutazione TF.

Come posso impostarlo per scaricare solo alcuni timeframe (non tutti): minuti, 1 ora e giorni?

Così: stringa sTimeFrame = {"M1", "H1", "D1"}; // La stringa che elenca i TF scansionati.

Non scaricherà più di 2000 barre in un minuto ma il mio Expert Advisor ha bisogno di più di 7000. Dopo aver scaricato con questo script, il mio Expert Advisor lo finirà.

È progettato in questo modo, non tutte le barre vengono scaricate?

 

Ciao cara comunità.

Ho un tale problema. Sto usando l'indicatore "Bollinger Bands" nel mio modello (iBands - https://docs.mql4.com/ru/indicators/iBands) e uno dei suoi parametri - la deviazione (standard deviation) è definito come int. È possibile cambiarlo in doppio? In MT4, nella sezione "Custom Indicators", ci sono altre Bande di Bollinger (contrassegnate come "Bande") dove la deviazione è definita come doppia . Ma come inserirlo in MQL4? Non è incluso nel set standard di indicatori incorporati, vero? Non ho idea di come usarlo in MQL4.

Motivazione: