Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 343

 
Certo che puoi!!!
 
Vladimirovits:
Ho l' intero progetto visual studio nella mia cartella esperti... Compile è un file .exe, giusto?

No, la libreria compilata è il file ExpertSample.dll
 
Forexman77:

Il modello è stato preso da un libro di testo. Non sono molto bravo con le funzioni di gestione degli errori in questo momento.

All'apertura dell'ordine, c'è RefreshRates(); (ho sostituito Bids e Asks con Market Info, come mi è stato detto)

E la funzione di gestione degli errori:

Volevo chiedere. Posso aggiungere la seguente riga di 129 error?

129

ERRARE_INVALIDO_PREZZO

Prezzo errato


Quando ricevi questo errore, dovresti rivedere la logica dell'Expert Advisor. È l'Expert Advisor che invia un prezzo errato in un ordine di trading. E tu hai deciso di impantanare il server con un ordine commerciale errato?


L'auto-trading sarà disattivato e questo è tutto.

 
artmedia70:

129

ERRARE_INVALIDO_PREZZO

Prezzo errato


Quando si ottiene questo errore, è necessario rivedere la logica dell'EA. È l'Expert Advisor che invia il prezzo sbagliato nell'ordine di compravendita. E hai deciso di impantanare il server con un ordine di scambio errato?


L'auto-trading sarà disabilitato e questo è tutto.

Ha guardato attraverso tutto. Forse quando l'Expert Advisor invia una richiesta:

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
si ricorda a quale prezzo comprare?

E ho avuto il seguente:

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

se l'offerta è inferiore o uguale alla MA, allora compriamo. Abbiamo comprato dalla domanda, quindi stiamo giocando a rimpiattino con la domanda.

Non ho avuto problemi a vendere, solo a comprare.

Ho trovato alcune informazioni su questo argomento:

"Se il prezzo di apertura richiesto non era nel flusso dei prezzi o il prezzo richiesto non era normalizzato dopo il punto decimale, allora verrà generato l'errore 129 (ERR_INVALID_PRICE). Se il prezzo di apertura richiesto è gravemente superato, verrà generato un errore 138 (ERR_REQUOTE) indipendentemente dal valore del parametro slippage. Se invece il prezzo richiesto è obsoleto ma è ancora presente nel flusso dei prezzi, la posizione sarà aperta al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage".

Se dopo tutto non è bid e ask, allora lo scambio dovrebbe essere andato a buon fine. Cito: "Se il prezzo richiesto non è aggiornato ma è ancora presente nel flusso dei prezzi, allora la posizione si aprirà al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage" Il prezzo al hover era nella zona di trading al 100%. La chiusura è stata ben al di sotto della media mobile.

 

Domanda per il Guru.

Non riesco a far rendere l'indicatore in alcune aree. L'essenza dell'indicatore, se il movimento non è più di un certo valore, il valore rimane come nel valore scritto di MA_otshet.

Quando il valore viene superato, il valore diventa, corrispondente al momento attuale.

Qui sotto c'è il codice dell'indicatore con le spiegazioni:

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua 
//--- input parameters
//--- buffers
bool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   static double MA_otshet;  //здесь хранится информация по MA_otshet
  for(int i=0;i<limit;i++)
   {  
      MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
      RefreshRates();   
      if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_2_t; // записываем значение MA_otshet
          ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
          flag=false; // устанавливаем флаг запрета дальнейших расчетов
          }
      if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;  // то рисуем значение индикатора, как записанный MA_otshet
          }
      if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
          flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
          }
   }  
   return(0);
  }
//+------------------------------------------------------------------+

 
Forexman77:

L'indicatore non viene disegnato in alcune aree. L'essenza dell'indicatore, se il movimento non è più di un certo valore, il valore rimane come nel valore registrato di MA_otshet.

Quando il valore viene superato, il valore diventa, corrispondente al momento attuale.

Di seguito il codice e la spiegazione dell'indicatore:


DISEGNO_SEZIONE

 
Forexman77:

Ho controllato tutto. Forse quando l'EA invia una richiesta:

Si ricorda a quale prezzo comprare?

E ho avuto il seguente:

cioè l'offerta è inferiore o uguale alla MA, allora compriamo. Non ho avuto problemi di vendita, ma non ho avuto problemi di vendita.

Non ho avuto problemi a vendere, solo a comprare.

Ho trovato alcune informazioni su questo argomento:

"Se il prezzo di apertura richiesto non era nel flusso dei prezzi o il prezzo richiesto non era normalizzato dopo il punto decimale, allora verrà generato l'errore 129 (ERR_INVALID_PRICE). Se il prezzo di apertura richiesto è gravemente superato, verrà generato un errore 138 (ERR_REQUOTE) indipendentemente dal valore del parametro slippage. Se invece il prezzo richiesto è obsoleto ma è ancora presente nel flusso dei prezzi, la posizione viene aperta al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage".

Se dopo tutto non è bid e ask, allora lo scambio dovrebbe essere andato a buon fine. Cito: "Se il prezzo richiesto non è aggiornato ma è ancora presente nel flusso dei prezzi, allora la posizione si apre al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage" Il prezzo al hover era nella zona di trading al 100%. Kloz era ben al di sotto della media mobile.

Supponiamo che Ask sia sempre normalizzato è il prezzo: non è calcolato e non ha senso normalizzarlo.

Quindi il prezzo potrebbe essere sbagliato perché? Forse i dati non sono aggiornati? Prova ad eseguire RefreshRates() immediatamente prima di OrderSend().

 
Saluti, cari commercianti - programmatori!!!
Qual è il significato di AccountComany?
Si possono trarre certe conclusioni dal nome, ma come si collega al linguaggio di programmazione MT4?

ContoCredito?

ContoValuta?

AccountEquity?

ContoFreeMargin?

AccountFreeMarginCheck?

ContoLavorazione?

AccountStopoutLevel?

AccountStopoutMode?

ArrayBsearch?

Sono molto interessato a conoscere la descrizione dettagliata di ogni comando. Per favore, aiutatemi.

 

ArrayCopy?

ArrayCopyRates?

ArrayCopySeries?

ArrayDimension?

ArrayGetAsSeries?

 

Cos'è un tasso di matrice?