Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 208

 
borilunad:
Alors voir ci-dessus, corrigé !
Il s'avère que lorsqu'on m'a accusé de manquer de logique booléenne - ils voulaient dire des parenthèses supplémentaires dans les opérateurs.... mais ce sont des règles de formatage des expressions et des opérateurs.... est-ce de la logique booléenne ?
 
T-G:

Bonjour à tous. J'ai besoin d'aide.

Dans mon tableau s'ouvre une série d'ordres, dans le montant fixé par le paramètre MaxOrders, ci-dessous j'ai indiqué comment cela se présente par exemple, ne jugez pas strictement par lots

Commande de 1 lot = 128

Commande de 2 lots=256

3-lot-ordre-lot=512

4-lot-ordre-lot=1024

5-lot d'ordre=2048

Tout ceci est pour le testeur.

MaxOrders=5, et 5 ordres sont ouverts. Le problème est que dans le testeur de stratégie, mon courtier a une limite de 1000 lots et donc les ordres 4 et 5 ne s'ouvrent pas comme je le devrais.

J'ai cherché sur Internet un moyen de modifier ce paramètre dans le testeur de stratégie, mais je n'ai pas réussi à trouver comment le faire.

J'ai donc décidé de résoudre ce problème en utilisant la programmation. J'ai décidé d'ouvrir plusieurs commandes pour 4 commandes et obtenir deux

4 lots d'ordre = 1000

Lot de 4 ordres = 24

pour 5 commandes 3 :

5-lots d'ordre=1000

5-lots d'ordre=1000

lot de 5 ordres = 48

mais il y a deux problèmes ici,

- comment décomposer correctement le MM pour qu'il soit décomposé en lots selon le lot maximum.

- Et comment ouvrir des ordres supplémentaires sans casser l'ordre, c'est-à-dire qu'il y aura plus d'ordres que dans le MaxOrders, mais sans compter les ordres supplémentaires qui sont ouverts pour répondre au volume.

Peut-être devrions-nous diviser les lots, c'est-à-dire ouvrir plusieurs positions qui sont reliées entre elles par des commentaires où sont placés les tickers des ordres parents et enfants. La commande parent avec le volume de 1000 aura un ticket de la commande avec le volume de 24, et la commande enfant avec le volume de 1000 aura un ticket dans cet ordre. Et nous devrons les fermer, les modifier de la même manière... Ou plus simple - un micro compte et de très petits lots. Dans les calculs pour le suivi visuel, multipliez les lots par le coefficient, afin qu'ils prennent la valeur dont vous avez besoin...

Rien d'autre ne me vient à l'esprit, sauf une société de courtage qui autorise des volumes plus importants.

Ou ... divisez par 100 vos lots

 
artmedia70:

Il n'est pas nécessaire d'être un expert en algèbre booléenne pour énoncer clairement les conditions...

Laissez-moi vous rendre la vie un peu plus facile... Remplacez if par l'habituel if, else par otherwise, && par and, || par or , etc.... Vous pourrez alors lire dans vos propres mots normaux ce qui est écrit ou décider de ce que vous voulez écrire.

Ce que vous avez écrit (passons pour l'instant la description de la mauvaise condition) :

1. if (ot==0) S'il n'y a pas d'ordre de marché (ni ordre de marché du tout, ni ordre en attente, ni ordre ouvert par cet EA, ou par un autre EA, ou manuellement)... Si oui, alors la ligne 2 est exécutée, si non, alors nous passons à la ligne 3.

2. if (Bid==Price) Si le prix est égal au prix d'ouverture de la bougie actuelle... Si c'est le cas, la ligne 3 est exécutée, sinon, nous passons à la ligne 4.

3. if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point)) Si le prix d'ouverture de la première bougie est supérieur au prix de clôture de la première bougie de plus de 100 points et de moins de 120 points... Si c'est le cas, passez à la ligne 4, sinon, passez à la ligne 5.

