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

 
sergeev писал(а) >>

renderlo un Expert invece di uno script e controllare il tempo di esecuzione del codice della funzione script nell'Expert. È arrivato il momento di eseguire il codice dello script.

Ho capito da questa frase che i vostri terminali sono chiusi. Vi sto rispondendo - lo script non può eseguire il terminale stesso.

Come lo scrivi tu, è così che viene inteso. Se non è questo che intendi, allora spiegati meglio.

Che valore ha l'idea? Se ne avessi avuto così tanto bisogno, non l'avresti fatta mettere in piedi da un proger molto tempo fa... è per te personalmente.

1. Copia il contenuto dello script.

2. Creare un nuovo EA usando MetaEditor

3. Inserire il codice dello script

4. Come aggiungere la funzione di lavoro per tempo e dove inserirla (non sono un programmatore)

Ho bisogno della funzione tempo di lavoro da 9-00 a 9-01

Il codice dello script da modificare: (Grazie in anticipo a tutti coloro che aiuteranno)

#proprietà copyright "Kim Igor V. aka KimIV"
#proprietà link "https://www.mql5.com/go?link=http://www.kimiv.ru/"
#proprietà show_inputs

#importare "kernel32.dll"
int GetUserDefaultLCID();
int GetLocaleInfoA(
int Locale, // identificatore di locale
int LCType, // tipo di informazione
stringa lpLCData, // indirizzo del buffer per le informazioni
int cchData // dimensione del buffer
);
#importare

//+------ Parametri esterni dello script -------------------------------------------+
extern bool bCommission = False; //distribuire le commissioni
extern bool bSwap = True; // Scarica gli swap
extern bool bComment = True; // Scarica i commenti
extern bool bMagic = True; // Scarica MagicNumber

// Costanti LCTYPE
#define LOCALE_SDECIMAL 0x000E // Caratteri usati per il separatore decimale.

//+----------------------------------------------------------------------------+
//| funzione di avvio del programma script |
//+----------------------------------------------------------------------------+
void start() {
int dg, i, k=OrdersHistoryTotal();
string FileName=DoubleToStr(AccountNumber(), 0)+".csv"; st;

FileDelete(FileName);
st="Biglietto;Ora di apertura;Tipo;Lotti;Articolo;Prezzo;SL;TP;Ora di chiusura;Prezzo";
se (bCommissione) st=st+";Commissione";
if (bSwap) st=st+";Swap";
st=st+";Profit"; if (bSwap) st=st+";Profit;
if (bMagic) st=st+";Magic";
if (bComment) st=st+";Comment";
WritingLineInFile(FileName, st);
per (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
se (OrderType()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS);
st= DoubleToStr(OrderTicket(), 0)+";";
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+GetNameOP(OrderType())+";";
st=st+DoubleToStrLocale(OrderLots(), 2)+";";
st=st+OrderSymbol()+";";
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+";";
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+";";
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+";";
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+";";
if (bCommission) st=st+DoubleToStrLocale(OrderCommission(), 2)+";";
if (bSwap) st=st+DoubleToStrLocale(OrderSwap(), 2)+";";
st=st+DoubleToStrLocale(OrderProfit(), 2)+";";
if (bMagic) st=st+DoubleToStr(OrderMagicNumber(), 0)+";";
if (bComment) st=st+OrderComment()+";";
WritingLineInFile(FileName, st);
}
Comment("Leggere: ",i+1," da ",k);
}
}
Comment("File scritto: ",FileName);
}

//+----------------------------------------------------------------------------+
//| Converte un valore numerico in una stringa con il sistema |
//| separatore tra parte intera e parte frazionaria.
//| Parametri: |
//| v - numero di tipo double |
//| d - numero di cifre dopo il punto decimale |
//+----------------------------------------------------------------------------+
stringa DoubleToStrLocale(double v, int d) {
se (d<0) d=0;
se (d>8) d=8;

stringa se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
se (se!=".") st=StrTran(st, ".", se);

ritorno(st);
}

//+----------------------------------------------------------------------------+
//| restituisce il nome dell'operazione commerciale
//| Parametri: |
//| op - identificatore dell'operazione commerciale |
//+----------------------------------------------------------------------------+
stringa GetNameOP(int op) {
interruttore (op) {
caso OP_BUY : ritorno("Compra");
caso OP_SELL : return("Sell");
caso OP_BUYLIMIT : return("Buy Limit");
caso OP_SELLLIMIT : return("Sell Limit");
caso OP_BUYSTOP : return("Buy Stop");
caso OP_SELLSTOP : return("Sell Stop");
default: return("Operazione sconosciuta");
}
}

//+----------------------------------------------------------------------------+
//| Restituzione delle impostazioni regionali dell'utente.
//| Parametri: |
//| LCType - tipo di impostazione regionale (costante LCTYPE) |
//+----------------------------------------------------------------------------+
stringa GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID();
stringa str=" ";

GetLocaleInfoA(loc, LCType, str, 64);

ritorno(str);
}

//+----------------------------------------------------------------------------+
//| sostituire la sottostringa |
//| Parametri: |
//| str - stringa di testo, in cui viene fatta la sostituzione |
//| strfrom - sottostringa da sostituire
//| strto - sostituendo la sottostringa |
//+----------------------------------------------------------------------------+
stringa StrTran(stringa str, stringa strfrom, stringa strto) {
int n;
stringa outstr="", tempstr;

per (n=0; n<StringLen(str); n++) {
tempstr=StringSubstr(str, n, StringLen(strfrom));
se (tempstr==strfrom) {
outstr=outstr+strto;
n=n+StringLen(strfrom)-1;
} else outstr=outstr+StringSubstr(str, n, 1);
}
return(outstr);
}

//+----------------------------------------------------------------------------+
//| Scrivere la stringa nel file.
//| Parametri: |
//| FileName - nome del file
//| testo - stringa ||
//+----------------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text) {
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");

se (file_handle>0) {
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, testo);
FileClose(file_handle);
}
}
//+----------------------------------------------------------------------------+

 
Ciao, potresti dirmi in quale cartella mettere i font in MT4?
 
%windir% - fonts
 

per baltik


string NeedTime="9:00";
datetime time0=0;

//----------------------------------------------------------------------------
void start() 
{

 if ( time0>=StrToTime( NeedTime)) return; // если сегодня уже выполняли код
 if (TimeCurrent()<=StrToTime( NeedTime)) return; // если требуемое время ещё не наступио
 time0=TimeCurrent(); // иначе запоминаем время

// и делаем то что надо

// бла бла бла остальной код

Questo thread è per le persone che stanno imparando a programmare, non per le persone che ti chiedono di scrivere per loro.

 
sergeev >>:
%windir% \ fonts

Può essere semplice, non lo capisco... che tipo di cartella è? o cosa è comunque?

 
chepikds >>:

можно как-то попроще, я ничего не понял... это что за папка? или что это вообще такое?


In realtà, anche la domanda "quale cartella mettere i font in MT4" non è molto chiara. Si prega di spiegare in russo. :)

Il sistema operativo non memorizza alcun font nel terminale.

 
sergeev >>:

вообще-то вопрос "в какую папку вставить шрифты в МТ4" тоже не очень понятен.

в терминале никакие шрифты не хранятся. шрифтами занимается операционная система.

OK, proverò a metterlo nel sistema operativo...

 
Grazie sergeev ,funziona.
 
sergeev писал(а) >>

per baltik

Questo thread è per le persone che stanno imparando a programmare, non per le persone che ti chiedono di scriverlo per loro.

Grazie

Imparerò :)

 

ciao. ho scritto un semplice EA, usando gli esempi del tutorial. l'EA dovrebbe segnalare quando il prezzo si muove fuori dal range, che consiste di due MA. cioè se una barra si è aperta nel range e ha iniziato a salire e il suo prezzo attuale si è spostato fuori da esso, allora suona. lo stesso vale per il down. ma il problema è che non riesco a capire se faccio questo

if (Bid > MA1 || Bid < MA2) // Controllo del passaggio di range
{
Alert("Il prezzo è fuori dal range.");// Messaggio
}

Se il prezzo è al di sopra del range allora l'Expert Advisor mi avviserà, ma se faccio questo:

if (Bid > MA1 && Fact_Up==true) // Controlla il passaggio al rialzo
{
Fact_Dn=true; // Segnala il prezzo sopra MA1
Fact_Up=false; // Non segnalare il prezzo sotto MA1
Alert("Price is above range.");// Messaggio
}
//--------------------------------------------------------------------
if (Bid < MA2 && Fact_Dn==true) // Controlla il passaggio al ribasso
{
Fact_Up=true; // Segnala prezzo sotto MA2
Fact_Dn=false; // Non segnala prezzo sopra MA2
Alert("Prezzo sotto range.");// Messaggio
}

Se viene mostrato questo messaggio, allora non è affatto chiaro, quando dà un segnale - a volte dà un segnale, a volte no.

Non riesco a capire cosa sia il "Fact_Up==true" e perché sia necessario.

Motivazione: