Un bug dans la fonction OrderSend() ? - page 2

 
hoz:


A en juger par le journal. Mais si vous l'exécutez dans le testeur avec les mêmes paramètres, alors les pauses ne sont pas correctement réglées périodiquement, ce que j'ai déjà dit... C'est ce que j'ai écrit. J'ai lu le journal, tout est beau et clair... En regardant la capture d'écran... (Quand je regarde le graphique, jeremarque que l'entrée d'achat est plus basse que l'entrée d'achat... et ceci est contraire à la condition.

Mais il est également étrange que je n'aie pas remarqué ce phénomène sur le M5, MAIS que l'on ait remarqué que certaines entrées sont manquées.

Si nous regardons le dessin, nous verrons que le timon est à plat, alors que lors des renversements, nous ne pouvons pas l'attraper !
 
borilunad:

Victor, vous devez étudier les indicateurs et les méthodes pour les utiliser dans votre EA. Parce qu'il me semble que vous voulez quelque chose que vous ne savez pas comment exécuter.

Je les ai étudiés, n'est-ce pas ? Je veux simplement que le prix soit fixé plus bas (plus haut) que le graphique dessiné au prix d'ouverture ou de fermeture ou peu importe. Il n'y a aucune différence, car si vous prenez une barre d'indice 1, elle a déjà été formée et sa valeur ne change plus... Si l'indicateur ne se redessine pas, la façon dont il est dessiné n'a pas d'importance (bien que je comprenne comment il est calculé, car j'y ai prêté attention et c'est simple). Après tout, sa valeur sur les barres précédentes est déjà là, et vous pouvez l'obtenir, ce que j'ai fait.

borilunad:

Par ailleurs, vous ne devriez pas vous attacher à des conditions très strictes, car le prix ne se comportera certainement pas comme vous le souhaitez dans la moitié des cas. Vous devez donc passer en revue les options de ce que vous ferez dans le pire des cas.

Boris, que dans un marché réel, il peut y avoir différentes options et que les conditions ne seront pas toujours remplies... OUI ! Je comprends cela. Mais si les conditions ne sont pas remplies dans le testeur, ce n'est pas du tout bizarre. Dans le testeur, il n'y a PAS de requêtes, il n'y a PAS d'erreurs liées à l'activité du flux commercial, etc. Logiquement, tous les ordres devraient être parfaitement exécutés.

Dans le testeur, si tous les ordres fonctionnent parfaitement, je peux déjà penser au comportement idéal de la stratégie. Et ensuite prendre les décisions appropriées sur la base des statistiques.

Mais si même dans le testeur de stratégie, nous ne pouvons pas exécuter la stratégie, et qu'elle ment de manière flagrante à chaque étape, alors quoi ? S'enfuir de cette plateforme et ne pas regarder en arrière ? Chercher d'autres moyens ?

Je veux vraiment écrire un bot sensible, j'ai mes propres stratégies, qui sont pleines de mes approches et observations. Quelque chose a déjà été écrit, quelque chose est testé dans la vie réelle, quelque chose a été exécuté dans le testeur, et tout fonctionne. Le plus souvent, j'ai écrit des EA sur la base des baguettes, mais les entrées n'étaient pas basées sur les baguettes.

J'ai décidé d'utiliser les lectures de mes baguettes comme entrée, et j'ai pu renaître. Je n'arrive pas à obtenir d'entrées stables, elles sont sautées, entrées à de mauvais prix quelque part. Je ne pense pas qu'il serait approprié de dire que je ne dois pas faire confiance aux indices, car l'ordinateur a une certaine série de valeurs, et elles doivent fonctionner correctement.

J'ai déjà tout justifié et, à propos, j'ai envoyé la question à sysop. Jusqu'à présent, je n'ai pas entendu de réponse intelligible...

borilunad:

Franchement, je ne comprends toujours pas pourquoi il est si important pour vous d'entrer dans cette barre et pas dans l'autre. À mon avis, l'essentiel est d'identifier et d'utiliser la tendance qui s'est amorcée dans le temps, et non un certain point d'entrée. Essayez et comparez différents Mashkeys et apprenez ensuite à les utiliser comme des filtres d'entrées indésirables et non comme des signaux d'entrée, qui échouent souvent, et les autres indicateurs ne sont pas meilleurs !

Boris, si vous voyez les choses sous cet angle, l'endroit où vous entrez n'a pas vraiment d'importance :) Il est possible de s'inscrire quelque part et de chercher des entrées et même pas spontanément. Ma réponse est simple ! Il y a certaines conditions. Si quelque chose ne s'est pas réalisé sur la bougie actuelle, alors laissez les autres négocier... J'attendrai... Je ne chasse pas la tendance, je la suis. Je ne vais même pas écrire un autre graal pour un certain morceau d'histoire.

Si nous pensons que les entrées selon la stratégie ne seront pas toujours observées même sur le TF H1, alors que dire des TF inférieurs ? Après tout, le H1 n'est pas une minute, ni un 5 minutes. En TF H1, le conseiller expert a beaucoup de temps pour "réfléchir", surtout dans le testeur ... Ce n'est donc pas la question.

 
borilunad:
Gardez à l'esprit que c'est seulement sur le plat que Mashka colle aux barres, et que vous ne pouvez pas l'attraper sur les écarts !

Cela n'a pas d'importance :) Mon entrée sera différente. Ce n'est qu'une petite astuce, que je dois maîtriser. Plus loin, cela deviendra plus compliqué.
 
