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

 
STARIJ:
scrivere uno script e dopo ogni dichiarazione visualizzare le informazioni + GetLastError() con Alert() - vedere lo script di esempio sopra
Come faccio se ho un errore nel mio codice? Alert() non mi aiuta se lo script non funziona!
 
Lowech:
Come posso farlo se ho un errore nel mio codice? Alert() non mi aiuta se lo script non funziona!

buttare via tutto tranne la prima riga dello script e aggiungere Alert. Poi aggiungerlo gradualmente - imparare a programmare e fare il debug

 
LRA:
È stato veloce. Come cercherete i bar? In un ciclo o usando la struttura temporale?

EUR USD

//+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//| если первая пятница месяца была бычьей, а             |
//| 2-й понедельник медвежий - открываем сделку на продажу|
//+-------------------------------------------------------+
#property strict
void OnStart()
{
  int День=Day(), ДеньН=DayOfWeek();
  Alert("----------------------");
  int ДеньНачалаМесяца = (ДеньН-День+36) % 7;

// Если день начала месяца = 6, то число первой пятницы равно 7. Иначе 6 - день начала месяца
  int ЧислоПервойПятницы = ДеньНачалаМесяца==6?7:6-ДеньНачалаМесяца;

// Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе 16 - день начала месяца
  int ЧислоВторогоПонедл = (ДеньНачалаМесяца<2?9:16)-ДеньНачалаМесяца;
  Alert("ЧислоПервойПятницы = ", ЧислоПервойПятницы, "  ЧислоВторогоПонедл = ", ЧислоВторогоПонедл);

  if(ЧислоВторогоПонедл>=День)
  {
    Alert("Надо подождать числа ", ЧислоВторогоПонедл+1);
    return;   // Отключил до числа, следующего за вторым понедельником
  }

  int Продавать=0;
  for(int Бар=0;;Бар++)  //  Ищем на D1 номера баров для заданных чисел месяца
  {
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоВторогоПонедл)
    {
      if(iClose(NULL,PERIOD_D1,Бар)<iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
      break;
    }
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоПервойПятницы)
      if(iClose(NULL,PERIOD_D1,Бар)>iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
  }
  if(Продавать==2) bool x=OrderSend(_Symbol, OP_SELL, 0.1, Bid, 7, 0, 0);
}
 
LRA:

eliminare tutto dallo script tranne la prima linea e aggiungere Alert. Poi aggiungerlo gradualmente - imparare a programmare e fare il debug

Non ha funzionato (ma grazie per il vostro aiuto).
 
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. Ho bisogno di aiuto, ho bisogno di chiudere un ordine di vendita e poi l'ordine successivo può essere solo di acquisto aperto, voglio usare la cronologia degli ordini per trovare l'ultimo ordine chiuso e conoscere il suo tipo, ma non posso farlo (chi sa cosa sto sbagliando, me lo dica) se non conosco la risposta, che mi aiuterebbe a far funzionare il codice, per favore non scrivere!
 
Lowech:
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. Ho bisogno di aiuto, ho bisogno di chiudere un ordine di vendita e poi l'ordine successivo può essere solo di acquisto aperto, voglio usare la cronologia degli ordini per trovare l'ultimo ordine chiuso e conoscere il suo tipo, ma non posso farlo (chi sa cosa sto sbagliando, me lo dica) se non conosco la risposta, che mi aiuterebbe a far funzionare il codice, per favore non scrivere!
Quando proviamo a tradurre - visualizza un messaggio di errore: '1' - nome atteso. Il nome della variabile è richiesto al posto del numero 1
 

Buona sera, qui sotto c'è il codice, ho scritto un contatore di ticks, la mia idea è che i ticks sono contati su ogni barra nel ciclo, su ogni nuova barra il contatore è azzerato, quando avvio l'indicatore dice nei commenti che sulla barra precedente 1 tick e il tick attuale inizia a contare da

Se provo a usare uno sprite magico diverso, non so perché ho provato a usarlo ma non so perché ho provato a usarlo. Forse ho scritto male?

#property indicator_chart_window
double old_price;
double count_plus=0,count_minus=0,sum=0,psum=0;
bool Fun_New_Bar=false;
datetime Prev_Time=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

  double price;
  int i=0;
  int limit; 
  double delta; 
limit=rates_total-prev_calculated;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>=0; i--)  
{
 if (Fun_New_Bar==false)                              
  {                                             
   
   if (Prev_Time==0) 
     {
        Prev_Time=time[i];
        Fun_New_Bar=false;
     }
   if(Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];
      psum=sum;
      count_plus=0;
      count_minus=0;
      sum=0;                         
      Fun_New_Bar=false;                            
     }
    } 
  if(old_price==0) old_price=close[i];
   
    price = close[i];
    delta = price - old_price;
     
     //-- считаем "верхние" тики 
    if(delta>=0) {
      count_plus++;
               }
      
     //-- считаем "нижние" тики
    if(delta<0) {
      count_minus++;
        }
    sum=count_minus+count_plus;   
        //----
    old_price=price;
    
  Comment(StringFormat("Выводим цены\ncount_minus = %G\ncount_plus = %G\nsum = %G\npsum = %G",count_minus,count_plus,sum,psum));
}

   return(rates_total);
  }
 
PokrovMT5:

Buona sera, qui sotto c'è il codice, ho scritto un contatore di ticks, la mia idea è che i ticks sono contati su ogni barra nel ciclo, su ogni nuova barra il contatore è azzerato, quando avvio l'indicatore dice nei commenti che sulla barra precedente 1 tick e il tick attuale inizia a contare da

Se provo a usare uno sprite magico diverso, non so perché ho provato a usarlo ma non so perché ho provato a usarlo. Forse ho scritto male?

Se ho capito bene il problema e la domanda, i tick non vengono salvati nella cronologia. Date un'occhiata al mio indicatore.

 
Alexey Viktorov:

Se ho capito bene il problema e la domanda, non salva i tick sulla storia. Vedere il mio indicatore.


Il link non funziona, dice nessuna pagina

 
PokrovMT5:

Buona sera, qui sotto c'è il codice, ho scritto un contatore di ticks, la mia idea è che i ticks sono contati su ogni barra nel ciclo, su ogni nuova barra il contatore è azzerato, quando avvio l'indicatore dice nei commenti che sulla barra precedente 1 tick e il tick attuale inizia a contare da

Se provo a usare uno sprite magico diverso, non so perché ho provato a usarlo ma non so perché ho provato a usarlo. Forse ho scritto male?

restituisce tassi_totale-1 o 0

Motivazione: