Comment coder ? - page 23

 
islandrock:
ce code ne fait pas expirer chaque transaction ouverte par mon EA 12 heures après son ouverture...

Le délai d'expiration des ordres ne fonctionne que pour les ordres en attente. Si OrderSend() est OP_BUY ou OP_SELL, vous devez programmer votre ordre dans le code. Voici un exemple simple.

int OrderTime;

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask+TakeProfit*Point,"timetest",16384,0,Green)

OrderTime=TimeCurrent();

int total = OrdersTotal();

for(int cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if((OrderType() <= OP_SELL) && (OrderSymbol() == Symbol()) )

{

if(OrderType()==OP_BUY && TimeCurrent()-OrderTime>(12*60)*60)

{

OrderClose(OrderTicket(),LotsOptimized(),Bid,3,Violet);

}

}

}

Wackena

 

Le code ne fonctionne pas correctement

J'ai utilisé ce programme pour m'envoyer par e-mail l'état de mon compte toutes les heures. Cependant, après l'avoir compilé et chargé, il a envoyé cet e-mail parfaitement l'heure suivante à la minute 59, comme il est censé le faire, puis il n'en a plus jamais envoyé d'autre. Qu'est-ce que je fais de mal ?

je n'en ai pas besoin à la minute #59 j'en ai juste besoin toutes les heures ! !!

bool mail ;

int start()

{

if (Minute()>=59 && !mail){

SendMail("Account Status","Account Balance is="+DoubleToStr(AccountBalance(),2)+"_Account Equity is="+DoubleToStr(AccountEquity(),2)+

"_Les bénéfices du compte sont="+DoubleToStr(AccountProfit(),2)+ "_La marge du compte est="+DoubleToStr(AccountMargin(),2)+

"_La marge libre du compte est="+DoubleToStr(AccountFreeMargin(),2)) ;

mail=true ;

}

 

peut-être que vous devez juste mettre mail = false à un moment donné ou simplement supprimer ce test sur la variable mail car bien sûr le code actuel n'enverra qu'un seul mail.

 

quel test sur la variable mail ?... je ne comprends pas bien, expliquez-moi...

Et si juste après mail=true je mettais

if (minute()<=58 && !mail)

mail= false ;

je pense que cela pourrait fonctionner ?...

Je pense que c'est mal codé

 

Je pense que vous pouvez mettre

if (minute()<=58 && mail) // attention pas !mail mais mail

mail= false ;

et cela devrait être mais à l'extérieur de votre premier if , donc pas après mail = true ; mais après }

Il y a probablement de meilleures façons de coder cela, mais cela devrait fonctionner.

 

Je vais essayer

Merci, je vais essayer... je vous le dirai dans deux heures.

 

super ça marche.... ou du moins ça en a l'air

 

? ? besoin d'aide avec cette partie du code

Quelqu'un peut-il me dire comment écrire correctement ce code ? J'essaie d'isoler les transactions d'achat et de vente ouvertes individuellement...

i.e. : si l'offre ouverte > 2.

si la demande ouverte > 2

J'ai compris le reste, mais je n'arrive pas à coder cette partie correctement.

Je sais que c'est simple mais je m'arrache les cheveux.

 

Quelqu'un ?

Quelqu'un ? Wow, peut-être que c'était une mauvaise question.

 

if(Open[0] > 2){ //offre ouverte

//votre code

}

if(Open[0]+(Ask-Bid) > 2){ //ouvert ask

//votre code

}

Selon votre courtier, le backtesting de l'open ask peut ne pas fonctionner.

Raison: