[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 993

 
Aleksander:

Alors, affichez-le sur le côté gauche de l'écran - quelle est la différence ? - La ligne aura le prix à droite - le texte du message à gauche...

ou le faisceau - mais alors tout est du côté gauche...


C'est la demande du client :) D'autres indicateurs sont utilisés à gauche afin que l'un ne se superpose pas à l'autre.

Bon, je vais résoudre le problème, merci à tous pour votre participation !

 
Bonjour, j'ai une question : existe-t-il un moyen d'optimiser un EA dans MT4 pour plusieurs paires de devises à la fois ? ou peut-être existe-t-il un programme spécial pour cela ? ou au moins pour accélérer l'optimisation (pour charger pleinement le CPU) ?
 
gawrik:
Bonjour, j'ai une question : existe-t-il un moyen d'optimiser un conseiller sur plusieurs paires de devises simultanément dans MT4 ?

Vous pouvez exécuter plusieurs MT4 en même temps avec l'optimisation d'un EA sur différentes paires.

Si c'est interdit, alors dites-lui que je l'autorise.

 
Aleksander:

essayez d'inventer pour attribuer le delta

delta = 1 ; if (digits = 5) {delta = 10;}

et dans le texte ajouter

si (Bid <=Low&& Ask < High - 10*Point*delta)

Ce n'est probablement pas tout à fait exact, mais le sens est clair.

delta = Point ; if(digits = 5) {delta = 10*Point;}

if (Bid <=Low&& Ask < High - 10*delta) bien qu'il n'y ait pas de différence, mais... et moi ?

 

et la question suivante sur les spreads dynamiques nécessite de calculer le spread moyen sur N ticks,

J'ai dessiné le schéma suivant mais je ne suis pas sûr qu'il soit correct :

int TicSpred=100 ;

double Spread [10000] ;

if (Spread[0]==0) {ArrayInitialize(Spread,(Ask-Bid)/delta);}

for (int q=TicSpred;q>0;q--){

si (Spread[q]==0) Spread[q]=(Ask-Bid)/delta;}

for (q=TicSpred;q>0;q--){Spread[p]=Spread[p-1];}

Spread[0]=(Ask-Bid)/delta ;

double CountedSpred ;

for (q=0;q<bars;q++){CountedSpred=CountedSpred+Spread[p];}

double Aversired=CountedSpred/TicSpred ; mais je ne suis pas sûr que ce soit correct, et il ne semble pas compter correctement pour cinq chiffres

 

Non, ce n'est pas du tout ça.

J'ai besoin d'écrire chaque étalement suivant dans un tableau, et de le diviser par le nombre d'étalements dans le tableau, et dès que le nombre d'enregistrements atteint N, je dois supprimer le premier dans le tableau

peut-on faire quelque chose de plus simple ?

 

Il y a également une erreur ici

si (Bid >=High ) // Fermeture de la baie

retour (11) ;

si (Bid <=Low && Ask <High - 1*delta )

return (21) ; // Vente à la clôture

si (commerce == 1){

si ( Bid <=Low ) // Ouvrir la baie

Imprimez (" Baie = ",11) ;

retour (10);}

if (Time == 1){

if (Bid<=Low&&Ask<High -1*delta ) // Ouverture de Srll

Imprimez (" Sell= ",21) ;

retour (20);}

return ; // si le temps n'est pas bon, n'ouvrez pas quelque chose ; sortez simplement.

Les variables suivantes High et Low sont connues (j'ai vérifié avec une empreinte) et le prix présente les conditions suivantes

1.si l'achat > Haut, alors nous envoyons une commande 10 (fermeture de l'achat).

2. si l'achat est inférieur au bas et que le haut est inférieur au bas d'un point, alors fermez-le avec un retour de 11.

si la variable Time == 1 alors :

3. si l'offre est inférieure ou égale au bas et que la demande est inférieure au haut d'au moins un point, alors ouvrez l'achat.

4. si l'offre est supérieure ou égale à l'offre haute, alors nous ouvrons la vente ?

Je tiens à rappeler que ce programme est entièrement à partir du tutoriel, je ne change que les critères de négociation, respectivement, la commande 10, 20 tous standard, je vais attacher toutes les fonctions qui sont appelés juste au cas où

Dossiers :
close_all.mqh  3 kb
open_ord.mqh  3 kb
trade.mqh  3 kb
 

Les gens ! Bonjour à tous ! Au secours !

J'ai besoin d'écrire un intervalle de temps dans la fonction de l'indicateur d'alerte. Par exemple, une fenêtre s'ouvre quand un signal apparaît et nous pouvons voir à partir de quel graphique ce signal est apparu. M15 par exemple.

J'ai fait des recherches sur le site, mais je ne trouve rien de tel.

 

Les gens ! Bonjour à tous ! Au secours !

J'ai besoin d'écrire un intervalle de temps dans la fonction de l'indicateur d'alerte. Par exemple, une fenêtre s'ouvre quand un signal apparaît et nous pouvons voir à partir de quel graphique ce signal est apparu. M15 par exemple.

J'ai fait des recherches sur le site, mais je ne trouve rien de tel.

 

Quoi qu'il en soit, cette fonction

//--------------------------------------------------------------------

// Criterion.mqh

// destiné à être utilisé comme exemple dans le tutoriel MQL4.

//--------------------------------------------------------------- 1 --

// Fonction de calcul des critères de transaction.

// Valeurs retournées :

// 10 - ouverture Achat

// 20 - Ouverture de la vente

// 11 - clôture Achat

// 21 - Vente de clôture

// 0 - aucun critère significatif

// -1 - un autre instrument financier est utilisé

//--------------------------------------------------------------- 2 --

// Variables externes :


//--------------------------------------------------------------- 3 --

int Criterion() // Fonction utilisateur

{

//----------------------------------------------------------------4----

chaîne Sym="________" ;

if (Sym!=Symbol()) // Si ce n'est pas notre fin.

{

Inform(16) ; // message.

return(-1);} // ...et sortir

delta = Point ;

if (Digits == 5 || (Digits == 3 && StringFind(Symbol(), "JPY", 0) != -1)))

delta= Point *10 ;

int Digital=MarketInfo(Symbol(),12) ;

//--------------------------------------------------------------- 5 --

// Paramètres pour l'indicateur technique :

bool trade ;

if (Begin>End && (Hour()>Begin-1 || Hour()<End)){trade=1;}

si (Begin<End && (Hour()>Begin-1 && Hour()<End)){trade=1;}

{si (trade==0 && mag!=Mag) return(0);}

// --------------------------Calculer l'écart moyen-----------------------

if (!IsTesting() || IsVisualMode() || !IsOptimization())

{

int TicSpred=100 ;

double Spread [10000] ;

if (Spread[0]==0) {ArrayInitialize(Spread,(Ask-Bid)/delta);}

for (int q=TicSpred;q>0;q--){

si (Spread[q]==0) Spread[q]=(Ask-Bid)/delta;}

for (q=TicSpred;q>0;q--){Spread[q]=Spread[q-1];}

Spread[0]=(Ask-Bid)/delta ;

double CountedSpred ;

for (q=0;q<TicSpred;q++){CountedSpred=CountedSpred+Spread[q];}

double Averaged=CountedSpred/TicSpred ;

}


//--------------------------------------------------------------- 5 --

// Calcul des critères de négociation

si (Bid >=High ) // Fermeture de la baie

retour (11) ;

si (Bid <=Low )

return (21) ; // Vente à la clôture

si (commerce == 1){

if ( Bid <=Low &&Ask<High -0.5*MyPoint ) // Baie ouverte

Imprimez (" Baie = ",11) ;

retour (10);}

si (commerce == 1){

if (Bid>=High ) // Ouverture du Srll

Imprimez (" Vente = ",21) ;

retour (20);}

return ; // si l'heure est mauvaise, n'ouvrez rien ; sortez simplement.


//--------------------------------------------------------------- 6 --

return(0) ; //sortir de la fonction utilisateur

}

//--------------------------------------------------------------- 7 --

il est supposé que les variables Low et High ont déjà été définies et sont correctes

Raison: