Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 457

 

Non capisco niente di tutto questo. La mia domanda è stata spostata dal moderatore da MKL5 a MKL4. Ho seguito il link - sì, la mia domanda è appesa lì, ma l'ultima risposta è del 5.02.2018. Venuto qui - anche MKL4 e la vita è bollente...Allora perché il moderatore sta gettando in un thread morto? Va bene, andiamo avanti. Ora veniamo al punto: buttare qui il mio "problema".


Vladimir Karputov:

Per la condizione 1, metti il numero magico ID +1, per la condizione 2 il numero magico +2 e così via. In questo modo si può poi capire che questa posizione è stata aperta dalla condizione 1 o dalla condizione 2 ...

Pomeriggio. Ho avuto successo solo per una posizione BAY. Il set di magia per la vendita non funziona per qualche motivo. Tutto è assolutamente identico, tranne la magia stessa, ovviamente. Cosa ho fatto di male?

int total=OrdersTotal();

      for(int i=OrdersTotal()-1;i>=0;i--)

      {

        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

        

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && OrderMagicNumber==111 && MathAbs(WPR1)<20)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);

      

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

           

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && MathAbs(WPR1)>96)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);               

         }

       continue;  

      } 
 
novichok2018:

Non capisco niente di tutto questo. La mia domanda è stata spostata dal moderatore da MKL5 a MKL4. Ho seguito il link - sì, la mia domanda è appesa lì, ma l'ultima risposta è del 5.02.2018. Venuto qui - anche MKL4 e la vita è bollente... quindi perché il moderatore sta gettando in un thread morto? Va bene, andiamo avanti. Ora veniamo al punto: buttare qui il mio "problema".


Pomeriggio. Ha funzionato solo per una posizione BAY. Il magik impostato per SELL non funziona per qualche motivo. Tutto è assolutamente identico, tranne il mago stesso, naturalmente. Cosa ho fatto di male?

1. non conosce mql4.

2. Per chiudere un ordine con magic 222 deve essere prima aperto con magic 222. Guarda quale mago apre gli ordini SELL

3. Dopo l'OrderMagicNumber, ci dovrebbero essere delle parentesi ().

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

4. Perché è evidenziato nella condizione?

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))
 

Ragazzi, ecco una domanda: come faccio a mettere valori variabili in un array unidimensionale?

Non mandarlo in aiuto - lì non c'è nessun esempio per un problema del genere.


Diciamo che c'è una variabile a, che cambia in certe condizioni.

Voglio un array per memorizzare gli ultimi 3 valori di questa variabile. Come è implementato questo in mql4?


Sto scrivendo int mas[3];

mas[]=a; all'interno del ciclo, dopo una condizione che cambia a,

Il compilatore dà fuori ']', ma non funziona nulla, anche se logicamente dovrebbe. - Vuole che metta qualche espressione sconosciuta dentro le parentesi in mas[]=a.

MQL4 ha qualche funzione che riempie l'array con un valore variabile ad ogni iterazione del ciclo?


 
John Smith:

Ragazzi, ecco una domanda: come faccio a mettere un valore variabile in un array unidimensionale?

Non mandarlo in aiuto - lì non c'è nessun esempio per un problema del genere.


Diciamo che c'è una variabile a, che cambia in certe condizioni.

Voglio un array per memorizzare gli ultimi 3 valori di questa variabile. Come è implementato questo in mql4?


Sto scrivendo int mas[3];

mas[]=a; all'interno del ciclo, dopo una condizione che cambia a,

Il compilatore dà fuori ']', ma non funziona nulla, anche se logicamente dovrebbe. - espressione prevista, vuole che metta qualche espressione sconosciuta dentro le parentesi in mas[]=a.

MQL4 ha qualche funzione che riempie l'array con un valore variabile ad ogni iterazione del ciclo?


In quale cella dell'array pensate che sia collocato il valore della variabile 'a', in questo modo: mas[]=a; ?

Ti manderei all'aiuto, leggi dall'inizio :)

 
John Smith:

Ragazzi, ecco una domanda: come faccio a mettere valori variabili in un array unidimensionale?

Non mandarlo in aiuto - non c'è nessun esempio per un tale problema.


Diciamo che c'è una variabile a, che cambia in certe condizioni.

Voglio un array per memorizzare gli ultimi 3 valori di questa variabile. Come è implementato questo in mql4?


Sto scrivendo int mas[3];

mas[]=a; all'interno del ciclo, dopo una condizione che cambia a,

Il compilatore emette ']', ma non funziona nulla, anche se logicamente dovrebbe. - Vuole che metta qualche espressione sconosciuta dentro le parentesi in mas[]=a.

MQL4 ha qualche funzione che riempie l'array con un valore variabile ad ogni iterazione del ciclo?


Forse dovresti leggere non solo gli esempi di codice, ma anche altre lettere.

Ecco una citazione dalla documentazione:

Gruppo di funzioni per lavorare con gli array

Non sono ammesse più di quattro matrici dimensionali. Ogni dimensione è indicizzata da 0 a dimension_size-1. In un caso particolare di un array unidimensionale di 50 elementi, chiamando il primo elemento è array[0], l'ultimo è array[49].

 
Alexey Viktorov:

1. non conosce mql4.

2. Per chiudere un ordine con magic 222 deve prima essere aperto con magic 222. Guarda quale mago apre gli ordini SELL

3. Dopo l'OrderMagicNumber, ci dovrebbero essere delle parentesi ().

4. Perché è segnato nella condizione?

Grazie per la vostra risposta. È chiaro che devo aprire prima con una magia. Ho rimosso l'orderticket e controllato la logica con i commenti. Si è scoperto che la chiusura delle posizioni avviene secondo le condizioni della prima posizione aperta. Cioè, se prima si apre una posizione Buy o Sell con Condizione 1 e poi una seconda posizione aperta con la stessa condizione ma con Condizione 2, la condizione di chiusura viene ignorata e anche la seconda posizione viene chiusa con Condizione 1 nonostante l'altra Magic.

Ho applicato l'interruzione dopo la chiusura dell'ordine ma la soluzione è stata mezza:solo se viene aperta una posizione dello stesso tipo. Se, per esempio, una posizione Sell è stata aperta per prima e non è ancora stata chiusa, mentre una posizione Buy viene aperta e chiusa, la posizione Sell non vede alcuna condizione per essere chiusa fino a quando un'altra posizione Sell non viene aperta e chiusa (secondo le sue condizioni). E se BAY apre e chiude di nuovo, manca di nuovo le sue condizioni di chiusura. Quindi cosa fare?

 
Buon pomeriggio a tutti. Cari programmatori, per favore aiutatemi a inserire una linea con la possibilità di specificare un file audio per ogni Alert3.Lv1;2;3, per attivare un suono diverso che si specifica. Io stesso non sono bravo a codificare e programmare.
File:
 
Buon giorno signori programmatori e conoscitori di MQL! Ho un Expert Advisor che ferma l'autotrading in base alle notizie. Ne ho trovato uno in rete che non funziona o funziona male. O qualcuno può scriverne uno basato sull'indicatore urdala?
 
Ciao ragazzi. Puoi dirmi come sbarazzarmi dell'errore [Trade context is busy]?
 
Rustam Bikbulatov:
Ciao ragazzi. Puoi dirmi come sbarazzarmi dell'errore [Trade context is busy]?
if(!IsTradeContextBusy())   //торговый поток свободен
  {
 // здесь оформляем запрос
 // на торговую операцию

  }