Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 869
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
Je suis désolé, c'est dommage de ressasser la même chose cent fois.
Ça fait presque un mois que je fixe la porte comme un mouton. Je ne comprends rien.
La tâche consiste à calculer une moyenne mobile inférieure avec une moyenne mobile de 13,
c'est-à-dire de calculer une période de 12 sur la base de 13.
Bonjour, est-ce que l'un de vos estimés gourous pourrait vérifier le démarrage de ma première EA ? Est-il possible de passer à autre chose ? J'ai peut-être manqué quelque chose ? Je vous serais très reconnaissant de me donner des précisions. J'ai vu quelque part sur le forum comment ouvrir une seule position, mais je ne l'ai pas copié et maintenant je ne le trouve plus. Aidez-nous, s'il vous plaît.
Merci !
// Version d'essai d'Expert Advisor
//--------------------------------------------------------------------
//------Вводные данные:-----------------------------------------------------------
entrée double Lots = 0.1 ; //Lot
input int MovingPeriod =5 ; // МА période de calcul
input int MovingShift =0 ; // décalage MA
input int InpBandsPeriod=10 ; // période des bandes de Bollinger
input int InpBandsShift=0 ; // décalage des bandes de Bollinger
input double InpBandsDeviations=2.0 ; // écart des bandes de Bollinger
input int K_Period=30 ; // %K période de la stochastique
input int D_Period=10 ; // %D Période stochastique
input int Slowdawn =8 ; // Ralentissement stochastique
couleur d'entrée clMainStoch =Yellow ; // couleur de la ligne stochastique principale
couleur d'entrée clSignalStoch =Red ; // couleur de la ligne du signal stochastique
// -----Declarez les variables globales:------------------------------------------
double MA_0, MA_1, MA_2 ; // Valeur MA sur les barres 0, 1 et 2
double MB_0, MB_1, MB_2 ; // Valeur de la moyenne de Bollinger sur 0, 1 et 2 barres
double ExtUpperBuffer[] ; // valeur de la ligne de Bollinger supérieure
double ExtLowerBuffer[] ; // Valeur de la ligne de Bollinger inférieure
double Delta_0, Delta_1 ; // différence entre les valeurs de la Bollinger supérieure et inférieure ...
// ...Lignes de Bollinger sur les barres 0 et 1
double Yellow_0, Yellow_1, Yellow_2 ; // Valeur MAIN sur les barres 0, 1 et 2
double Red_0, Red_1, Red_2 ; // SIGNAL de valeur sur les barres 0, 1 et 2
//-------Поехали!----------------------------------------------------------------
int start() //Démarrage d'une fonction spéciale
{
//appel de fonction de l'indicateur MA
MA_0=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;
MA_1=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1) ;
MA_2=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2) ;
//réaction à la fonction des bandes de Bollinger
MB_0=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,0) ;
MB_1=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,1) ;
MB_2=iBands(NULL,0,InpBandsPeriod,InpBandsShift,InpBandsDeviations,PRICE_CLOSE,2) ;
Delta_0=iBandes(ExtUpperBuffer[0]-ExtLowerBuffer[0]) ;
Delta_1=iBandes(ExtUpperBuffer[1]-ExtLowerBuffer[1]) ;
//Appel de fonction stochastique
Yellow_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,0) ;
Yellow_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,1) ;
Yellow_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_MAIN,2) ;
Red_0=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,0) ;
Red_1=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,1) ;
Red_2=iStochastic(NULL,0,K_Period,D_Period,Slowdawn,MODE_SMA,0,MODE_SIGNAL,2) ;
//-------Ситуации по Стохастику:-----------------------------------------------------
//Le marché est suracheté
double MOB()=(Yellow_0>=80 && Red_0>=80) ; //La variable locale
//Le marché est survendu.
double MOS()=(Yellow_0<=20 && Red_0<=20) ; //La variable locale
//Le marché est normal.
double MN()=(20<Jaune_0<80 && 20<Rouge_0<80) ; //Variable locale
//Situation critique
double MC1()=(20<Jaune_0<80 && Rouge_0<=20) ; //Variable locale
double MC2()=(20<Jaune_0<80 && Rouge_0>=80) ; //Variable locale
double MC3()=(20<Red_0<80 && Yellow_0<=20) ; //La variable locale
double MC4()=(20<Red_0<80 && Yellow_0>=80) ; //La variable locale
//-------Example(my)order to open position-----------------------------------------------------
if (Delta_0 > Delta_1 && MOB()==true) //The market is overbought but delta is expanding
{ if (MB_2 > MB_1 && MB_1 < MB_0) /Pause de Bollinger inférieure
OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point);//ouverture de l'ordre d'achat
Alert("GetLastError()) ; //Message d'une erreur
Alert("Ouvrir position BAY avec lots("Lots"),prix("Ask").") ; //Message d'achat
En outre, les positions BAY (ainsi que Sell) peuvent être ouvertes dans différentes conditions, et selon les conditions dans lesquelles la position a été ouverte (par exemple BAY), il y aura différentes conditions de clôture. (par exemple, BAY), les conditions de clôture seront différentes.
Comment traduire cela en MKL ?
En outre, les positions BAY (ainsi que Sell) peuvent être ouvertes dans différentes conditions, et selon les conditions dans lesquelles la position a été ouverte (par exemple BAY), il y aura différentes conditions de clôture. (par exemple, BAY), les conditions de clôture seront différentes.
Comment traduire cela en MKL ?
Nous sélectionnons l'ordre dans la boucle. Si c'est un Buy et que toutes les autres données (symbole, magicien, peu importe) répondent au critère de devoir le clôturer aux "conditions de clôture appropriées", alors nous le clôturons s'il y a des "conditions de clôture appropriées".
C'est un peu vague pour moi, mais après avoir creusé un peu, je pense que je vais comprendre. Merci beaucoup de ne pas tourner le dos et de ne pas donner des leçons du haut de votre savoir, comme certains camarades du pays soviétique.
J'ai trouvé comment fermer :
//-------Exemple(mine) d'un ordre d'ouverture de position avec fermeture obligatoire (par ticket)-----------------------------------------------------
//La variable locale qui ouvre un ordre BAY (au lieu de la ligne 63)
int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point))
//-------Alors la fermeture pour cette commande particulière pourrait être la suivante:-----------------------------------------------------
if (Ticket_1()==true) //si la commande #1 a été ouverte, alors...
{ if (Yellow_0>Red_0 && (Yellow_0-Red_0)<(Yellow_1-Red_1)) //Le jaune est supérieur au rouge, contraction(condition)
{ if (MA_2 < MA_1 && MA_1 > MA_0);} //Rouge au-dessus de celui du milieu (condition)
else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Jaune au-dessus de rouge, expansion(condition)
{ if (MB_2 < MB_1 && MB_1 > MB_0);} //Bris de Bollinger supérieur (condition)
bool Ans=OrderClose(Ticket,Lot,Bid,0) ; //...fermer l'ordre (lockvariable)
Alert("Tentative de clôture de l'ordre avec Bid("Lots"),price("Ask"). En attente d'une réponse...") ;
if (Ans==true) // Cela a marché :)
{
Alert ("Ordre BAY fermé par lot("Lots"),Prix de clôture("Bid") ;
break ; // Sortie de la boucle de fermeture de position
}
}
S'il vous plaît donner une analyse, bien sur le poste précédent aussi. Désolé d'être têtu, mais tu vois - tu es le seul qui répond... Merci !
C'est un peu vague pour moi, mais après avoir creusé un peu, je pense que je vais comprendre. Merci beaucoup de ne pas tourner le dos et de ne pas donner des leçons du haut de votre savoir, comme certains camarades du pays soviétique.
J'ai pensé à le fermer de cette façon :
...Veuillez donner une analyse, et sur le poste précédent aussi. Désolé d'insister, mais vous voyez, vous êtes le seul à répondre... Merci !
Eh bien, c'est un peu flou, n'est-ce pas ?
1. vous devez déterminer le fait de l'occurrence de la condition pour clôturer l'ordre d'achat
2. Dans le cycle, vous passez en revue toutes les positions ouvertes et, lorsque vous trouvez l'ordre d'achat requis, vous le fermez.
C'est un exemple de cycle :
Par exemple, pour clôturer l'ordre d'achat sur le symbole actuel (sur le graphique où le conseiller expert est exécuté) et avec un nombre magique de 100500 (par exemple), vous devez appeler la fonction comme suit
Vous n'avez pas besoin d'écrire le nombre 100500, généralement le nombre magique est déjà défini dans l'EA dans une variable, par exemple int Magic = 100500 ; Vous devez donc écrire Magic au lieu de 100500.
Je n'ai rien écrit dans la boucle où la position sélectionnée doit être fermée, car elle doit appeler la fonction pour fermer l'ordre selon le ticket. Il s'agit généralement d'un appel d'une fonction complète avec des codes de retour du serveur commercial traité. Vous pouvez y écrire une simple commande pour fermer l'ordre sélectionné OrderClose() pour vérifier ;
C'est beaucoup plus facile à lire de cette façon. Désolé.
Il est également possible de modifier un ancien message, afin de ne pas créer de doublons ;)
Il est toujours possible de modifier un ancien message pour éviter les doublons ;)
C'est un peu brumeux.
1) Déterminer le fait que la condition de clôture de l'ordre d'achat s'est produite.
2. Dans la boucle, vous passez en revue toutes les positions ouvertes et, lorsque vous trouvez l'ordre d'achat requis, vous le fermez.
C'est un exemple de cycle :
Par exemple, pour clôturer l'ordre d'achat sur le symbole actuel (sur le graphique où le conseiller expert est exécuté) et avec un nombre magique de 100500 (par exemple), vous devez appeler la fonction comme suit
Vous n'avez pas besoin d'écrire le nombre 100500, généralement le nombre magique est déjà défini dans l'EA dans une variable, par exemple int Magic = 100500 ; Vous devez donc écrire Magic au lieu de 100500.
Je n'ai rien écrit dans la boucle où la position sélectionnée doit être fermée, car elle doit appeler la fonction pour fermer l'ordre selon le ticket. Il s'agit généralement d'un appel d'une fonction complète avec des codes de retour du serveur commercial traité. Vous pouvez y écrire une simple commande pour fermer l'ordre sélectionné OrderClose() pour vérifier ;