Il PositionID è memorizzato nel file tst. Forse ha senso convertire tst->Virtual, così si può lavorare con tst in stile MT4. Ecco un esempio di tale conversione.
È anche possibile estrarre la cronologia dei backtest dagli oggetti. La libreria è più facile da capire.
ZЫ Non sono iscritto a questo thread, quindi potrei non vederlo.
Торговые отчеты MetaTrader 5 довольно тяжелы для восприятия. По этой причине с определенного момента разработчики добавили в Терминал более понятный режим просмотра закрытых позиций. Однако, это не
Non ho tempo di scrivere codice. Tenendo conto dei suggerimenti dei membri del forum, per i quali sono un grande GRAZIE, abbiamo ottenuto questa versione dello script:
//+------------------------------------------------------------------+//| Lot_Size_Depending_On_Risk_And_SL.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputsinputuint Risk=6; // Размер риска (> 0, но не более 100 %)inputuint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double Lot_Size_Depending_On_Risk_And_SL()
{
//--- блок проверки входных параметров на корректностьif(Risk==0 || Risk>100 || Stop_Loss==0)
{
Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
return(0.0);
}
//--- блок определения размера лотаdouble trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
double lot=(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/(Stop_Loss*trading_account_currency);
//--- блок проверки размера лота на минимум и максимум от возможногоdouble min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot<min_volume)
lot=min_volume;
if(lot>max_volume)
lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделкиdouble step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(lot/step_volume);
if(MathAbs(ratio*step_volume-lot)>0.0000001)
lot=ratio*step_volume;
return(lot);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
}
//+------------------------------------------------------------------+
Strano. Ho impostato 5000 barre massime nel terminale in "Impostazioni -> Grafici". Ho ricaricato il terminale, e quando passo il mouse sulla scheda con il simbolo, mostra 5000 barre.
Molte divisioni senza controllare lo zero del divisore. Esplosivo.
Grazie, Artyom, per il suggerimento! Aggiungerò sicuramente il controllo.
Saluti, Vladimir.
Esplosivo.
Mi sembra giusto.
fxsaber se stai leggendo, per favore rispondi.
Il PositionID è memorizzato nel file tst. Forse ha senso convertire tst->Virtual, così si può lavorare con tst in stile MT4. Ecco un esempio di tale conversione.
È anche possibile estrarre la cronologia dei backtest dagli oggetti. La libreria è più facile da capire.
ZЫ Non sono iscritto a questo thread, quindi potrei non vederlo.
Assicuratevi di considerare il costo per zecca.
Buongiorno e buon umore a tutti!
Non ho tempo di scrivere codice. Tenendo conto dei suggerimenti dei membri del forum, per i quali sono un grande GRAZIE, abbiamo ottenuto questa versione dello script:
Saluti, Vladimir.
Buon pomeriggio!
Potreste suggerirmi come perfezionare il mio robot in modo che possa funzionare solo su un computer?
(per proteggerlo dalle copie)
Saluti, Alexander
Buon pomeriggio!
Potreste consigliarmi come perfezionare il mio robot in modo che possa funzionare solo su un computer?
(per evitare che venga copiato)
Saluti, Alexander
La variante più semplice.
Inserire due righe di codice nella funzione OnInit.
Al posto del numero di conto, specificare il conto della persona a cui si dà l'Expert Advisor, compilare e dare solo il file ex5.
L'opzione più semplice.
Inserite due righe di codice nella funzione OnInit.
Al posto del numero di conto, specificate il conto della persona a cui state dando l'Expert Advisor, compilate e fornite solo il file ex5.
Grazie mille!
L'opzione più semplice.
Inserite due righe di codice nella funzione OnInit.
Al posto del numero di conto, specificate il conto della persona a cui state dando l'Expert Advisor, compilate e fornite solo il file ex5.
il cliente accende il terminale e l'Expert Advisor si blocca :-))
perché ci sono situazioni in cui ACCOUNT_LOGIN=0
il cliente accende il terminale e l'Expert Advisor si blocca :-)
perché ci sono situazioni in cui ACCOUNT_LOGIN=0
Se hai bisogno di affidabilità e alta qualità, è per i freelance.
Strano. Ho impostato 5000 barre massime nel terminale in "Impostazioni -> Grafici". Ho ricaricato il terminale, e quando passo il mouse sulla scheda con il simbolo, mostra 5000 barre.
Ma questo codice:
visualizza informazioni su 6201 barre.
È corretto? Mi aspettavo che anche in rates_total fosse 5000.