hoz:

Pas grave :) Mon entrée sera différente. C'est un petit truc à maîtriser. Plus loin, cela deviendra plus compliqué.
Et le plus important est que vous ayez de la persistance, la vérité est que vous manquez probablement de patience et de flexibilité, mais avec le temps vous obtiendrez ce que vous voulez ! Bonne chance !
 
peut-être tester les prix d'ouverture, surtout sur les horaires...
 
YOUNGA:
peut-être tester sur les prix d'ouverture, surtout sur les ticks...
Bien sûr, c'est mieux pour les tiques ! L'image sera plus plausible.
 
borilunad:
Et surtout, vous avez de la persévérance, la vérité est, peut-être, pas assez de patience et de flexibilité, mais avec le temps vous atteindrez ce que vous vous êtes fixé ! Bonne chance !


Merci ! D'ailleurs, j'ai récemment entendu cela d'une connaissance... un courtier :) Il a dit que j'étais très têtu et trop sûr de moi. Je n'ai pas d'autre option, je dois juste finir ce que j'ai commencé, sinon rien ne se passera.

YOUNGA:
pouvez-vous tester les prix d'ouverture, surtout sur les hourlies...


On dirait que quelques pips supplémentaires sont "mangés" quelque part ou quelque chose comme ça. J'ai augmenté l'indentation à 15, tout a commencé à être placé là où il n'était pas placé. Avec moins d'indentation, pas partout...

Voilà ce que je pense. Je dois trouver un moyen de faire apparaître des points d'arrêt lors du test d'un conseiller expert, si certaines conditions sont remplies.. Je l'ai déjà fait quand un ordre est envoyé ou qu'une erreur se produit, c'est-à-dire qu'il n'est pas envoyé quelque part, mais quelle condition mettre pour "attraper" le moment où l'ordre n'est pas ouvert, là où je pensais qu'il était, ... c'est déjà intéressant. Bien sûr, nous pouvons le faire à temps, mais ce n'est pas la meilleure option.

 

static datetime lastBarTime = 0 ; // Dernière heure de calcul

Retirez cette ligne du début et ajoutez la déclaration correspondante à la section globale.

Ensuite, vous pouvez répéter la série d'interrupteurs TF, de préférence dans le même ordre que précédemment.

Oui, ajoutez aussi dans init : lastBarTime = 0 ;

 
bool OpenSell()
{
   int ticket = -1;
   double OOP = fastMa - SellHear * pt;               // Получаем значение цны открытия
   
   if ((Bid - ND(OOP)) >= g_stopLevel)                // Проверка цену открытия на стоплевел
   {
       if (ND(OOP) < Bid)           // Проверка что цена открытия ниже Bid, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket < 0)  <------ это как понимать? если ордер не установлен, то вернуть true, в функции bool OpenBuy() почему-то наиборот, где правильно????
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}
int GetStateMa(double fastMa, double slowMa)
{
   if (fastMa > slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_UP); <--здесь вверх  // ..машки направлены вниз <-- а здесь
   
   if (fastMa < slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_DOWN);  <---         // машки направлены вверх  <---
   if (fastMa = slowMa)
       return (MA_DIRECT_TO_NONE);              // Машки не имеют выраженного направления
}
и вообще весь код какой-то "Олбанский"
 
pako:
L'albanais n'est pas interdit :)