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

 

Bonjour à tous ! Aidez-moi à trouver une erreur dans le code. Le point est le suivant : tous ouverts, disons 6 d'entre eux : 4 à profit, 2 à achat (selon la capture d'écran). La clôture a lieu lorsque le bénéfice total atteint 1,0 (selon la capture d'écran). 2 X 2 = 4 verrouillés (ils sont fermés par OrderCloseBy), 2 ventes sont fermées par OrderClose.

L'erreur est la suivante : les ordres superposés sont fermés à l'aide de OrderCloseBy mais le reste des ordres n'est pas fermé du tout.

Je ne veux pas creuser dans le code, je pense que l'erreur est ici.

ligne 565 du code - fonction pour fermer les ordres

Ligne de code 92-100 - fermer tous les autres ordres

ligne 550 du code - fonction pour compter les ordres ouverts

J'apprécierais toute aide.


Dossiers :
 

alexey1979621, на mql5 ответил ;)

 
Shurkin:

Bonjour.

Lors de la création de tesselles (terminal MT-4-670, Alt+R), les fenêtres des graphiques sont placées à de nouveaux endroits à chaque fois.

Pourriez-vous me dire s'il est possible de les fixer de manière à ce que la position à l'écran de chaque graphique spécifique soit constante ?


MT-4-670, tout va bien pour moi.

Les graphiques en paires sont toujours situés (en mosaïque) comme ils le sont dans les onglets du bas.

Par ordre de priorité :

| 1 | 3 | 5 |

| 2 | 4 | 6 |

 
GalaX:

MT-4-670, je vais bien

Les graphiques de paires sont toujours disposés (en mosaïque) comme ils le sont au bas des onglets

Par ordre de priorité :

| 1 | 3 | 5 |

| 2 | 4 | 6 |


J'ai toujours la fenêtre qui était en plein écran en premier, changez la fenêtre active - l'ordre de la mosaïque change aussi
 
GalaX:

MT-4-670, je vais bien

Les graphiques de paires sont toujours disposés (en mosaïque) comme ils le sont au bas des onglets

Par ordre de priorité :

| 1 | 3 | 5 |

| 2 | 4 | 6 |


Cette propriété apparaît lorsque le panneau graphique est activé, lorsqu'il est désactivé, elle disparaît et la fenêtre active est placée en premier.

Je n'ai rien trouvé à ce sujet dans la dernière version de l'aide.

 
alexey1979621:

Bonjour à tous ! Aidez-moi à trouver une erreur dans le code. Le point est le suivant : total des ouvertures, disons 6 dont 4 à profit, 2 à achat (selon la capture d'écran). La clôture a lieu lorsque le bénéfice total, avec Cajem en 1.0 (selon la capture d'écran). 2 X 2 = 4 scellés fermés (ils sont fermés à l'aide d'OrderCloseBy), 2 scellés sont fermés à l'aide d'OrderClose.

L'erreur ici est la suivante : les ordres qui se chevauchent sont fermés à l'aide d'OrderCloseBy, mais les autres ordres ne sont pas fermés du tout.

Pour éviter de creuser dans le code, je pense que l'erreur est ici.

ligne 565 du code - fonction de clôture des commandes

lignes 92-100 du code - fermer tous les autres ordres

ligne 550 du code - fonction pour compter les ordres ouverts

J'apprécierais toute aide.


"Ligne 92-100 du code - fermer tous les autres ordres" - le prix de clôture de l'ordre est faux.

Dans tous les cycles avec recherche d'ordres, vous devez changer le sens de la recherche, par exemple de la manière suivante

 for(t = OrdersTotal() - 1; t >= 0; t--)

Et dans ClosePos(), le nombre d'ordres change considérablement après le croisement. Il doit y avoir beaucoup d'erreurs.

 

Accès programmatique aux alertes - celles qui sont dessinées avec une flèche rouge sur le côté droit et qui envoient des messages à l'endroit où ils doivent être envoyés lorsque le prix franchit le niveau souhaité, existe ???????.

Ayyyyyyy

 

Au secours ! !! Troisième jour du puzzle !!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0) ; //renvoie l'indice de la barre pour n-périodes avec le prix minimum

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0) ; //renvoie l'indice de la barre pour n-périodes avec le prix maximum

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z) ; //renvoie la valeur du prix de la barre avec le prix le plus bas

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x) ; //renvoie le prix de la barre avec le prix le plus élevé

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0) ; //renvoie le prix de clôture de la dernière barre

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

double Km1=(i/r) ;


retour(Km1) ;

En temps réel, le script fonctionne ! !! dans le testeur de stratégie ERROR ! DIVISER PAR ZÉRO !!! La formule est la plus simple mais il n'y a aucun moyen de la réaliser sans division. (formule stochastique). Comme on peut le voir dans le code et j'ai multiplié les valeurs par 10000 pour exclure généralement les zéros ! toujours une erreur ! S'IL VOUS PLAÎT ! !!

 
sponger:

Au secours ! !! Troisième jour du puzzle !!!!

int stohastm1()

{


double z=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m5,0) ; //renvoie l'indice de la barre pour n-périodes avec le prix minimum

double x=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m5,0) ; //renvoie l'indice de la barre pour n-périodes avec le prix maximum

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,z) ; //renvoie la valeur du prix de la barre avec le prix le plus bas

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,x) ; //renvoie le prix de la barre avec le prix le plus élevé

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0) ; //renvoie le prix de clôture de la dernière barre

double i=100*((PriceCloseBar*10000)-(MinLOWPeriod*10000));

double r=100*((MaxHIGHPeriod*10000)-(MinLOWPeriod*10000));

double Km1=(i/r);


retour(Km1) ;

En temps réel, le script fonctionne ! !! dans le testeur de stratégie ERROR ! DIVISER PAR ZÉRO !!! La formule est la plus simple mais il n'y a aucun moyen de la réaliser sans division. (formule stochastique). Comme on peut le voir dans le code et j'ai multiplié les valeurs par 10000 pour exclure généralement les zéros ! toujours une erreur ! S'IL VOUS PLAÎT ! !!

N'est-ce pas une division ?double Km1=(i/r);
 

borilunad:
А это не деление? double Km1=(i/r);   

c'est le cas ! !! Mais vous en avez besoin ! !! formule stochastique%K = 100%-((Close - Minp)/(Maxp- Minp))

  • Close - prix de clôture actuel
  • Minp - minimum pour la période n
  • Maxp - maximum pour la période n
  • Comment puis-je le faire sans division ?
Raison: