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

 
Lerchik:

Quindi quello che stai dicendo è che aprire un ordine a mercato a Ask equivale ad aprire un ordine BuyLimit.

Qui c'è qualcosa che non va. Supponiamo che il prezzo di offerta sia pari a 1,4500. Così, quando apriamo un ordine di acquisto dal mercato, esso starà al prezzo di Ask e il prezzo di Bid è, diciamo, 10 punti.

Allora l'ordine sarà a 1,4510.

Ora l'ordine BuyLimit è uguale a 1,4500. E il prezzo scende di 10 punti al di sotto del prezzo Ask su Ask aprirà un ordine. Non per Offerta ma per Richiesta.

Non si adatta un po'. Sono cose diverse e non possono essere paragonate così.

Forse mi sbaglio?

Tutti gli ordini di acquisto sono aperti da Ask e chiusi da Bid, e viceversa per gli ordini di vendita.

Se sei troppo pigro per leggerlo, apri un conto demo e fai pratica.

 
Сергей Таболин:

Perché non iniziate a leggere la documentazione?

Ecco cosa c'è nella documentazione:

Ordine in sospeso

Un ordine pendente è un'istruzione da parte di una società di intermediazione di comprare o vendere uno strumento finanziario in una data futura alle condizioni specificate. Ci sono i seguenti tipi di ordini in sospeso:

  • Buy Limit- richiesta di acquisto al prezzo Ask che è uguale o inferiore a quello specificato nell'ordine. Il livello di prezzo attuale è superiore al valore dell'ordine. Di solito questo tipo di ordini viene piazzato nell'aspettativa che il prezzo dello strumento inizi a crescere quando scende a un certo livello;

Ma non capisco cosa c'è scritto qui e come funziona.

Cioè, il prezzo scenderà sotto il bylimit e un Askom aprirà un ordine. Ma allo stesso tempo l'ordine sarà aperto allo stesso prezzo o più alto?

Non c'è niente di tutto questo da nessuna parte. Ci sono solo regole. Nessuno qui vuole spiegare perché.

Quindi sto cercando di ottenere qualcosa.

 
Lerchik:

Ecco cosa c'è nella documentazione:

Ordine in sospeso

Un ordine pendente è un'istruzione da parte di una società di intermediazione di comprare o vendere uno strumento finanziario a determinate condizioni in futuro. Ci sono i seguenti tipi di ordini in sospeso:

  • Buy Limit- richiesta di acquisto al prezzo Ask che è uguale o inferiore a quello specificato nell'ordine. Il livello di prezzo attuale è superiore al valore dell'ordine. Di solito questo tipo di ordini viene piazzato nell'aspettativa che il prezzo dello strumento inizi a crescere quando scende a un certo livello;

Ma non capisco cosa c'è scritto qui e come funziona.

Cioè, il prezzo scenderà sotto il bylimit e un Askom aprirà un ordine. Ma allo stesso tempo l'ordine sarà aperto allo stesso prezzo o più alto?

Non c'è niente di tutto questo da nessuna parte. Ci sono solo regole. Nessuno qui vuole spiegare perché.

Quindi, voglio ottenere qualcosa.

BuyLimit può essere impostato SOLO al di sotto del prezzo Ask. Il SellLimit può essere impostato SOLO più in alto del prezzo Bid.

BuyStop può essere impostato SOLO sopra il prezzo Ask. Il SellStop può essere impostato SOLO sotto il prezzo Bid.

Quando il prezzo corrispondente raggiunge l'ordine corrispondente, questo verrà attivato e verrà creata la posizione corrispondente.

 
Lerchik:

Ecco cosa c'è nella documentazione:

Ordine in sospeso

Un ordine pendente è un'istruzione da parte di una società di intermediazione di comprare o vendere uno strumento finanziario a determinate condizioni in futuro. Ci sono i seguenti tipi di ordini in sospeso:

  • Buy Limit- richiesta di acquisto al prezzo Ask che è uguale o inferiore a quello specificato nell'ordine. Il livello di prezzo attuale è superiore al valore dell'ordine. Di solito questo tipo di ordini viene piazzato nell'aspettativa che il prezzo dello strumento inizi a crescere quando scende a un certo livello;

Ma non capisco cosa c'è scritto qui e come funziona.

Cioè, il prezzo scenderà sotto il bylimit e un Askom aprirà un ordine. Ma allo stesso tempo l'ordine sarà aperto allo stesso prezzo o più alto?

Non c'è niente di tutto questo da nessuna parte. Ci sono solo regole. Nessuno qui vuole spiegare perché.

Quindi sto cercando qualcosa.

Aprite un conto demo e fate pratica.

Illimite di acquisto è impostato al di sotto dell' attuale prezzo Ask e sarà aperto quando l'Ask è inferiore

Buy Stop è impostato sopra l' attuale prezzo Ask e si aprirà quandoAsk salirà

L'acquisto si apre al prezzo corrente di Ask

 
MakarFX:

Aprite un conto demo e fate pratica.

Buy Limit è impostato sotto l' attuale prezzo di Ask e si aprirà quandoAsk scende

Il Buy Stop è impostato sopra l' attuale prezzo Ask e si aprirà quandol'Ask salirà

L'acquisto si apre al prezzo corrente di Ask

Questo è qualcosa.

Andando avanti...

Ok, il prezzo Bid è sceso sotto il prezzo Ask e l'Ask apre l'ordine. Ma il prezzo dell'ordine rimarrà lo stesso di quello impostato nell'ordine o sarà diverso?

 
Lerchik:

Questo è qualcosa.

Andando avanti...

OK, il prezzo di offerta è sceso sotto il prezzo dell'ordine e l'Ascom ha aperto l'ordine. Ma il prezzo dell'ordine rimarrà lo stesso di quello impostato nell'ordine o sarà diverso?

1 Il prezzo Ask dovrebbe scendere al prezzo "Odds

2 Il prezzo rimane

 
MakarFX:

1 Il prezzo ascendente dovrebbe scendere al prezzo della pausa.

2 Il prezzo rimane

Grazie mille per il chiarimento.

Mi chiedevo perché non funzionasse come volevo.

 

Buon pomeriggio a tutti.

Per quanto ho capito dalle risposte alla mia domanda precedente, ho solo bisogno di gestire gli errori che possono verificarsi all'apertura degli ordini, questa è la prima cosa. In secondo luogo, ho bisogno di proteggere l'EA dal battere il server ad ogni tick in caso di errore.

Prima domanda, per favore ditemi come fare la gestione degli errori?

Seconda domanda - come proteggersi dal martellamento del server?

Ora i miei trade sono aperti in questo modo

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



La variabile Count Market Buy è calcolata con questa funzione

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

Se voglio fare trading in questo modo, vorrei sapere come evitare il chattering del server in caso di errori.

 
DanilaMactep:

Buon pomeriggio a tutti.

Per favore, scrivetemi e ditemi come gestire correttamente gli errori e come evitare che il server suoni ad ogni tick quando si verifica un errore?
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

E questa richiesta dovrebbe essere scritta dopo ogni riga in cui c'è un tentativo di aprire un ordine usando Ordersend - giusto?

Ma ho una domanda - se Remove EA ha cancellato l'EA dal grafico, come posso farlo riattaccare automaticamente al grafico e continuare a lavorare? Potresti descrivere la questione in modo più dettagliato - errore 141 - troppe richieste. Ok, se ci sono troppe richieste, cancelliamo l'EA dal grafico. Cosa devo fare dopo - aspettare che mi alzi al mattino, cambiare tutto e venire al PC per attaccare di nuovo l'EA al grafico?