Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 646

 
Tra-der:
Ci sono due terminali MT5. Problema: posso scrivere script per permettere solo operazioni lunghe in un terminale e solo operazioni corte nell'altro?
#define ORDER_TYPE_BUY ORDER_TYPE_BUY_STOP   // поставить в самом начале советника, если нужно отказаться от BUY-сделок
#define ORDER_TYPE_SELL ORDER_TYPE_SELL_STOP // поставить в самом начале советника, если нужно отказаться от SELL-сделок
 
Tra-der:
Ci sono due terminali MT5. Compito: è possibile scrivere degli script per permettere solo operazioni lunghe in un terminale e solo operazioni corte nell'altro?

Basta inserire un parametro di input nel tuo EA e, a seconda del valore assegnato ad esso all'avvio, si comprerà o si venderà soltanto:

input bool Long=true;            // allow only "Long"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
...
void OnTick()
  {
   if(!Long)
      trade.Sell(0.01);
   if(Long)
      trade.Buy(0.01);
  }
 
Artyom Trishkin:

Per sapere se si tratta di un nuovo top o bottom, devi ricordare il tempo dell'ultimo top/top che hai trovato, e confrontarlo con quello che hai trovato finora.

Grazie, è chiaro con il buffer.

Per ricordare il tempo dell'ultimo vertice trovato, è necessario conoscerlo in qualche modo.

Come fare, come conoscere il tempo dell'ultimo vertice trovato?

 
mila.com:

Grazie, il buffer è chiaro.

Per ricordare il tempo dell'ultimo vertice trovato, è necessario conoscerlo in qualche modo.

Come fare questo, come conoscere il tempo dell'ultimo vertice trovato?

Si dichiara una variabile statica per memorizzare il tempo dell'estremo precedente dello zigzag e la si inizializza con zero.

2. Trova un vertice e se il suo tempo non è uguale al tempo nella variabile statica, considera che hai trovato l'estremo richiesto e memorizza il nuovo tempo in questa variabile.

3. GoTo(2);

 

Compagni programmatori!

Consiglia un modo per scoprire se lo spread è aumentato.

Il problema è il seguente: durante la transizione a un nuovo giorno la società di brokeraggio allarga lo spread, e a volte è pazzesco per alcune coppie - supera di 3-5 volte il valore normale. I differenziali dell'ora legale sono diversi nelle società di intermediazione con il cambio dell'ora dalle 23 alle 59 e dalle 20 alle 59 e così via.

Per alcuni ragazzi lo spread non cambia molto, quindi non possiamo tagliare il robot "Working by time" perché se lo spread non cambia, non dovremo vietare il trading.

La questione principale è come rilevare che lo spread è troppo grande e quindi vietare al robot di aprire una posizione. Vedo una variante di memorizzare le dimensioni dello spread in un file per ogni nuova barra per le ultime 5-7 barre, poi sommare il tutto e dividere per il numero e quindi ottenere lo spread medio e moltiplicare per 1,2 - 1,4 (margine), ma non è interessante salvare e moltiplicare i file e non sono sicuro che sia la soluzione corretta per calcolare lo spread medio. Se inserisco manualmente lo spread massimo consentito nelle impostazioni, è molto banale e poco interessante in termini di funzionamento del bot.

Si prega di consigliare la soluzione ottimale per la domanda, che non avrebbe paura di riavviare il terminale, e l'arresto di emergenza in caso di interruzione di corrente. Inoltre, preferibilmente una soluzione che minimizzi il carico sul programma, in modo che non ricalcoli ad ogni tick.

Grazie!

 
Vitaly Muzichenko:

Compagni programmatori!

Consiglia un modo per scoprire se lo spread è aumentato.

Il problema è il seguente: durante la transizione a un nuovo giorno la società di brokeraggio allarga lo spread, e a volte è pazzesco per alcune coppie - supera di 3-5 volte il valore normale. Gli spread dell'ora legale sono diversi nelle società di intermediazione con il cambio dell'ora dalle 23 alle 59 e dalle 20 alle 59 e così via.

Per alcuni ragazzi lo spread non cambia molto, quindi non possiamo tagliare il robot "Working by time" perché se lo spread non cambia, non dovremo vietare il trading.

La questione principale è come rilevare che lo spread è troppo grande e come impedire al robot di aprire una posizione. Vedo una variante di memorizzare le dimensioni dello spread in un file per ogni nuova barra per le ultime 5-7 barre, poi sommando il tutto e dividendo per il numero e ottenendo così lo spread medio e moltiplicando per 1,2 - 1,4 (margine), ma non è interessante salvare e moltiplicare i file. Se inserisco manualmente lo spread massimo consentito nelle impostazioni, è molto banale e poco interessante in termini di funzionamento del bot.

Per favore, consigliatemi quale sarebbe la migliore soluzione a questa domanda. Grazie!

Può essere banale, ma io inserisco il limite manualmente. E se a Capodanno per le ultime N candele lo spread sarà 3 volte più grande del solito, e di notte sarà ancora 3 volte più grande? Il sistema di analisi lo considererà come uno spread normale x3. Penso che se una persona fa trading su un conto reale, non è difficile per lui stimare manualmente lo spread medio di lavoro e impostare la soglia. Anche se la soluzione della tua domanda sarebbe interessante anche per me)
 
Che razza di logica di TC è quella di dipendere così tanto dallo spread!
 
fxsaber:
Che tipo di logica di TS è questo spread-dipendente?!

Ok, mettiamola così. Qui, per esempio, lo spread non si allarga nemmeno tre volte, ma di più, e se si entra nel mercato con uno spread di 20pp, mentre lo spread normale è di 4-6pp, allora non è normale, e bisogna tagliare questi momenti.

 
Vitaly Muzichenko:

Ok, mettiamola così. Per esempio, lo spread qui non è nemmeno tre volte più ampio, ma di più, e se si entra nel mercato con uno spread di 20pp, mentre lo spread normale è 4-6pp, questo non è normale, e dobbiamo tagliare questi punti.

Quindi, concentratevi sull'offerta se avete intenzione di fare SELL. Che differenza fa quale diffusione? Ok, non interferirò più.
 
Vitaly Muzichenko:

Ok, mettiamola così. Per esempio, lo spread qui non è nemmeno tre volte più ampio, ma di più, e se si entra nel mercato con uno spread di 20pp, mentre lo spread normale è 4-6pp, questo non è normale, e dobbiamo tagliare questi punti.

Il globale non aiuta?
Motivazione: