Recuperer variable

Modérateur : Administrateurs

Répondre
Message
Auteur
anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Recuperer variable

#1 Message par anthony »

Bonjours je commence dans le trading automatique et je voudrais s'avoir comment en MQL4 peut t'ont récupéré des variable d'une stratégie d'ont nous n'avons pas le code (elle est donc en .ex4 ) mais l'ont connait juste leur nom , value 1 , 2 ,3 et 4 . Je voudrais simplement récupéré c variable pour passer ensuite un ordre d'achat a une certaine valeur merci :)

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Récupérer variable

#2 Message par atk-x »

anthony a écrit :Bonjours je commence dans le trading automatique et je voudrais s'avoir comment en MQL4 peut t'ont récupéré des variable d'une stratégie d'ont nous n'avons pas le code (elle est donc en .ex4 ) mais l'ont connait juste leur nom , value 1 , 2 ,3 et 4 . Je voudrais simplement récupéré c variable pour passer ensuite un ordre d'achat a une certaine valeur merci :)
C'est impossible ...

Décompile le ex4 pour avoir le code source et modifie se que tu veux dedans ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Récupérer variable

#3 Message par anthony »

ok merci mais alors une fois decompiller comment puis je récupéré cet variable car j'ai assaillais tout a l'heure et sa marche pas . Voila ce que je veut faire .
Je voudrais simplement passer un ordre avec la variable ordesend des que le point arrive a l'une des variable que je veut récupéré de la stratégie puis je veut acheter ou vendre , comment puis je faire cela car moi sa marche pas )= si vous voulais je peut vous passer mon code complet et vous me disais ce qu'il va pas ok ?

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Récupérer variable

#4 Message par atk-x »

anthony a écrit :ok merci mais alors une fois decompiller comment puis je récupéré cet variable car j'ai assaillais tout a l'heure et sa marche pas . Voila ce que je veut faire .
Je voudrais simplement passer un ordre avec la variable ordesend des que le point arrive a l'une des variable que je veut récupéré de la stratégie puis je veut acheter ou vendre , comment puis je faire cela car moi sa marche pas )= si vous voulais je peut vous passer mon code complet et vous me disais ce qu'il va pas ok ?

Ordersend n'est pas une variable mais une fonction ...

Ensuite il te suffit de décompilé le ex4 et dans la source tu écris une fonction qui teste tes variable en fonction de tes conditions et tu fais appelle a la fonction ordersend pour envoyer ton ordre ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#5 Message par anthony »

Le problème c que j'ai déjà essaille mais sa marche pas car la variable change a chaque tick comment faire ? un exemple ? :)

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#6 Message par atk-x »

anthony a écrit :Le problème c que j'ai déjà essaille mais sa marche pas car la variable change a chaque tick comment faire ? un exemple ? :)
Quel change a chaque tick ou pas , sa ne change strictement rien au problème :-D

Je pense qu'il te manque des bases de programmation ^^

Si tes variable change a chaque tick , ta fonction qui vérifie c'est variable la, doit aussi être lue a chaque tick pour voir si une ou l'autre variable a été modifiée ...

Bon allai je suis de bonne humeur donc jvais te donner un ptit exemple lol

Admettons , tu as deux variable V1 et V2 qui sont modifiée a chaque tick

ben tu ecris une fonction qui sera lue a chaque tick (donc tu fais l'appel de ta fonction dans la fonction start() ...) ou bien tu écris directement tes instruction dans la fonction start() c'est comme tu veux ...

Exemple pour buy, V1 = true et pour sell, V2 = true

Code : Tout sélectionner

int Start()
{
   Entree();
   return(0);
}


void Entree()
{
   if(V1)
   {
      Ordersend(BUY...);
   }
   else if(V2)
   {
      Ordersend(SELL...);
   }
}
Ou alors directement dans la fonction start() ...

Code : Tout sélectionner

int Start()
{
   if(V1)
   {
      Ordersend(BUY...);
   }
   else if(V2)
   {
      Ordersend(SELL...);
   }

   return(0);
}  
As tu compris ?

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#7 Message par anthony »

déjà fait est sa marche pas :D dsl

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#8 Message par atk-x »

anthony a écrit :déjà fait est sa marche pas :D dsl
Le problème est autre part alors ...

Donne ton code jvais jetter un oeil ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#9 Message par anthony »

Tien voici la parti du code qui m'enquiquine et je le rappelle je débute ^^ , je confirme aussi que il y a aucune erreur dans ma stratégie et que ce code m’affiche aucune erreur.
Les variable sont aussi tous déclare comme il faut ;)

{
while(i == 1)
{
i=1;
if(
((Hour() == heureDebut && Minute() >= minuteDebut) || Hour() > heureDebut) &&
((Hour() == heureFin && Minute() <= minuteFin) || Hour() < heureFin)
) {
if(lastTrade != iTime( NULL, PERIOD_D1, 0)) {
skipClosingTrades = false;
lastTrade = iTime( NULL, PERIOD_D1, 0);

double value2 = mavariable1 ;
double value3 = mavariable2 ;
double value4 = mavariable3 ;
double value5 = mavariable4 ;

while(trade <= 3)
{
if(value3 > Ask )
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"BUY 3 ea",magicalNumber,0,Green);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderOpenPrice()+TakeProfit*Point,0,Blue)){
Print("Error modifing BUY order : ",GetLastError());
}
}
}
trade ++; }

else if(value2 < Bid)
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"SELL 2 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
else if(value4 < Bid)
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"sell 4 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
else if(value5 > Ask)
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"buy 5 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
}

}
} else if(!skipClosingTrades){
skipClosingTrades = true;
closeAllTrades();
}
}

return(0);
}

void closeAllTrades(){
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt--){
if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
Print("Error : ",GetLastError());
}
if(OrderSymbol()==Symbol() && OrderMagicNumber() == magicalNumber) {
if(OrderType() == OP_BUY){
if(!OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Green)){
Print("Error : ",GetLastError());
}
}else if(OrderType() == OP_SELL){
if(!OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red)) {
Print("Error : ",GetLastError());
}
}
}
}
}

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#10 Message par atk-x »

anthony a écrit :Tien voici la parti du code qui m'enquiquine et je le rappelle je débute ^^ , je confirme aussi que il y a aucune erreur dans ma stratégie et que ce code m’affiche aucune erreur.
Les variable sont aussi tous déclare comme il faut ;)

{
while(i == 1)
{
i=1;
if(
((Hour() == heureDebut && Minute() >= minuteDebut) || Hour() > heureDebut) &&
((Hour() == heureFin && Minute() <= minuteFin) || Hour() < heureFin)
) {
if(lastTrade != iTime( NULL, PERIOD_D1, 0)) {
skipClosingTrades = false;
lastTrade = iTime( NULL, PERIOD_D1, 0);

double value2 = mavariable1 ;
double value3 = mavariable2 ;
double value4 = mavariable3 ;
double value5 = mavariable4 ;

while(trade <= 3)
{
if(value3 > Ask )
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"BUY 3 ea",magicalNumber,0,Green);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderOpenPrice()+TakeProfit*Point,0,Blue)){
Print("Error modifing BUY order : ",GetLastError());
}
}
}
trade ++; }

else if(value2 < Bid)
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"SELL 2 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
else if(value4 < Bid)
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"sell 4 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
else if(value5 > Ask)
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"buy 5 ea",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
trade ++;}
}

}
} else if(!skipClosingTrades){
skipClosingTrades = true;
closeAllTrades();
}
}

return(0);
}

void closeAllTrades(){
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt--){
if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
Print("Error : ",GetLastError());
}
if(OrderSymbol()==Symbol() && OrderMagicNumber() == magicalNumber) {
if(OrderType() == OP_BUY){
if(!OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Green)){
Print("Error : ",GetLastError());
}
}else if(OrderType() == OP_SELL){
if(!OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red)) {
Print("Error : ",GetLastError());
}
}
}
}
}
Avant d'aller plus loin , c'est quoi cette boucle infinie ??? while(i == 1) pourquoi fais tu ça ?

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#11 Message par anthony »

a oui c juste pour essailer de toute façon sa change rien au problème

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#12 Message par atk-x »

anthony a écrit :a oui c juste pour essailer de toute façon sa change rien au problème
Bien sur que si LOL si tu fais une boucle infinie dans ta fonction start ton robot ne saurais jamais fonctionner ... j'essayerai ton code cette apres midi , je te tiens au jus ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#13 Message par anthony »

ok thx mais je t'assure que la boucle ne change rien du tout )=

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#14 Message par atk-x »

anthony a écrit :ok thx mais je t'assure que la boucle ne change rien du tout )=
Si elle est dans ta fonction start avec cette boucle SA NE SAURAIS JAMAIS FONCTIONNER !!!

Allai réfléchit deux secondes :-D la fonction start est lue a chaque tick si tu fais une boucle infinie la dedans elle ne sera lue qu'une seul fois , donc RIEN ne fonctionnera .

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#15 Message par anthony »

Tien un autre code que j'ai fait t'alleur mais toujours la même sa marche pas alors que moi je voit pas d'erreur )=


#property copyright "anthony"

extern int heureDebut = 8;
extern int minuteDebut = 0;
extern int heureFin = 23;
extern int minuteFin = 0;

extern int TakeProfit = 50;
extern int StopLoss = 25;
extern double Lots = 0.01;
extern int slippage = 3;

int magicalNumber,ticket,trade;
datetime lastTrade = EMPTY_VALUE;
bool skipClosingTrades = true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
magicalNumber = 98765;


//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----

