Comment optimiser correctement un conseiller - page 6

 

La première sur x est SL et celle sur y est TP.

Je pense que la gauche est la zone positive et la droite est une touche aléatoire... Eh bien SL sur euro quid ne peut pas être 190 ou plus pour M5 période ...

 
Loring писал (а) >>
et en conséquence.

Attention, ne vous laissez pas emporter par la martingale. Les EA étaient sur mesure, je les ai juste prévenus que je les mettrais sur le marché. Je n'aime pas cette technologie. C'est très risqué. Vous pouvez l'utiliser lorsque la probabilité d'un bon résultat est assez élevée. La seule chose qui reste à faire est de créer un tel mécanisme.

 

Mais un petit test est possible .... Le résultat, d'ailleurs, est proche de mon algorithme. Pour ne pas m'arracher les cheveux... Mais je veux faire connaissance.

 
Ouais, eh bien... Comme Zverev avait l'habitude de dire, "L'étoile est sous le choc"... L'algorithme se comporte étrangement, ou comme il aime être... C'est à ce moment-là que vous activez le réinvestissement.
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

Et comme tout a bien commencé...

 

Mais si le drawdown est > 50% ... Je ne sais pas qui prendrait le risque d'investir. On dirait qu'on aurait dû l'utiliser tel quel. Encore un autre exemple où le nouveau est l'ennemi du meilleur...

 

Après s'être tapé la tête (obstinément) contre la table, la fonction de calcul de la taille du lot prend la forme suivante

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); 
}

où MaximumRisk - partie du capital (calculée comme 1/MaximumRisk) qui peut être utilisée lors de l'ouverture d'une position.

Il n'est plus nécessaire de diviser et de multiplier par étape, car cette fonction ne rejette pas les parties fractionnaires, mais les arrondit selon les règles mathématiques. Maintenant, le lot est calculé avec la valeur de la marge, ce qui diminue le risque. La ligne "lot=MathMax(MathMin(lot,maxlot),minlot) ;" tentera de toute façon d'ouvrir une position de la taille minimale du lot (généralement 0,1), ce qui augmentera le risque de l'opération. Vous voudrez peut-être le désactiver complètement. Là encore, elle n'apparaîtra qu'en cas de dépôt insuffisant.

Une fois de plus, je tiens à remercier Viktor pour le code source fourni...

 
Loring писал (а) >>

Après s'être tapé la tête (obstinément) contre la table, la fonction de calcul de la taille du lot prend la forme suivante

Où MaximumRisk - partie des fonds propres (calculée comme 1/MaximumRisk) qui peut être utilisée pour ouvrir une position.

Il n'est pas nécessaire de diviser ou de multiplier par étape, car cette fonction ne coupe pas les parties fractionnaires, mais les arrondit selon les règles mathématiques.

N'oubliez pas que toutes les sociétés de courtage n'ont pas un incrément de lot de 0,1, il existe d'autres variantes.

 
Je me sens un peu effrayé... Ça semble correct, mais quelque chose ne va pas. Puis vraiment /MaximumRisk/step,0)*step... J'ai oublié que dans certaines sociétés de courtage, le pas peut être de 0,001. C'est bien d'avoir quelqu'un pour corriger...
 

Alors ça doit être comme ça... (je ne suis pas sûr du "0" dans la fonction d'arrondi).

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); 
}
 

Je ne comprends pas pourquoi l'ouverture du poste a été placée dans une fonction séparée. Une commande peut être exécutée localement... Ou c'est un morceau de quelque chose de plus grand... ТР et SL ne sont pas transmis dans l'ordre dans lequel ils sont dans OrderSend... Dieu merci, ils sont reçus comme ils sont émis. Ce n'est certainement pas un gros problème, mais .....

Raison: