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
Créez au préalable un fichier approprié.
Avec cette implémentation, il est pratique/rapide, par exemple, de copier des tableaux de n'importe quelle dimension (et différente) les uns sur les autres - sans violer le HDD/SDD.
#define ARRAYCOPY(Dest, Source) \
if (ArraySize(Source) > 0) \
{ \
const int handleRAM = FileOpen("\\\\REN\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN); \
\
if (handleRAM != INVALID_HANDLE) \
{ \
if (FileWriteArray(handleRAM, Source) > 0) \
FileReadArray(handleRAM, Dest); \
\
FileClose(handleRAM); \
} \
}
#define MATRIX_TO_VECTOR(Matrix, Vector) \
if (ArraySize(Matrix) > 0) \
{ \
const int Range1 = ArrayRange(Matrix, 0); \
const int Range2 = ArrayRange(Matrix, 1); \
\
ArrayResize(Vector, Range1 * Range2); \
\
int k = 0; \
\
for (int i = 0; i < Range1; i++) \
for (int j = 0; j < Range2; j++) \
{ \
Vector[k] = Matrix[i][j]; \
\
k++; \
} \
}
// Копирует одномерный массив в двумерный
#define VECTOR_TO_MATRIX(Vector, Matrix) \
if (ArraySize(Vector) > 0) \
{ \
const int Size = ArraySize(Vector); \
const int Range = ArrayRange(Matrix, 1); \
\
ArrayResize(Matrix, Size / Range + ((Size % Range == 0) ? 0 : 1)); \
\
for (int i = 0; i < Size; i++) \
Matrix[i / Range][i % Range] = Vector[i]; \
}
Le fait est que OnTradeTransaction() ne se déclenchera pas immédiatement après OrderSend.
En bref, il y a juste une foule d'argumenteurs ici sans entrer dans le sujet de l'argument.
Il existe deux variantes de l'algorithme si quelque chose doit être fait immédiatement après OrderSend() :
1. Nous pouvons démarrer une boucle en attendant les mises à jour des listes de commandes et d'offres.
2. Terminez OnTick() et attendez le déclenchement de OnTradeTransaction().
3. Vérifiez par cochage si une nouvelle commande ou une nouvelle affaire apparaît dans la liste.
Que puis-je faire à la place de MODE_MARGINREQUIRED dans mql5 ?
C'est quelque chose que vous devez demander aux développeurs, car aucun des membres du forum ne le sait. J'ai posé cette question 4 fois dans différents fils de discussion, une fois j'ai même obtenu la réponse : "utilisez la recherche", mais il y a plus de 100 questions dans la recherche et pas une seule réponse. Le développeur ne répond pas à la question, probablement en raison du fait que dans Five il n'y a pas de possibilité d'obtenir la marge pour les paires autres que la monnaie de dépôt.
Tout est encore brut dans Five et il semble que cela restera ainsi, mais il y a un OpenGL pour tout le monde =)
Qu'est-ce qui peut remplacer le quadruple MODE_MARGINREQUIRED dans mql5 ?
OrderCalcMargin() essayer
C'est compréhensible, mais cela ne fonctionne pas à partir de l'indicateur
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot); // залог на 1 лот
C'est compréhensible, mais cela ne fonctionne pas avec l'indicateur
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot);
Ceci est écrit explicitement dans l'aide, qui ne fonctionne pas à partir de l'indicateur https://www.mql5.com/ru/docs/runtime/running.
Je voudrais un calcul qui soit indépendant du type de programme.
Oooh, j'aimerais beaucoup aussi :)