if(
((Hour() == heureDebut && Minute() >= minuteDebut) || Hour() > heureDebut) &&
((Hour() == heureFin && Minute() <= minuteFin) || Hour() < heureFin)
) {
if(lastTrade != iTime( NULL, PERIOD_D1, 0)) {
skipClosingTrades = false;
lastTrade = iTime( NULL, PERIOD_D1, 0);

double value2 = iCustom(NULL,0,"test",2,4,0,8,6,1,0);
double value3 = iCustom(NULL,0,"test",2,4,0,8,6,3,0);
double value4 = iCustom(NULL,0,"test",2,4,0,8,6,2,0);
double value5 = iCustom(NULL,0,"test",2,4,0,8,6,4,0);

if(Ask < value3 && Ask > value5){
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"BUY EA 3",magicalNumber,0,Green);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderOpenPrice()+TakeProfit*Point,0,Blue)){
Print("Error modifing BUY order : ",GetLastError());
}
}
}
} else if(Bid > value2 && Bid < value4){
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"SELL EA 2",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
}
else if(Bid > value4){
ticket = OrderSend(Symbol(),OP_SELL,0.02,Bid,slippage,0,0,"SELL EA 4",magicalNumber,0,Red);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+StopLoss*Point,OrderOpenPrice()-TakeProfit*Point,0,Blue)){
Print("Error modifing SELL order : ",GetLastError());
}
}
}
}

else if(Ask < value5){
ticket = OrderSend(Symbol(),OP_BUY,0.02,Ask,slippage,0,0,"BUY EA 5",magicalNumber,0,Green);
if(ticket >= 0) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-StopLoss*Point,OrderOpenPrice()+TakeProfit*Point,0,Blue)){
Print("Error modifing BUY order : ",GetLastError());
}
}
}
}




}
} else if(!skipClosingTrades){
skipClosingTrades = true;
closeAllTrades();
}
//----
return(0);
}
//+------------------------------------------------------------------+

void closeAllTrades(){
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt--){
if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
Print("Error : ",GetLastError());
}
if(OrderSymbol()==Symbol() && OrderMagicNumber() == magicalNumber) {
if(OrderType() == OP_BUY){
if(!OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Green)){
Print("Error : ",GetLastError());
}
}else if(OrderType() == OP_SELL){
if(!OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red)) {
Print("Error : ",GetLastError());
}
}
}
}
}



Voila l'ordre est passer mais pas au bonne endroit alors que les comparaison son bonne non ?
car peut importe la courbe il m’achète toujours le 1er "buy ea 3" .

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#16 Message par atk-x »

Je peux aussi avoir ton indicateur que tu appelle avec Icustom ? pour voir se qu'il retourne ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#17 Message par anthony »

non pas besoin de l'indicateur ...
Juste par rapport au code la tu peut me dire si il a des erreur .

Avatar de l’utilisateur
AUTOFOREX
Membre actif et régulier
Messages : 97
Inscription : 05 janv. 2012, 14:04

Re: Recuperer variable

#18 Message par AUTOFOREX »

es-tu certain que ton indi que tu appeles avec ton iCustom te permet d'avoir des valeurs comparables au prix ?

le journal ne contient pas d'erreur ?
[url]http://www.autoforex.fr/[/url]
[img]http://www.autoforex.fr/wp-content/uploads/2013/10/logo-new-site-50percent.gif[/img]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=528537&type=2&color=red[/img][/url]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=698375&type=2&color=red[/img][/url]

atk-x
Membre actif et régulier
Messages : 64
Inscription : 14 janv. 2012, 04:01
Localisation : Spa (belgique)

Re: Recuperer variable

#19 Message par atk-x »

anthony a écrit :non pas besoin de l'indicateur ...
Juste par rapport au code la tu peut me dire si il a des erreur .
Tu crois que jvais te piquer ta stratégie ou quoi !? Se que dit autoforex n'est pas faux du tout !

C'est pour cela que j'aimerai bien voir se qu'il retourne ...

Mais vu que tu veux pas, débrouille toi tout seul alors ...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#20 Message par anthony »

AUTOFOREX oui je suis certain ;)
je demande juste si dans mon code la il y a une erreur car la console n’affiche rien .

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#21 Message par anthony »

C bon j'ai trouver l'erreur ouf!!!!!!!!! merci comme même

Avatar de l’utilisateur
AUTOFOREX
Membre actif et régulier
Messages : 97
Inscription : 05 janv. 2012, 14:04

Re: Recuperer variable

#22 Message par AUTOFOREX »

anthony a écrit :C bon j'ai trouver l'erreur ouf!!!!!!!!! merci comme même
Un petit effort pour la culture populaire, c'était donc quoi cette erreur ? :)
[url]http://www.autoforex.fr/[/url]
[img]http://www.autoforex.fr/wp-content/uploads/2013/10/logo-new-site-50percent.gif[/img]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=528537&type=2&color=red[/img][/url]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=698375&type=2&color=red[/img][/url]

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Recuperer variable

#23 Message par anthony »

Metre la fonction le tout de la fonction start dans une boucle while qui se repete que si le X et =1 et donc a chaque passage d'un trade j’incrémente de 1 la variable X et sa marche ... :?

Répondre