4. if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point)) Si le haut de la première bougie est supérieur au cours d'ouverture de la première bougie de plus de 40 points et de moins de 60 points... Si c'est le cas, nous exécutons la ligne 5, sinon, nous passons à la ligne 6.

5. if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point)) Si la clôture de la première bougie est supérieure au bas de la première bougie de plus de 40 points et de moins de 60 points. Si c'est le cas, la ligne 6 est exécutée, sinon, passez à la ligne 7.

6.

7.

Comme vous pouvez le voir dans cette décomposition, soit vous faites exécuter toutes les lignes de code l'une après l'autre (dans le cas où chaque ligne renvoie vrai), soit vous sautez la ligne qui vient après la ligne qui renvoie faux.

Afin d'éviter toute confusion concernant vos conditions et de respecter la logique, mettez toutes les instructions entre accolades, qu'il s'agisse d'une seule ligne à exécuter après la valeur de vérité ou d'un bloc entier.

Par exemple :

Essayez donc de décomposer votre code en composants, en supprimant les parenthèses supplémentaires, qui sont inutiles dans ce cas...

Merci beaucoup pour votre réponse complète.

 
solnce600:
Il s'avère que lorsqu'on m'a accusé de manquer de logique booléenne - on voulait dire des parenthèses supplémentaires dans les opérateurs.... mais ce sont des règles de formatage pour les expressions et les opérateurs.... est-ce de la logique booléenne ?

Non - absence de parenthèses dans les cas où elles sont nécessaires. Appliquer au bloc logique de recherche de la taille des chandeliers dans votre EA
 
solnce600:

Merci beaucoup pour votre réponse complète.

J'ai corrigé votre code, de sorte qu'il surveille toujours la fermeture par arrêt - j'ai attribué une valeur au magicien pour vous. Je ne l'ai pas vérifié moi-même.
 

Bon après-midi. Cher, s'il vous plaît conseiller comment mettre en œuvre cette condition dans le conseiller expert.

Les transactions sont ouvertes sur le graphique horaire sous certaines conditions, mais nous devons faire en sorte que les transactions soient ouvertes uniquement sous les conditions du graphique 4 heures.

Par exemple : si sur le graphique horaire, le croisement des moyennes ouvre une transaction, à condition que le graphique de 4 heures avec les moyennes avec d'autres paramètres croise dans la même direction. Je serais reconnaissant pour des réponses et de l'aide.

 
teplovoz:

Bon après-midi. Cher, s'il vous plaît conseiller comment mettre en œuvre cette condition dans le conseiller expert.

Les transactions sont ouvertes sur le graphique horaire sous certaines conditions, mais nous devons faire en sorte que les transactions soient ouvertes uniquement sous les conditions du graphique 4 heures.

Par exemple : si sur le graphique horaire, le croisement des moyennes ouvre une transaction, à condition que le graphique de 4 heures avec les moyennes avec d'autres paramètres croise dans la même direction. Je serais reconnaissant pour des réponses et de l'aide.

S'applique aux MAs pour obtenir les données de H4 pour la première et la deuxième barre :

double MA1_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,2);

Obtenir les données de H1 pour la première et la deuxième barre :

double MA1_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,2);

Faites de même pour les autres périodes et indicateurs.

 
artmedia70:

Appliquer aux MAs pour les données H4 pour la première et la deuxième barre :

Faites de même pour les autres périodes et indicateurs.



Wow. Je suis tellement bête, je suppose que je dois juste spécifier le délai requis dans les paramètres de l'assistant et c'est tout ? Merci, mon cerveau refuse de travailler ces jours-ci :)
 
artmedia70:
J'ai corrigé votre code pour qu'il suive toujours la fermeture de l'arrêt - j'ai assigné une valeur au magicien pour vous. Je ne l'ai pas vérifié moi-même.


Je vais le faire à nouveau. Merci beaucoup.
 
Ce n'est pas grave, on en a tous de temps en temps...