Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1300

 
ANDREY:

Il est possible de fermer l'écart, c'est-à-dire d'ajouter une certaine valeur au cours acheteur. Mais comment fixer la taille de cet écart ? En ticks réels, le spread est flottant, c'est-à-dire que la valeur du spread est inconnue. Et il ne peut donc pas être fermé sur des ticks réels ..... selon mon opinion professionnelle, mais de manière purement logique. Il n'est probablement possible de coudre ce que l'on sait EXACTEMENT QUE POUR TOUTEFOIS.

Metatrader vous surprend-il ? Je ne suis pas... plus maintenant... S'il vous plaît....

<DATE> <HEURE> <OUVERT> <HAUT> <BAS><CLOSE> <VOLUME> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

 
Александр:

Metatrader vous surprend-il ? Je ne suis pas... plus maintenant... S'il vous plaît....

<DATE> <HEURE> <OUVERT> <HAUT> <BAS><CLOSE> <VOLUME> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

C'est-à-dire que l'écart est soit O , soit simplement la valeur de l'écart n'est pas affichée. Et ces données par MT4 , ou par MT5. Et de quel élément de menu proviennent ces données ?

S'il existe une valeur de spread mais que, pour une raison quelconque, elle n'est pas affichée, alors ce problème MT est très similaire à mon problème MT5. Alpari dit que la profondeur de l'historique n'a aucun effet sur la qualité des cotations en tick et pense que mon problème est caché dans le terminal lui-même et conseille de contacter les développeurs. Ainsi, comme dans votre exemple, j'ai la même valeur d'historique de qualité pour 2010, mais pour une raison quelconque, elle n' est pas affichée dans MT5. S'il n'y avait pas de ticks ou si leur nombre était trop faible (disons 1000), la qualité de l'historique ne serait pas affichée.
 

Bonjour.
S'il vous plaît, prêtez attention à un débutant.
Pas d'erreur ou d'avertissement lors de la compilation, mais l'EA n'ouvre pas les ordres dans le testeur... Et il n'y a aucune erreur dans le journal...

Quelle peut en être la raison ? J'ai déjà essayé différentes choses...

extern double Lot=0.1;            
extern int Slippage = 30;
extern int TakeProfit = 30;
extern int StopLoss   = 30;
extern int MA_Smoth_S = 60;
extern int MA_Smoth_B = 12;
extern int MA_Simpl_S = 3;
extern int MA_Simpl_B = 1;

int start()
         {
          int MA_Simpl_S_Op,      
              MA_Simpl_B_Op;      
                 
          MA_Smoth_S = iMA(NULL,0,MA_Smoth_S,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Smoth_B = iMA(NULL,0,MA_Smoth_B,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Simpl_S = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_B = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_S_Op = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,2);
          MA_Simpl_B_Op = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,2);
          
          //Условие для Buy______________________
          while(MA_Smoth_B > MA_Smoth_S)
               {
                if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B > MA_Simpl_S)
                  {
                   bool check = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask, Digits),Slippage,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Buy",0,0,clrGreen);
                   return(0);
                  }
               }
               
          //Условия для Sell_____________________
          while(MA_Smoth_S > MA_Smoth_B)
               {
                if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
                  {
                   check = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid, Digits),Slippage,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sell",0,0,clrRed);
                   return(0);
                  }   
               }     
          return(0);
         }
 
IndependentMK:

Bonjour.
S'il vous plaît, prêtez attention à un débutant.
Pas d'erreur ou d'avertissement lors de la compilation, mais l'EA n'ouvre pas les ordres dans le testeur... Et il n'y a aucune erreur dans le journal...

Quelle peut en être la raison ? J'ai déjà essayé différentes choses...

int X = 5;
if(X > 10 && X < 3)  int ticket = OrderSend(Symbol(), OP_SELL, Доп_Лот, NormalizeDouble(Bid, Digits), 3,  NormalizeDouble(Ask + StopLoss_S * Point, Digits),  NormalizeDouble(Bid - TakeProfit_S * Point, Digits), "", MAGIC_S, 0, CLR_NONE);
 

Qu'en pensez-vous ? Le testeur ouvrira-t-il le poste? Non. Parce que X n'est pas dans la gamme de test. C'est pour ça. Insérez les empreintes dans le code et analysez le journal du testeur.

int start()
  {
   int MA_Simpl_S_Op,
       MA_Simpl_B_Op;
   MA_Smoth_S = iMA(NULL, 0, MA_Smoth_S, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Smoth_B = iMA(NULL, 0, MA_Smoth_B, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Simpl_S = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_B = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_S_Op = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 2);
   MA_Simpl_B_Op = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 2);
//Условие для Buy______________________
   Print(" MA_Smoth_B = ", MA_Smoth_B, " MA_Smoth_B = ", MA_Smoth_B);
   while(MA_Smoth_B > MA_Smoth_S)
     {
      Print(" MA_Simpl_B_Op = ", MA_Simpl_B_Op, " MA_Simpl_S_Op = ", MA_Simpl_S_Op);
      if(MA_Simpl_B_Op < MA_Simpl_S_Op)
        {
         Print(" MA_Simpl_B = ", MA_Simpl_B, " MA_Simpl_S = ", MA_Simpl_S);
         if(MA_Simpl_B > MA_Simpl_S)
           {
            bool check = OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), Slippage, Bid - StopLoss * Point, Ask + TakeProfit * Point, "Buy", 0, 0, clrGreen);
            return(0);
           }
        }
     }
//Условия для Sell_____________________
   while(MA_Smoth_S > MA_Smoth_B)
     {
      if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
        {
         bool check = OrderSend(Symbol(), OP_SELL, Lot, NormalizeDouble(Bid, Digits), Slippage, Ask + StopLoss * Point, Bid - TakeProfit * Point, "Sell", 0, 0, clrRed);
         return(0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY:

C'est-à-dire que l'écart est soit O , soit simplement la valeur de l'écart n'est pas affichée. Ces données proviennent-elles de MT4 ou MT5 ? Et de quel menu proviennent ces données ?

Si la valeur de l'écart est présente, mais que, pour une raison quelconque, elle ne s'affiche pas, alors ce problème MT est très similaire à mon problème MT5. Alpari dit que la profondeur de l'historique n'a aucun effet sur la qualité des cotations en tick et pense que mon problème est caché dans le terminal lui-même, et conseille de contacter les développeurs. Ainsi, comme dans votre exemple, j'ai la même valeur de qualité historique pour 2010, mais pour une raison quelconque, elle n' est pas affichée dans MT5. S'il n'y avait pas de ticks du tout, ou si leur nombre était trop faible (disons 1000), la qualité de l'historique ne serait pas affichée.

Voici la cotation MT4

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

Voici MT5
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

Sentez la différence... J'ai arrêté de travailler avec les tiques il y a longtemps. Et comme c'est le cas, je n'ai pas assez d'énergie pour me battre contre les différents "bricoleurs".

Mettez le même Expert Advisor dans une autre société de courtage. Quel problème avec les tiques là-bas. Même sur Open, même ouverture et fermeture en même temps. La différence est LES DEUX. Peut-être que quelqu'un a résolu ce problème (tics, etc.), et je ne sais pas comment m'y prendre. Et dans MT5 il y a aussi un spread...

 
Александр:

Voici les cotations MT4

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

Voici le MT5
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

Sentez la différence... J'ai arrêté de travailler avec les tiques il y a longtemps. Et comme c'est le cas, je n'ai pas assez d'énergie pour me battre contre les différents "bricoleurs".

Mettez le même Expert Advisor dans une autre société de courtage. Quel problème avec les tiques là-bas. Même sur Open, même ouverture et fermeture en même temps. La différence est LES DEUX. Peut-être que quelqu'un a résolu ce problème (tics, etc.), et je ne sais pas comment m'y prendre. Et dans MT5 il y a aussi un spread...

Bien sûr, vous êtes plus avancé dans toutes ces questions que moi ...... c'est pourquoi je ne comprends pas votre processus de pensée à certains endroits...
Quand j'ai essayé d'utiliser Mt4 par exemple mes codes montraient de très bons résultats avec les codes Tiki ... Puis j'ai appris que mon très bon résultat n'est pas complètement exact, parce que MT4 ne prend pas en compte le spread réel et que le spread réel de MT4 dans Alpari ne peut pas être pris en compte car il flotte (surtout la nuit). Et mon Expert Advisor a montré les meilleurs résultats juste de 22 à 1.

Sur ce forum, on m'a dit que lors des tests, le spread réel (qui est exactement flottant) n'est pris en compte que sur MT5. Cela m'a conduit à étudier MT5 et à exécuter mon code sur celui-ci sur le modèle - chaque tick basé sur des ticks réels. Après cela, j'ai été dégrisé, car mon code n'a pas donné d'aussi bons résultats que sur MT4. D'autre part, certains points positifs du code, qui étaient sur MT4, ont été confirmés sur MT5 également. Et j'étais heureux de pouvoir améliorer mon code, en étant certain que les résultats des tests étaient proches des échanges réels.

Pour cette raison, je ne comprends pas bien (peut-être par manque de connaissances et d'expérience) votre attitude négative à l'égard des tests sur l' historique des tiques. Après tout, si vous ouvrez des transactions non pas par Сlose (comme vous l'avez fait), mais à n'importe quel prix qui est spécifié dans la demande d'ouverture d'un ordre (comme je le fais), quel est alors l'inconvénient de tester sur les ticks?
L'inconvénient éventuel peut être, comme il me semble, seulement un ensemble incomplet de ticks et leur omission dans les cotations chargées. Mais le nombre de ticks, comparé au nombre de bougies d'une minute, est énorme. Et je n'ai pas encore cherché à savoir si les ticks manquants (comme les chandeliers) pouvaient être détectés et ajoutés au fichier des ticks. C'est pourquoi je dois faire confiance à la promesse d'Alpari jusqu'à présent, qu'ils ont un historique COMPLET des tics depuis 2001.
Et je ne comprends toujours pas la différence, que je devrais sentir en regardant les chandeliers que vous avez apportés pour démontrer une certaine idée de la vôtre
.

Je ne veux pas tester mon EA avec un autre courtier, car si j'ose un jour trader en direct, ce sera avec Alpari. De plus, vous avez dit vous-même que ce courtier dispose des données tick les plus complètes et les plus fiables.

Je suis sûr que vous avez des informations précieuses pour moi, mais malheureusement, je ne suis pas en mesure de les tirer de vos paroles.

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: " OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме " Все тики ", и самое достоверное тестирование в режиме " Каждый тик на основе реальных тиков " с использованием записанных тиков из...
 
ANDREY:


Votre attitude négative à l'égard des tests sur l' historique des tiques. Après tout, si vous ouvrez des transactions non pas par Сlose (comme vous l'avez fait) mais par n'importe quel prix qui est spécifié dans la demande d'ouverture d'un ordre (comme je l'ai fait), alors quel est l'inconvénient de tester sur les ticks?

Et je ne comprends toujours pas quelle est la différence, que je devrais ressentir en regardant les paramètres des chandeliers, que vous avez apportés pour démontrer votre idée.

Je ne veux pas tester mon EA avec un autre courtier, car si j'ose un jour trader en direct, ce sera avec Alpari. De plus, vous avez dit vous-même que ce courtier dispose des données tick les plus complètes et les plus fiables.

Je suis sûr que vous avez des informations précieuses pour moi, que jusqu'à présent, malheureusement, je n'ai pas pu saisir à travers vos mots.

1. Attitude négative... Non, ce n'est pas négatif. C'est juste que vous essayez et attendez pendant des semaines pour que les tests soient terminés et ensuite il s'avère que les devis ne sont pas assez bons et cela affecte fortement les résultats. Toutes les sociétés de courtage FILTRENT les devis. Les filtres les déforment. J'ai pris le parti d'écrire une évaluation environnementale qui ne soit pas critique sur la qualité des citations.

2. La différence de cotation entre MT4 et MT5 est que j'ai commencé par dire que MT5 a un spread POUR CHAQUE TAUX. Pourquoi ça ? Je ne sais pas. Hors ligne, cet écart est maximal. Offline se promène. C'est-à-dire que nous devrions faire un système qui n'est pas critique. Voir le point 1 G).

C'est tout ce qu'il y a à faire. Aucun sous-texte.

 
Александр:

1. Une attitude négative... Non, ce n'est pas négatif. C'est juste que vous poussez, vous attendez pendant des semaines que les tests soient terminés, et puis il s'avère que les devis ne sont pas assez bons et cela a un impact ÉNORME sur les résultats. Tous les DC filtrent les devis. Les filtres les déforment. J'ai pris le parti d'écrire une évaluation environnementale qui ne soit pas critique sur la qualité des citations.

2. La différence de cotation entre MT4 et MT5 est que j'ai commencé par dire que MT5 a un spread POUR CHAQUE TAUX. Pourquoi ça ? Je ne sais pas. Hors ligne, cet écart est maximal. Offline se promène. C'est-à-dire que nous devrions faire un système qui n'est pas critique. Voir le point 1 G).

C'est tout ce qu'il y a à faire. Aucun sous-texte.

"....... et ensuite il s'avère que les devis ne sont pas assez bons et cela affecte fortement les résultats. Les filtres les déforment. ...."


Supposons qu'il y ait un tick de cotations réelles de 2008 pour une paire automatiquement téléchargée du serveur Alpari vers MT5 pour le test. Comment déterminez-vous que ces citations ne sont pas suffisantes ? En général, selon quels critères évaluez-vous la qualité des devis ? Quels sont les paramètres qui devraient avoir des cotes de qualité optimale ?
Comme le dit Alpari, les cotations ne sont pas modélisées ou générées, mais elles sont tirées de l'histoire enregistrée. Si je comprends bien, .... a apporté un autre tick n'importe quelle citation - Alpari tick avec cette citation enregistrée et enregistrée. Et ainsi de suite à chaque tic-tac. Ils disposent ainsi d'une énorme base de données de ticks avec les prix, qu'ils téléchargent sur MT5 pour les tester. Et seulement si une cotation nécessaire ou sa séquence est manquante pour une raison quelconque, alors seulement Alpari, au lieu de manquer les ticks réels avec les prix, ces ticks sont simulés selon un algorithme proche de l'apparence des ticks réels.

C'est pourquoi je ne comprends pas bien les plaintes qui peuvent être formulées au sujet de la qualité des citations. Comme alternative, je peux imaginer qu'un tick est venu et a amené le prix, par exemple, à 1.00061. Mais Alpari a attribué un prix différent à ce tick, par exemple, 1.00077. Ou bien ils peuvent associer à cette tique un écart différent de celui qui existait en réalité. Mais si c'est vraiment le cas, une personne non autorisée ne peut pas détecter cette altération, surtout sur un historique profond. Il est donc bien sûr possible de prétendre qu'Alpari a filtré cette coche avec la citation. Mais il me semble pratiquement impossible de le prouver. Parce que personne d'autre que le spécialiste Alpari en question ne sait quel était le prix primaire ou le spread du tick filtré. La seule variante possible est que ce spécialiste révèle ce secret à quelqu'un, et peut-être même qu'il le confirme par écrit. Mais, il me semble que cette information avec des preuves documentaires apparaîtrait immédiatement sur ce forum.


"... Tous les DCs sont des citations FILTRANT. Les filtres les déforment....."


Je l'ai lu à plusieurs reprises. Mais ce filtrage portait sur le commerce réel. Et il me semble qu'un tel filtrage est raisonnable pour les sociétés de courtage. Avec son aide, ils peuvent éviter de grosses pertes, si un grand nombre de positions avec un volume très important peuvent être clôturées au niveau du Take Profit, si la société de courtage n'est pas entrée sur le marché. Et à quoi sert la filtration lorsqu'une société de courtage fournit des devis pour les tests ?

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
 

Pouvez-vous me dire comment obtenir un ratio de x2 lors de la fermeture d'une position avec une perte ?

Maintenant j'ai 1,4,9,16 - et j'ai besoin de 2,4,8,16.

Qu'est-ce qu'il faut corriger dans le code ?

 int cn=0,c=0;
  datetime dt=0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType()<=1) {
     if((OrderSymbol()==mSymbol)&&(OrderMagicNumber()==Magic)) {
       double Profit=OrderProfit()+OrderCommission()+OrderSwap();
        if(Profit<0) {  
        c++;   
        cn=(int)MathPow(c,2); // что здесь исправить?
        } else break;     
 }}}
   Comment(cn);
 
Denis Pershin:

Pouvez-vous me dire comment obtenir un ratio de x2 lors de la fermeture d'une position avec une perte ?

Maintenant j'ai 1,4,9,16 - et j'ai besoin de 2,4,8,16.

Qu'est-ce qu'il faut corriger dans le code ?

Tout doit être réparé.

Votre code recherche la première commande de l'historique des commandes avec le symbole et le numéro magique spécifiés.

Ensuite, le nombre d'ordres non rentables est calculé et multiplié par 2.

recherchez sur le forum"fonctions utiles de la MMT" et faites quelque chose comme ceci

- trouver le billet de la dernière commande pour notre symbole et notre magik

- obtenir OrderProfit() et OrderLots() à partir du ticket trouvé et multiplier par votre coefficient de martingale, si nécessaire

ZS : il existe peut-être une solution toute prête

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...