Cómo optimizar correctamente un asesor - página 6

 

El primero en x es SL y el de y es TP.

Creo que la izquierda es la zona positiva y la derecha es un golpe al azar... Bueno SL en euros quid no puede ser 190 o más para M5 período...

 
Loring писал (а) >>
y en consecuencia.

Cuidado, no te dejes llevar por la martingala. Los EAs fueron hechos a medida, sólo avisé que los pondría. No me gusta esta tecnología. Es muy arriesgado. Se puede utilizar cuando la probabilidad de un buen resultado es bastante alta. Lo único que queda por hacer es crear ese mecanismo.

 

Pero un poco de prueba es posible .... El resultado, por cierto, se acerca a mi algoritmo. Para no arrancarme los pelos... Pero quiero conocerlo.

 
Sí, bueno... Como decía Zverev, "la estrella está en shock"... El algoritmo se comporta de forma extraña, o como se quiera... Es entonces cuando se activa la reinversión.
Strategy Tester Report
VininE_Game_1
FxProfit-Demo (Build 217)
Символ    EURUSD (Euro vs US Dollar)
Период    5 Минут (M5) 2008.06.01 22:05 - 2008.06.27 21:55 (2008.06.01 - 2008.06.29)
Модель    Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры    Lots=0.1; MaximumRisk=6; cmd=0; TP=262; SL=18; MagicNumber=0; 

Баров в истории    6749    Смоделировано тиков    152889    Качество моделирования    90.00%
Ошибки рассогласования графиков    0                

Начальный депозит    1500.00                
Чистая прибыль    7908.10    Общая прибыль    11037.80    Общий убыток    -3129.70
Прибыльность    3.53    Матожидание выигрыша    790.81        
Абсолютная просадка    662.60    Максимальная просадка    4846.40 (54.75%)    Относительная просадка    54.75% (4846.40)

Всего сделок    10    Короткие позиции (% выигравших)    5 (20.00%)    Длинные позиции (% выигравших)    5 (40.00%)
    Прибыльные сделки (% от всех)    3 (30.00%)    Убыточные сделки (% от всех)    7 (70.00%)
Самая большая    прибыльная сделка    6359.60    убыточная сделка    -1280.00
Средняя    прибыльная сделка    3679.27    убыточная сделка    -447.10
Максимальное количество    непрерывных выигрышей (прибыль)    2 (4678.20)    непрерывных проигрышей (убыток)    4 (-612.60)
Максимальная    непрерывная прибыль (число выигрышей)    6359.60 (1)    непрерывный убыток (число проигрышей)    -1280.00 (1)
Средний    непрерывный выигрыш    2    непрерывный проигрыш    2

№    Время    Тип    Ордер    Объём    Цена    S / L    T / P    Прибыль    Баланс
1    2008.06.01 22:06    buy    1    0.90    1.5555    1.5535    1.5815    
2    2008.06.02 03:31    s/l    1    0.90    1.5535    1.5535    1.5815    -192.60    1307.40
3    2008.06.03 00:00    sell    2    0.80    1.5539    1.5559    1.5279    
4    2008.06.03 08:30    s/l    2    0.80    1.5559    1.5559    1.5279    -160.00    1147.40
5    2008.06.04 00:01    buy    3    0.70    1.5439    1.5419    1.5699    
6    2008.06.04 08:26    s/l    3    0.70    1.5419    1.5419    1.5699    -140.00    1007.40
7    2008.06.05 00:05    sell    4    0.60    1.5425    1.5445    1.5165    
8    2008.06.05 01:39    s/l    4    0.60    1.5445    1.5445    1.5165    -120.00    887.40
9    2008.06.06 00:00    buy    5    0.50    1.5584    1.5564    1.5844    
10    2008.06.09 09:39    t/p    5    0.50    1.5844    1.5564    1.5844    1293.00    2180.40
11    2008.06.10 00:00    sell    6    1.30    1.5640    1.5660    1.5380    
12    2008.06.12 14:34    t/p    6    1.30    1.5380    1.5660    1.5380    3385.20    5565.60
13    2008.06.13 00:00    buy    7    3.30    1.5454    1.5434    1.5714    
14    2008.06.13 02:20    s/l    7    3.30    1.5434    1.5434    1.5714    -660.00    4905.60
15    2008.06.15 22:10    sell    8    2.90    1.5417    1.5437    1.5157    
16    2008.06.16 10:47    s/l    8    2.90    1.5437    1.5437    1.5157    -577.10    4328.50
17    2008.06.17 00:02    buy    9    2.60    1.5470    1.5450    1.5730    
18    2008.06.26 13:44    t/p    9    2.60    1.5730    1.5450    1.5730    6359.60    10688.10
19    2008.06.27 00:00    sell    10    6.40    1.5751    1.5771    1.5491    
20    2008.06.27 10:39    s/l    10    6.40    1.5771    1.5771    1.5491    -1280.00    9408.10

Y lo bien que empezó todo...

 

Pero si la reducción es > 50% ... No sé quién se arriesgaría a invertir. Parece que deberíamos haberla utilizado tal cual. Otro ejemplo de que lo nuevo es enemigo de lo mejor...

 

Después de golpear la cabeza (obstinadamente) contra la mesa, la función de cálculo del tamaño del lote adopta la siguiente forma

double getLots() {
   if (MaximumRisk>0) 
      {
       double minlot = MarketInfo(Symbol(),MODE_MINLOT);
       double maxlot = MarketInfo(Symbol(),MODE_MAXLOT);       

       double lot = NormalizeDouble(AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MaximumRisk,1);
       lot=MathMax(MathMin(lot,maxlot),minlot);
      }
   else lot=Lots;
   return(lot); 
}

donde RiesgoMáximo - parte del capital (calculado como 1/RiesgoMáximo) que se puede utilizar al abrir una posición.

La necesidad de dividir y multiplicar por pasos ha desaparecido, porque esta función no descarta las partes fraccionarias, sino que las redondea según las reglas matemáticas. Ahora el lote se calcula con el valor del margen, lo que disminuye el riesgo. La línea "lot=MathMax(MathMin(lot,maxlot),minlot);" intentará abrir una posición del tamaño mínimo del lote (normalmente 0,1) de todas formas, lo que aumentará el riesgo de la operación. Tal vez sea mejor desactivarlo por completo. De nuevo, sólo aparecerá con una deposición insuficiente.

Una vez más quiero agradecer a Viktor por el código fuente proporcionado...

 
Loring писал (а) >>

Después de golpear la cabeza (obstinadamente) contra la mesa, la función de cálculo del tamaño del lote adopta la siguiente forma

Donde RiesgoMáximo - parte del capital (calculado como 1/RiesgoMáximo) que puede utilizarse para abrir una posición.

No es necesario dividir o multiplicar por pasos, porque esta función no corta las partes fraccionarias, sino que las redondea según las reglas matemáticas.

Recuerde que no todas las empresas de corretaje tienen un incremento de lote de 0,1, hay otras variantes.

 
Me siento un poco espeluznante... Parece correcto, pero algo está mal. Entonces realmente /RiesgoMáximo/paso,0)*paso... Se me olvidaba que en algunas empresas de corretaje el paso puede ser de 0,001. Es bueno tener a alguien que corrija...
 

Entonces debe ser así... (no estoy seguro del "0" en la función de redondeo)

double getLots() {
   if (MaximumRisk>0) 
      {
       double minlot = MarketInfo(Symbol(),MODE_MINLOT);
       double maxlot = MarketInfo(Symbol(),MODE_MAXLOT);       
       double step   = MarketInfo(Symbol(),MODE_LOTSTEP);       

       double lot = NormalizeDouble(AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MaximumRisk/step,0)*step;
       lot=MathMax(MathMin(lot,maxlot),minlot);
      }
   else lot=Lots;
   return(lot); 
}
 

No entiendo por qué la apertura de la posición se puso en una función separada. Un comando puede ser ejecutado localmente... O es un trozo de algo más grande... ТР y SL se transmiten no en la secuencia en la que están en OrderSend... Menos mal que se reciben como se transmiten. Ciertamente no es un gran problema, pero ....