[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 497
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
Dites-moi comment écrire un EA dans ces conditions :
Il y a trois paires de devises sur lesquelles l'EA ouvrira des transactions et l'EA est attaché à un seul graphique et sur les deux autres il fonctionne tout seul, en général, multidevises.
La deuxième condition est que lorsque le prix atteint un certain niveau sur l'une des paires de devises, une transaction est ouverte. Une seule opération peut être ouverte à la fois.
Dès que la transaction est fermée, le conseiller expert peut la rouvrir sur n'importe quelle paire si le prix s'approche.
J'ai défini une variable statique de sorte que tant que la valeur de la variable est fausse, les transactions sont autorisées à être ouvertes et dès qu'un ordre est ouvert sur l'une des paires, la variable prend la valeur vraie. Dès que l'ordre est fermé et que la boucle for ne trouve pas de transaction, la variable prend à nouveau la valeur false.
Et si, par exemple, une seule transaction doit être ouverte pour chacune des paires, cela signifie que chaque paire a sa propre variable.
Existe-t-il une solution plus rationnelle à ce problème ?
Il y a un paramètre tel que "Magik" dans l'ordre - il suffit de compter les ordres avec un certain magik et d'autoriser ou d'interdire les transactions.
Comment clôturer correctement les commandes et comment recueillir des informations à leur sujet ?
J'ai écrit l'algorithme suivant : je veux ouvrir une position d'achat lorsque l'ouverture est inférieure à la fractale ascendante et que la clôture est supérieure à la fractale ascendante, et une position de vente lorsque l'ouverture est supérieure à la fractale descendante et que la clôture est inférieure ; je veux également fermer toutes les positions si elles sont inférieures de 85 points ou si l'ordre est ouvert dans les 38 bougies (const. S).J'ai l'impression que rien n'est fermé du tout, juste des ordres fermés et en général j'ai l'impression que je traite les ordres de la mauvaise façon, j'opère incorrectement et ensuite je les ferme de la mauvaise façon)) S'il vous plaît, dites-moi comment les fermer correctement, pour qu'ils ne se glissent pas fermés et où sont les erreurs dans ce code. Ou peut être un exemple de la marche de nyu, dans lequel toutes ces opérations sont faites de manière adéquate. Merci d'avance pour votre aide)
extern int S=38 ; //nombre de chandeliers, après lesquels la position sera fermée
extern int SL=85 ; //le stop, auquel les positions seront fermées dans tous les cas
extern int HIGH=0 ; //sur quel délai les extrêmes seront recherchés (5 ou 1 ou 0(D1))
extern int l=1 ; //nombre de lots à négocier
int massorder[30][30] ; //il y a des données sur les lots OUVERTS
int numb=1 ; //le nombre d'el-ta dans le tableau, qui est oot. lot ouvert
int i=0 ;
int ticket=0 ;
int x=0 ;
double down,up=0 ;
double highH1,lowH1=0 ;
int start()
{if(Hour()>x)
{
searchH1() ;
up=highH1 ;
down=lowH1 ;
i++ ;
}
//----
if(Open[1]<up && Close[1]>up)//si la bougie est plus basse à l'ouverture et plus basse à la fermeture que le niveau fractal haut, alors
{
ticket=OrderSend(Symbol(),OP_BUY,l,Bid,5,Bid-SL*Point,NULL) ;
i=0 ;
savedata() ;
}
if(Open[1]>down && Close[1]<down)//si la bougie est plus haute à l'ouverture et plus basse à la fermeture que le niveau fractal bas, alors
{
ticket=OrderSend(Symbol(),OP_SELL,l,Ask,5,Ask+SL*Point,NULL) ;
i=0 ;
savedata() ;
}
if(i==S)
{
closeAllticket() ;
closeAllPos() ;
}
i++ ;
//----
x=Hour() ;
if(Hour()==23)
x=-1 ;
return(0) ;
}
//+------------------------------------------------------------------+
void closeAllticket()
{
for(int j=0;j<=numb;j++)
{
OrderClose(massorder[j][0],l,Ask,5) ;
OrderClose(massorder[j][0],l,Bid,5) ;
}
numb=0 ;
}
void closeAllPos()
{
for(int j=0;j<=OrdersTotal();j++)
{
OrderSelect(j,SELECT_BY_POS) ;
OrderClose(OrderTicket(),l,Ask,5) ;
OrderClose(OrderTicket(),l,Bid,5) ;
}
}
void searchH1()//fonction permettant de trouver la fractale
{
if(iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,2) && iHigh(Symbol(),PERIOD_H1,3)>iHigh(Symbol(),PERIOD_H1,1) &&.&& iHigh(Symbole(),PERIOD_H1,3)>iHigh(Symbole(),PERIOD_H1,4) && iHigh(Symbole(),PERIOD_H1,3)>iHigh(Symbole(),PERIOD_H1,5))
highH1=iHigh(Symbole(),PERIOD_H1,3)
if(iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,2) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,1) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,4) && iHigh(Symbol(),PERIOD_H1,3)<iHigh(Symbol(),PERIOD_H1,5))
lowH1=iHigh(Symbol(),PERIOD_H1,3) ;
return (0) ;
}
void savedata() //programme pour sauvegarder les données dans le tableau{
OrderSelect(ticket,SELECT_BY_TICKET) ;
massorder[numb][0]=OrderTicket() ;
massorder[numb][1]=OrderOpenPrice() ;
massorder[numb][2]=OrderStopLoss() ;
massorder[numb][3]=OrderTakeProfit() ;
if(OrderType()==OP_BUY)
massorder[numb][4]=0 ;
if(OrderType()==OP_SELL)
massorder[numb][4]=1 ;
numb++ ;
}
Comment clôturer correctement les commandes et comment recueillir des informations à leur sujet ?
J'ai écrit l'algorithme suivant : je veux ouvrir une position d'achat lorsque l'ouverture est inférieure à la fractale ascendante et que la clôture est supérieure à la fractale ascendante, et une position de vente lorsque l'ouverture est supérieure à la fractale descendante et que la clôture est inférieure ; je veux également fermer toutes les positions si elles sont inférieures de 85 points ou si l'ordre est ouvert dans les 38 bougies (const. S).J'ai l'impression que rien n'est fermé du tout, juste des ordres fermés et en général, j'ai l'impression que je traite les ordres de la mauvaise façon, j'opère incorrectement et ensuite je les ferme de la mauvaise façon)) S'il vous plaît, dites-moi comment les fermer correctement, pour qu'ils ne glissent pas fermés et où il y a des erreurs dans ce code. Ou peut être un exemple de la marche de nyu, dans lequel toutes ces opérations sont faites de manière adéquate. Merci d'avance pour votre aide)
Dans les variables globales, où vous avez spécifié des arrêts au début
avant d'ouvrir des ordres :
dans le signal d'ouverture
à la fin de l'EE
Je suppose que je n'ai rien oublié
dans les variables globales, où vous avez spécifié les arrêts au début
avant l'ouverture des commandes :
dans le signal d'ouverture
à la fin de l'EE
comme si rien n'avait été oublié
j'ai mis tout ce que vous avez écrit mais rien n'a changé pour une raison quelconque. le résultat est le même qu'avant et reste toujours, les ordres restent ouverts pendant une grande quantité de temps, et j'ai besoin qu'ils se ferment après les barres S, qu'est-ce que c'est ?????????????????
J'ai mis tout ce que vous avez écrit mais rien n'a changé. le résultat est tel qu'il était et tel qu'il est maintenant, les ordres sont toujours ouverts beaucoup de temps et j'ai besoin qu'ils se ferment après les barres S, quel est le problème ?????????????????.
L'appel à la fermeture des ordres doit être placé avant l'ouverture des ordres. J'ai ceux-ci à la fermeture :
avant le plus global
#include <stdlib.mqh>
Je le dis comme ça avant d'ouvrir les commandes :
et ceci à la toute fin de l'EA
Question aux experts, existe-t-il des critères pour les EA, comme le nombre minimum de lots pour une certaine période du test ? Pourcentage de perte, etc.
J'ai juste 2 EAs, et ils font 100 trades par an, et un autre fait 30 trades en tout... (délais de 15 et 30 respectivement). La rentabilité est bonne, la première est en démo sur de vraies cotations, elle est maintenant en test ... mais quelqu'un peut-il me dire s'il en existe une meilleure .... Mais peut-être que quelqu'un me dira s'il existe de meilleurs tests que dans MT4 ?
Bonjour à tous les connaisseurs))))
Il existe un indicateur qui trace une ligne de tendance sur les deux dernières fractales, mais il la trace après une "fractale non confirmée", c'est-à-dire que la deuxième barre ne s'est pas encore formée après la fractale mais la ligne a déjà été tracée. Comment faire pour qu'il s'affiche après la deuxième barre mais pas après la première ? L'indicateur se trouve dans l'onglet.
Bonjour à tous les connaisseurs))))
Il existe un indicateur qui trace une ligne de tendance sur les deux dernières fractales, mais il la trace après une "fractale non confirmée", c'est-à-dire que la deuxième barre ne s'est pas encore formée après la fractale mais la ligne a déjà été tracée. Comment faire pour qu'il s'affiche après la deuxième barre mais pas après la première ? L'indicateur se trouve dans l'onglet.
Essayez
Essayez