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

 
Анатолий Железняк #:

Allora la domanda è: chi è questa persona ? È un suo amico? Presentatelo.

Te l'ho detto: a livello di utente!!!

Era a livello dell'utente.

expiration è il tempo di scadenza di un ordine in sospeso.

Ma non ti si addice.

Togliere un ordine "dalla cura di EA" è impossibile, perché la cura va al mago, e non si può cambiare.

Dobbiamo riscrivere l'EA con un diverso controllo dell'ordine

 
MakarFX #:

Questo era a livello di utente

tempo discadenza dell'ordine in sospeso.

Ma questo non funziona per voi.

Non puoi prendere un ordine "fuori dal controllo di EA", perché il controllo è basato su una procedura guidata, e non puoi cambiarlo.

Dobbiamo riscrivere l'EA con un altro controllo dell'ordine.

Vivi a lungo.

 
MakarFX #:

Questo era a livello di utente

tempo discadenza dell'ordine in sospeso.

Ma questo non funziona per voi.

Non puoi prendere un ordine "fuori dal controllo di EA", perché il controllo è basato su una procedura guidata, e non puoi cambiarlo.

Devi riscrivere l'EA con un controllo dell'ordine diverso...

Makar non ti strappare

 
Анатолий Железняк #:

Oh, mio Dio! Ho chiesto un livello utente e tu mi chiedi di passare attraverso tutto l'EA e di chiedere con tono da mentore: "Qual è il tuo?". Non voglio entrarci. Mi piace giocare, non capire l'interno dei giocattoli.

Se Magik non è 0, chiudete la posizione e rientrate.

 
MakarFX #:

Questo era a livello di utente

tempo discadenza dell'ordine in sospeso.

Ma questo non funziona per voi.

Non puoi prendere un ordine "fuori dal controllo di EA", perché il controllo è basato su una procedura guidata, e non puoi cambiarlo.

Dobbiamo riscrivere l'EA con un controllo d'ordine diverso

Si può partire sotto controllo anche con la stessa procedura guidata, la questione è di che tipo di ordine hai bisogno se lo vuoi, poi non puoi farlo se è specifico per la tua lista.

 
for (int i=0;i<OrdersTotal()-2;i++) последних 2 видеть не будет даже с тем же магиком только что ему нужно до путя так и не понятно 
 
Aleksandr Egorov #:
Gli serve come utente, senza aggiustare il codice
 
C'è un modo per impostare un tasto di scelta rapida per rendere attivo l'oggetto"casella di input" in modo che il testo possa essere digitato lì? Per esempio, la dimensione del lotto per un trade future.
 
MakarFX #:
Gli serve come utente, senza aggiustare il codice

allora non va bene per niente ))

 

Salve. Puoi darmi un suggerimento? MT5

Sto facendo: un indicatore che prende screenshot su un timer e li mette in cartelle (periodo simbolo).

L'algoritmo previsto: uno screenshot viene fatto all'inizializzazione. Poiché le operazioni sui file richiedono tempo, il timer sposta lo screenshot fatto per primo e ne fa uno nuovo.

Lo screenshot fatto durante l'inizializzazione viene spostato con successo dal timer.

Problema:
1 Il primo screenshot preso dal timer nella cartella non viene visualizzato immediatamente. Viene visualizzato SOLO quando si chiude il terminale o si riavvia l'indicatore.
2 screenshot, tranne il primo, non vengono spostati, errore 5019 (file inesistente), anche se vengono visualizzati nella cartella (tranne il primo fatto dal timer).


#property strict
#property indicator_chart_window
#property indicator_plots 0

enum ENUM_FULL_MANUAL { full, //весь график
            manual, //указанный
            };
input int timer=5; //время на шаг в секундах
input ENUM_FULL_MANUAL skr_mode=full; //размер скриншота   
input int width = 640; // ширина 
input int height = 320;// высота 
input string format = ".png";

ENUM_ALIGN_MODE align_mode=ALIGN_RIGHT; // тип выравнивания

string name_folder, name_file;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
Print("OnInit()");

ScreenShot();
         
name_folder=Symbol()+"  "+StringPeriod();
FolderCreate(name_folder);


EventSetTimer(timer);


return(INIT_SUCCEEDED);
}
//===================================================================
void OnDeinit(const int reason)
{
EventKillTimer();
Move() ; 
}
//+------------------------------------------------------------------+
//| 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[])
{
//---

//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   Print("OnTimer() ");
   Move() ; 
   ScreenShot();
}//+------------------------------------------------------------------+
bool Move(){
   string src_path; 
   string dst_path; 
   StringConcatenate(src_path,"","//",name_file); 
   StringConcatenate(dst_path,name_folder,"//",name_file); 
   ResetLastError();
   if(FileMove(src_path,0,dst_path,0)){
      Print("FileMove OK ");
      return true;
   }   
   else{
      string err_text="FileMove ERR: "+(string)GetLastError();
      if(GetLastError()==5019) err_text+=("  5019 name_file "+name_file);
      Print(err_text);
   }  
   return false;
}

bool ScreenShot(){   
   name_file=TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS)+format;
   StringReplace(name_file, ":", "-");
   if(skr_mode==full){
      if(ChartScreenShot(0, name_file, (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS, 0)
      , (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, 0), ALIGN_RIGHT)){
         Print("screen name_file ", name_file);
         return true;
      }
      else{
         Print("screen ERR: ", GetLastError());
      }   
   }   
   if(skr_mode==manual){
      if(ChartScreenShot(0, name_file, width, height, align_mode)){
         return true;
      }
   }      
   return false;  
}
string StringPeriod(){
   if(Period()==1) return "M1";
   if(Period()==2) return "M2";
   if(Period()==3) return "M3";
   if(Period()==4) return "M4";
   if(Period()==5) return "M5";
   if(Period()==6) return "M6";
   if(Period()==10) return "M10";
   if(Period()==12) return "M12";
   if(Period()==15) return "M15";
   if(Period()==20) return "M20";
   if(Period()==30) return "M30";
   if(Period()==16385) return "H1";
   if(Period()==16386) return "H2";
   if(Period()==16387) return "H3";
   if(Period()==16388) return "H4";
   if(Period()==16390) return "H6";
   if(Period()==16392) return "H8";
   if(Period()==16396) return "H12";
   if(Period()==16408) return "Daily";
   if(Period()==32769) return "Weekly";
   if(Period()==49153) return "Monthly";
   return "ERROR";
}