Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 68
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
Il est sans dimension tel quel, mais il est bidimensionnel, et vous pouvez mettre un nombre sans dimension d'éléments dans deux dimensions.
Que faites-vous de toute façon, avez-vous une idée de ce que devrait être le résultat du travail que vous faites ? Ou bien vous inventez la logique au fur et à mesure ?
Dans l'exemple actuel, je veux pouvoir placer un nombre infini d'ordres avec n'importe quel lot afin d'éviter de dépasser les limites spécifiées.
Bien sûr, nous connaissons les limites, mais j'aimerais le faire de cette façon.
Je pars du fait que si vous spécifiez un élément entre parenthèses, ce sera le dernier.
Donc, j'ai eu ce genre de conneries. Je m'attendais à un ordre par ordre... Je veux que le résultat (lot d'un tel ordre *coefficient) soit ajouté à l'ordre au lieu du lot.
et la question de la récupération des données à partir de là
Je veux obtenir le résultat suivant tel que je le vois
MonRéseau[0][0.01]
MonRéseau[1][0.01]
MonRéseau[2][0.02]
etc...
void CalcOrders()
{
int CountOrders=0;
double MyArray [99][99];
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))
CountOrders++;
ArrayResize(MyArray,CountOrders+1);
MyArray[CountOrders][0]=OrderLots();
Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);
}
}
2017.01.13 12:51:14.372 2017.01.05 16:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
Dans l'exemple actuel, je veux pouvoir placer un nombre infini d'ordres avec des lots quelconques afin de ne pas dépasser ses limites.
Bien sûr, nous connaissons tous les limites, mais je veux le faire de cette façon.
Je pars du fait que si vous spécifiez un élément entre parenthèses, ce sera le dernier.
Donc, j'ai eu ce genre de conneries. Je m'attendais à un ordre par ordre... Je veux que le résultat(lot d'un tel ordre *coefficient) soit ajouté à l'ordre au lieu du lot.
Et la question de la récupération des données à partir de là
void CalcOrders()
{
int CountOrders=0;
double MyArray [99][99];
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))
CountOrders++;
ArrayResize(MyArray,CountOrders+1);
MyArray[CountOrders][0]=OrderLots();
Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);
}
}
2017.01.13 12:51:14.372 2017.01.05 16:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
Pouvez-vous expliquer ce dont vous avez besoin ?
Stockons tout dans un tableau, et ensuite ?
Puis on fait tourner le tableau et on cherche la position dont vous avez besoin, quoi ?
Lot quelle position, y a-t-il une définition, ou à l'œil, j'ai regardé l'onglet Commerce, oui besoin 6, c'est ça ?Pouvez-vous expliquer ce dont vous avez besoin ?
On met tout dans un tableau, et ensuite ?
On va faire tourner le tableau, chercher la position dont vous avez besoin, quoi ?
Je regarde l'onglet "Commerce", je sais que j'ai besoin de 6, non ?OnTick()
si la condition pour ouvrir une position est correcte
{position ouverte}
si la condition d'ouverture de la position est correcte
{remplir la même quantité }
Si le dernier lot est en position 2 - ajoutons le lot *1.5 (la fonction trouver le dernier retournera le deuxième) et ce sera le troisième.
si c'est le quatrième ordre
top up {lot zéro+lot un}
s'il s'agit de la cinquième commande
fill {lot 1 position +lot 3}
Il existe actuellement une définition de la dernière position dans la liste
Nous devons l'écrire dans un tableau et sortir le bon en une seule fois parce que je ne vois pas d'autre moyen de mise en œuvre pour le moment, donc le nombre d'ordres et de positions devrait théoriquement être infini.
Je vous ai montré ce que j'ai fait dans la fonction, je ne sais pas si c'est correct ou non.
J'ai besoin d'extraire les données et de savoir à l'avance quel ordre peut être ouvert sur mon compte.
Je ne prétends pas que le système fonctionne, la mise en œuvre est importante.
Bon après-midi. Pouvez-vous me conseiller si je dois tester un EA et qu'il utilise des commandes pour écrire et lire des bits et un fichier csv, comme nous savons que des erreurs se produisent en mode test lors de l'utilisation d'opérations sur des fichiers.
Aucune erreur ne se produit. N'écrit que dans un dossier différent si l'indicateur n'est pas utilisé.
FICHIER_COMMON
4096
Emplacement du fichier dans le dossier partagé de tous les terminaux clients \Terminal\Common\Files. Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen()), la copie de fichiers (FileCopy(), FileMove()) et la vérification de l'existence de fichiers (FileIsExist()).
Aucune erreur ne s'est produite. N'écrit que dans un dossier différent si l'indicateur n'est pas utilisé.
FICHIER_COMMON
4096
Emplacement du fichier dans le dossier partagé de tous les terminaux clients \Terminal\Common\Files. Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen()), la copie de fichiers (FileCopy(), FileMove()) et la vérification de l'existence de fichiers (FileIsExist()).
Eh bien, j'utilise FileOpen()
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;
C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files
5004:ERR_FILE_CANNOT_OPEN = Erreur de fichier ouvert
Eh bien, j'utilise FileOpen()
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;
C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files
5004:ERR_FILE_CANNOT_OPEN = Erreur d'ouverture de fichier
FileOpen() n'est pas un drapeau... L'indicateur est FILE_COMMON.
Si vous ne voulez pas écrire dans un dossier séparé, vous n'avez pas besoin de le spécifier comme une chaîne vide dans le chemin. Les éléments inutiles sont surlignés en jaune.
FileOpen() n'est pas un drapeau... L'indicateur est FILE_COMMON.
Si vous ne voulez pas écrire dans un dossier séparé, vous n'avez pas besoin de le spécifier comme une chaîne vide dans le chemin. Les éléments inutiles sont surlignés en jaune.
Pouvez-vous me dire où je peux trouver des informations sur la propriété #property strict ?
Bonjour !
Pouvez-vous me dire où je peux trouver des informations sur la propriété #property strict ?