[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 234

 
sergeev:

Je l'ai essayé. Il n'a pas gelé.


a donné l'erreur 129 sur OrderClose.

Mettez RefreshRates devant.

Fermé sans erreur


Oui, j'ai fait la même chose, mais parfois il s'arrête de fonctionner (et pas le terminal lui-même, mais l'EA).

 
doon:
Pouvez-vous expliquer pourquoi ce code se bloque parfois à un endroit et qu'il faut redémarrer le terminal pour le reprendre ?


On vous a posé directement la question suivante : "A quelle ligne se fige-t-elle ?

Votre code ouvre et ferme immédiatement le même ordre et est très bien documenté, il devrait donc être immédiatement visible dans Alerts quelle ligne le code a atteint. Ou est-ce juste une partie du code ?

 
Roger:


On vous a demandé très directement - Sur quelle ligne se fige-t-elle ?

Votre code ouvre et ferme immédiatement le même ordre et est très bien documenté, vous devriez donc être en mesure de voir immédiatement dans l'alerte quelle ligne le code a atteint. Ou est-ce juste une partie du code ?


Non, tout ça est codé. Et il s'arrête aux lignes d'ouverture et de fermeture des ordres (mais pas toujours).

 
Remplacez ask et bid dans le code par MarketInfo(Symbol(),MODE_ASK) et MarketInfo(Symbol(),MODE_BID), cela devrait fonctionner.
 

De ça :

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

Là-dessus :

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

Non, ça raccroche toujours.

Après 4 minutes de suspension, il s'agissait de l'erreur 128(le temps d'attente de la transaction a expiré).

Peut-être que cela aidera ?

 

Chers collègues, je suis encore un parfait "nigaud"en matière de programmation MQL, j'ai commencé à étudier ce sujet assez récemment. Mais j'ai déjà commencé à écrire mon premier conseiller expert, ou du moins j'ai essayé.

Sur la 182ème page de ce sujet, j'ai défini les critères de négociation de cet EA. Veuillez voir ce qu'il dit (dernier message de la page). Cela fait trois semaines que je me démène et je n'arrive toujours pas à écrire ici la partie du code responsable des critères de négociation. J'ai lu lechapitre du tutoriel consacré à ce sujet, mais il ne m'a pas aidé dans ce cas précis.

J'ai écrit des dizaines de variantes de cette partie du code au cours de mes batailles de programmation, mais aucune ne fonctionne correctement. Il est évident que je n'ai pas assez de connaissances, jene peux pas maîtriserMQL aussi rapidement .Quoi qu'il en soit, voici l'une des variantes du code qui fonctionne, du moins approximativement, comme je le souhaite.

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


Je sais que le code est tout croche et incliné, et qu'en général les positions des baies et sell sont mélangées. Mais c'est la seule variante du code, lorsque le Stochastique et l'Enveloppe négocient ensemble, sans s'ignorer. En même temps, les signaux paraboliques ne sont pas pris en compte dans le trading pour une raison quelconque. Quoi qu'il en soit, ne me grondez pas trop pour un tel "coup de pied au cul", je suis bien conscient que le code n'est pas correct.

S'il vous plaît aidez-moi, s'il vous plaît fixer le code de mon conseiller expert. J'ai du mal à le supporter. J'ai mis en œuvre des stratégies plus faciles (Mooving + Momentum ; Mooving +RSI), mais celle-ci fonctionne. Aidez-moi, s'il vous plaît. S'il vous plaît, réécrivez toutes les lignes incorrectes pour que mon EA trade selon ces règles, que j'ai décritesà la page 182. J'en ai vraiment besoin.

P.S.: Je ne peux pas écrire tout le code, car j'ai utilisé des modèles MQL prêts à l'emploi .

 
doon:

Non, ça raccroche toujours.

Après 4 minutes de suspension, il s'agissait de l'erreur 128(le temps d'attente de la transaction a expiré).

Peut-être que cela vous aidera ?


Bon sang, changez déjà le centre de négociation - il est clair sans aucun indice que si les ordres de négociation sur le même code passent normalement et puis se bloquent, cela signifie que le serveur est en train de mourir. La commande est partie et n'est pas revenue pendant 4 minutes. Allez-vous vraiment effectuer de véritables transactions sur ce serveur ? Croisez les doigts et changez plusieurs fois de maison de courtage. Quelqu'un vous a appris à utiliser un ordinateur ? Il ne s'agit pas d'une machine à écrire ou d'une console de jeu - il faut des connaissances. Il s'agit d'une étude et d'un travail minutieux. Si vous aviez une compréhension de base de la ligne de commande, de la façon d'ouvrir des fichiers et au moins une compréhension de base du fonctionnement d'un réseau informatique, vous poseriez des questions différentes et vous seriez heureux d'obtenir de l'aide. Il vous suffit maintenant d'envoyer un ping au serveur de votre société de courtage et de comparer le temps de réponse avec celui d'autres sociétés de courtage. Si vous y consacriez 30 minutes, vous comprendriez de quoi il s'agit. Si vous aviez essayé de décrire l'interaction entre le conseiller expert et le serveur, nous pourrions même estimer avec MQL4 la vitesse à laquelle le serveur de votre société de courtage exécute les ordres de transaction.

Il n'y a pas de mots. Comment pouvez-vous traiter avec autant de négligence le processus de votre propre travail ?

 

daytrader19:

Veuillez réécrire les mauvaises lignes afin que l'EA fonctionne selon les règles que j'ai décritesà la page 182.

Note.

1) La condition "ligne1[1]>ligne2[1]" n'est pas suffisante pour le signal "croisement de deux lignes". Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) Le parabolique ne doit pas être comparé à l'Open, mais au High et au Low, et notez que vous le calculez sur la barre zéro et prenez Open[1] de la première barre.

 
doon:

Non, ça raccroche toujours.

Après 4 minutes de suspension, il s'agissait de l'erreur 128(le temps d'attente de la transaction a expiré).

Peut-être que cela aidera ?


Cela peut aussi arriver avec un mauvais internet, par exemple en téléchargeant trop un torrent. Mais vous ne pourrez pas vérifier avant lundi.
Raison: