[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 548

 
artmedia70 писал(а) >>
Cos'è l'errore 4051 e come prenderlo?


https://docs.mql4.com/ru/constants/errors

ERR_INVALID_FUNCTION_PARAMVALUE 4051 Valore non valido del parametro della funzione

 
artmedia70 >>:
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)


No. Ho suggerito di smontare un pezzo di codice che non funziona. Smontatelo in ogni dettaglio. Invece di questo hai esposto l'intero codice. :)

Non ho intenzione di nascondermi in nessun cespuglio. >> Cito:

>>Smontiamo linea per linea un pezzo del tuo codice che non funziona correttamente...

>> dobbiamo?

Ecco le mie parole. Invece di un pezzo che non funziona avete messo fuori un mucchio di roba incomprensibile - un insieme di funzioni. È questo che non mi piace.

 

In generale, per trovare un errore, è necessario bloccare alcune parti del codice. Per esempio, il codice consiste nei seguenti blocchi:

- Controllo dei blocchi per i segnali di trading

- Blocca gli ordini di apertura/chiusura/reversione

- Bloccare il mantenimento delle posizioni aperte.

Blocchiamo gli ultimi due blocchi usando il commento multilinea /**/, eseguiamo l'EA e usiamo il print o l'alert per controllare i valori delle variabili chiave - solo per essere sicuri che questo blocco funzioni correttamente. Se ci imbattiamo in un errore, correggetelo. Poi sbloccare il blocco di codice successivo e ripetere la procedura. E così via fino a quando l'intero codice è debuggato. L'altro modo sarebbe più noioso.

 
drknn >>:

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

- Блок проверки наличия торгового сигнала

- Блок открытия/закрытия/переворота ордеров

- Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.

Sì, grazie, mi è già familiare... Sono un po' a corto di conoscenze. E ho postato tutto il codice semplicemente perché non so quale parte non funziona. Non deve necessariamente essere quella originariamente postata. Grazie per la vostra partecipazione... :)
 
Potreste consigliarmi come aggiungere un indicatore in un Expert Advisor per prendere i dati dal CF Н4?
#property copyright "Krokus"
#property link      ""
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int       N=20; // период канала 
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit;
   double upPrice,downPrice;
//---- 
   if (counted_bars==0) limit=Bars-N;
   if (counted_bars>=0) limit=Bars-counted_bars;
   limit--;
   for(int i=limit;i>=0;i--)
     {
      upPrice=High[iHighest(Symbol(),0,MODE_HIGH,N,i)];//максимум за N баров 
      downPrice=Low[iLowest(Symbol(),0,MODE_LOW,N,i)]; //минимум за N баров 
      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
nel codice dell'esaminatore, non nella chiamata
 
Andrei01 >>:
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.

Crea un indicatore iCustom vuoto con una finestra separata e chiamalo dall'EA,

Se non avete una finestra, allora date un comando per disegnare, e non c'è bisogno di farlo.

L'unica cosa a cui prestare attenzione è la scala,

Il modo più semplice è quello di impostare due buffer sul colore di sfondo,

Se si imposta il massimo in una finestra e il minimo nell'altra, è conveniente e si può regolare usando i parametri esterni dell'indicatore.

 
sllawa3 >>:
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
     {
      int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL

      upPrice=iHigh( NULL, 240,  iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров 
      downPrice=iLow( NULL, 240,  iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров 

      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
per calcolare il TF di destra (H4) indipendentemente dal grafico, qualcosa come questo
 
questo non funzionerà... Il limite non è prescritto e come prescriverlo?
int    counted_bars=IndicatorCounted();
тоже в эксперте не потянет
 
Barile!!! Le posizioni aperte sono ognuna a strascico, mentre la chiusura su TP e SL "altrui"... Di conseguenza, è un casino... Come vincere?
Motivazione: