Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
la thèse : mouvement=vie, repos=mort. Qu'est-ce que ça dit dans le journal ? C'est en bas à droite, deux onglets.
si j'en avais un - je le vérifierais et le réparerais ...
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégie
Questions des débutants MQL4 MT4 MetaTrader 4
Ilya Prozumentov, 2017.06.11 13:53
Il existe un modèle de classe pour travailler avec un tableau.Pour cette classe modèle, nous devons implémenter le tri, étant donné que le tableau peut stocker des types de données complexes. Par exemple :
ArrayList<PP*> *dde; // PP - класс
Je peux écrire des fonctions différentes pour les types simples et complexes, mais le compilateur ne comprend pas que les fonctions sont rigidement délimitées par le type de données et continue à jurer :
'<' - opération illégale utiliser ArrayList.mqh
J'ai donc décidé d'intégrer l'interface :
Toutes les parties de la construction se compilent. Mais si vous essayez de le déclarer :
ArrayList<PP*> *dde; // PP - класс
puis, lors de la compilation du fichier, voici les erreurs :QuickSorts' - incompatibilité de modèle varQSort.mqh /*erreur 1*/
'=' - incompatibilité de type ArrayList.mqh /*erreur 2*/
P.S.Que dois-je corriger dans le code pour éliminer cette incompatibilité de type ? Je ne comprends pas pourquoi cela s'est produit en premier lieu.
'<' - opération illégale utiliser varQSort.mqh
me hante aussi dans cette construction. C'est justement cette erreur dont je voulais me débarrasser. Mais je comprends cette erreur, et je ne comprends pas ces deux-là.
J'ai besoin, par exemple le lundi, si je dois ouvrir 2 ou 3 transactions, la fonction compare le temps et envoie le tuyau, mais j'ai un temps comparé jusqu'à présent.
En effet, lorsque vous appuyez sur le bouton "Télécharger", 6 000 000 de citations seront téléchargées. Tout le monde n'a pas envie de remplir le disque dur de données de citations, d'attendre longtemps qu'elles soient téléchargées, puis de supprimer les données inutiles de la table des citations.
Bonjour, ma chère... Pouvez-vous me dire pourquoi le code de trailing stop spécifié pour les ordres BUY fonctionne correctement ...
... ... mais le même pour les ordres de VENTE ne fixe pas de SL...
... La raison est probablement dans la condition(Ask+8*D*Point)<OrderStopLoss(), si nous la supprimons, SL sera mis, mais Trailing Stop fonctionne incorrectement sans la condition spécifiée ...
Pour les ordres d'achat , lacondition(Bid-8*D*Point)>OrderStopLoss(), siOrderStopLoss()==0, est acceptéecorrectement (i.e. une certaine valeur > 0) ...
... Maisla condition(Ask+8*D*Point)<OrderStopLoss(),OrderStopLoss()==0 n'est pascorrecte (i.e. une certainevaleur est< 0
) ...Veuillez m'indiquer comment formuler correctement dans le code la condition requise(Ask+8*D*Point)<OrderStopLoss()pour un fonctionnement correct duTrailing Stop avec les ordresSELL.
Je remercie d'avance tous ceux qui ont répondu
.Bonjour : Il existe une fonction où l'indicateur lit le fichier d'historique des tics. Mais il n'est lu qu'une seule fois, lorsque l'indicateur est chargé ou mis à jour. Comment puis-je faire en sorte qu'il soit lu à chaque fois que le premier tick de la barre zéro apparaît ?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
Bonjour, ma chère... Pouvez-vous me dire pourquoi le code de trailing stop spécifié pour les ordres BUY fonctionne correctement ...
... ... mais le même pour les ordres de VENTE ne fixe pas de SL...
... La raison est probablement dans la condition(Ask+8*D*Point)<OrderStopLoss(), si nous la supprimons, SL sera mis, mais Trailing Stop fonctionne incorrectement sans la condition spécifiée ...
Pour les ordresBUY , lacondition(Bid-8*D*Point)>OrderStopLoss(), lorsqueOrderStopLoss()==0 est prisecorrectement (c'est-à-dire une valeur > 0) ...
... Maisla condition(Ask+8*D*Point)<OrderStopLoss(), lorsqueOrderStopLoss()==0 n' est pas considérée commecorrecte (c'est-à-dire qu'une certaine valeur est< 0
) ...Veuillez m'indiquer comment formuler correctement dans le code la condition requise(Ask+8*D*Point)<OrderStopLoss()pour un fonctionnement correct duTrailing Stop avec les ordresSELL.
Je remercie d'avance tous ceux qui ont répondu
.Bonjour à tous ... quelque chose de très faible activité dans cette branche du forum ... le problème est résolu de cette façon ...
... C'est un peu long, mais ça marche... Qui sait comment l'écrire plus court, pouvez-vous le raccourcir, je vous en serais reconnaissant... le reste d'entre nous peut l'utiliser tel quel.
entrer la fonction
OrderCloseByTicket (542534564)
Fermer l'ordre par ticket avec le lot complet.
afin que vous n'ayez pas à spécifier les lots, le prix, le slippage.
similaire à cliquer une croix sur l'ordre dans le terminal.
entrer la fonction
OrderCloseByPos (0)
fermer la commande par position.
et alors il n'y aura plus besoin de prescrire ces constructions encombrantes.
Bonjour ! Les deux nombres moins q et w sont comparés de manière incorrecte, alors qu'ils sont égaux, l'opérateur if pense que l'un est plus grand que l'autre.Quelle est l'erreur ? Lorsque q = -0.0002 et que w est également -0.0002, res12=faux, pourquoi ?