Comment coder ? - page 313

 

Bonjour,

Est-il possible de modifier uniquement les ordres d' achat ou de vente du symbole actif du graphique ?

Cela me serait très utile dans un script où j'utilise la fonction WindowsPriceonDropped pour ouvrir un ordre.

Merci d'avance

 

...

dasio,

Essayez quelque chose comme ceci :

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
Bonjour,

il est possible avec le code de modifier uniquement l'ordre d'achat ou de vente du symbole graphique actif actuel ?

Ce serait très utile pour moi dans un script où j'utilise la fonction WindowsPriceonDropped pour ouvrir un ordre.

Merci
 

Qui veut un défi ?

J'ai besoin d'un code pour faire ce qui suit, voir la capture d'écran ci-jointe. Il s'agit d'une transaction d'achat.

J'ai essayé une boucle for, un fouillis de conditions if et aucun n'a produit les résultats que je recherche.

Cela semble simple mais je n'ai pas réussi à le faire fonctionner.

Dossiers :
maexample.jpg  54 kb
 

Votre condition d'entrée pourrait être écrite de la manière suivante :

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
J'ai besoin d'un code pour faire ce qui suit, voir la capture d'écran ci-jointe. Il s'agit d'une transaction d'achat.

J'ai essayé une boucle for, un fouillis de conditions if et aucun n'a produit les résultats que je recherche.

Cela semble simple mais je n'ai pas réussi à le faire fonctionner.
 
mladen:
Votre condition d'entrée pourrait être écrite de la manière suivante :
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

Le code que vous avez posté me donnerait le signal pour la barre qui chevauche la moyenne mobile. Mais j'ai aussi besoin d'un moyen d'entrer une transaction sur n'importe quelle barre après la barre de chevauchement jusqu'à 5 barres à condition qu'elles ne dépassent pas MA+5. La raison pour laquelle je ne prends pas de signal d'achat sur la barre de straddle est qu'il y a un autre indicateur qui doit montrer une valeur VRAIE qui peut ne pas être VRAIE sur la barre de straddle mais si elle est VRAIE sur n'importe quelle barre jusqu'à 5 barres après la barre de straddle et qu'elle n'a pas dépassé la limite MA+5, je peux toujours prendre une position. Je ne prends pas plusieurs positions, mais une seule par configuration.

Ce qui suit est ce que j'ai jusqu'à présent. A ce stade, je ne marque que les barres éligibles avec une flèche en dessous, achats uniquement. Une fois que je l'aurai mis au point, j'introduirai mon code pour exécuter l'ordre. Je sais que cela semble simple, mais à moins que je ne manque quelque chose d'évident, ça ne l'est pas.

//+------------------------------------------------------------------+

double Poin;

//+------------------------------------------------------------------+

//| Custom initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

//+------------------------------------------------------------------+

// +

//+------------------------------------------------------------------+

int deinit(){

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

Dans cette capture d'écran, vous devriez abandonner à la barre 4 parce que la barre 3 dépasse la limite MA +5, ce qui signifie qu'à la barre 4 vous devriez vérifier si la barre 3 a dépassé la limite MA +5, c'est le cas, donc c'est la fin de cette configuration de trade.

Ici, les 5 barres sont éligibles car aucune d'entre elles n'a dépassé la limite MA +5.

Dossiers :
 

Dans cette capture d'écran, vous devriez abandonner à la barre 4 parce que la barre 3 dépasse la limite MA +5, ce qui signifie qu'à la barre 4 vous devriez vérifier si la barre 3 a dépassé la limite MA +5, ce qui est le cas, c'est la fin de cette configuration de trade.

Ici, les 5 barres sont éligibles car aucune d'entre elles n'a dépassé la limite MA +5.

 

...

cyber1

Dans vos exemples, d'après ce que je vois, pour pouvoir annuler comme vous le décrivez, vous devez également connaître le futur (car avant la barre "d'annulation", les règles s'appliquent et renvoient un signal de départ).

D'autre part, si vous essayez de tester toutes les barres en arrière pour la condition d'entrée, vous aurez toujours une "rupture de règle" et ne pourrez pas entrer en position.

cyber1:
Dans cette capture d'écran, vous devriez abandonner à la barre 4 parce que la barre 3 dépasse la limite MA +5, ce qui signifie qu'à la barre 4, vous devriez vérifier si la barre 3 a dépassé la limite MA +5, ce qui est le cas, d'où la fin de cette configuration de transaction.

Ici les 5 barres sont éligibles car aucune d'entre elles n'a dépassé la limite MA +5

 

Fermer tous les Open Trade EA

Quelqu'un peut-il m'aider à réaliser cet EA ?

Cet EA fermera toutes les paires ouvertes lorsqu'il aura atteint ses objectifs de profit et de perte.

Lorsqu'il ferme tout, il commence à surveiller la transaction ouverte.

J'ai un talent limite pour faire cela.

Cet EA doit être séparé de l'EA principal pour chaque paire.

 

Lignes de signal et de résistance/support dinamyc.

Pouvez-vous m'aider à traduire cet indicateur dans la langue de MT4 ?

a:=(hhv(close,tpr)+llv(close,tpr)+close)/3 ;

b:=(a1*2)-hhv(close,tpr) ;

déplacement b:=mov(b,tpr,simple) ;

c:=(a1*2)-llv(close,tpr) ;

moving c:=mov(c,tpr,simple) ;

d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3 ;

déplacement d:=mov(d,tpr/2,simple) ;

stream:=(b+c+d)/3 ;

stream mobile:=mov(stream,tpr,simple).

hhv= valeur maximale de la période (la valeur la plus élevée du cours de clôture dans la période choisie)

llv= valeur de la période min (la valeur la plus basse du cours de clôture dans la période choisie)

tpr= période de temps (de 1 à ce que vous voulez)

mov= moyenne mobile.

La sortie doit avoir "stream" et "moving stream" ! Même s'il y a aussi "b", "moving b", "c", "moving c", "d" et "moving d", ce n'est pas une mauvaise chose !

Merci.

Ce forum est génial......

Lucmat

Dossiers :
immagine.jpg  258 kb
Raison: