Aide au codage - page 405

 
Tomcat98:
Bonjour Mladen,

Voici ce que dit la boucle pour les ordres en attente où Multi_Indic_00 est un oscillateur et Up_Prime_00 est un niveau défini.

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

//---- Vérifier et fermer si le type d'ordre est limite et que la tendance a changé.

if(OrderType()==OP_BUYLIMIT)

if(( Multi_Indic_00 ) <= (Up_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket()) ;

}

if(OrderType()==OP_SELLLIMIT)

si(( Multi_Indic_00 ) >= ( Down_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket()) ;

}

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

Eh bien, rien de spécial....

Bon trading.

Sincèrement.

Tomcat98

Tomcat98

Ce que j'aimerais voir, c'est l'instruction de boucle for(). Si vous avez une instruction for comme celle-ci :

for (int i = 0 ; i < OrdersTotal() ; i++)

alors certains ordres seront manqués si entre-temps certains ordres ont été fermés ou supprimés. D'autre part, si la boucle for() se déroule comme suit :

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

alors tous les ordres seront traités

 

Mladen ,

Oh, je vois :

Le voici pour le processus de fermeture :

"

for(int i=0;i<OrdersTotal();i++)

{

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

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue ;

"

Tomcat98

 
Tomcat98:
Mladen ,

Oh, je vois :

Le voici pour le processus de fermeture :

"

for(int i=0;i<OrdersTotal();i++)

{

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

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue ;

"

Tomcat98

Tomcat98

Changez la boucle en

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

et cela devrait être OK

 

Mladen,

Bingo !

Il fait maintenant exactement ce dont j'avais besoin.

Merci beaucoup pour votre aide précieuse.

"Les gens ne se soucient pas de ce que vous savez jusqu'à ce qu'ils sachent à quel point vous vous souciez d'eux".

- Theodore Roosevelt

Sincèrement.

Tomcat98

 
Tomcat98:
Mladen,

Bingo !

Il fait maintenant exactement ce dont j'avais besoin.

Merci beaucoup pour votre aide précieuse.

"Les gens ne se soucient pas de ce que vous savez jusqu'à ce qu'ils sachent à quel point vous vous souciez".

- Theodore Roosevelt

Sincèrement.

Tomcat98

Un codage heureux

 

Bonjour Mladen, merci pour tout, ça marche bien maintenant...

maintenant je suis coincé avec un indicateur créé qui ne se recharge pas, donc à chaque fois qu'une bougie se ferme je dois recharger l'indicateur, pouvez-vous m'aider à réparer cela ? voici une partie du code (c'est un indicateur de tendance basé sur une idée simple de gaps, merci :

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicateur_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[] ;

int OnInit() {

SetIndexBuffer(0,FirstBuy) ;

SetIndexBuffer(1,FirstSell) ;

SetIndexBuffer(2,Buy) ;

SetIndexBuffer(3,Sell) ;

for(int i=0 ; i<4 ; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233) ;

SetIndexArrow (1,234) ;

SetIndexArrow (2,233) ;

SetIndexArrow (3,234) ;

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0 ;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1) ; i>=0 ; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE ;

datetime when=Time ;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close ;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

si(lastSignal==BUY) {

FirstSell=Close ;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0 ;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i))) ;

 
daniel1983:
Salut Mladen, merci pour tout, ça marche bien maintenant...

maintenant je suis coincé avec un indicateur créé qui ne se recharge pas donc à chaque fois qu'une bougie se ferme je dois recharger l'indicateur, pouvez-vous m'aider à réparer cela ? voici une partie du code (c'est un indicateur de tendance basé sur une idée simple de gaps, merci :

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicateur_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[] ;

int OnInit() {

SetIndexBuffer(0,FirstBuy) ;

SetIndexBuffer(1,FirstSell) ;

SetIndexBuffer(2,Buy) ;

SetIndexBuffer(3,Sell) ;

for(int i=0 ; i<4 ; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233) ;

SetIndexArrow (1,234) ;

SetIndexArrow (2,233) ;

SetIndexArrow (3,234) ;

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0 ;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1) ; i>=0 ; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE ;

datetime when=Time ;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close ;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

si(lastSignal==BUY) {

FirstSell=Close ;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0 ;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i))) ;

daniel1983

Essayez-le comme ceci :

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link ""

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicator_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-2); i>=0; i--)

{

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when,"Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

if(lastSignal==BUY) {

FirstSell=Close;

SoundAlert(when,"Sell");}

lastSignal=SELL;}

}

return(rates_total);

}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));

}

}

 

Bonjour Mladen, merci mais en écrivant le code de cette façon, il y a des signaux manquants, veuillez regarder j'ai fait une image les comparant sur le graphique quotidien USDJPY :

Qu'est-ce que cela peut être ?

Dossiers :
 
daniel1983:
Bonjour Mladen, merci mais en écrivant le code de cette façon, il y a des signaux manquants, je vous invite à regarder. J'ai fait une image pour les comparer sur le graphique quotidien USDJPY :

Qu'est-ce que cela peut être ?

daniel1983

Dans votre code, vous avez utilisé des valeurs futures (ces :

High-Close

Clôture basse

J'ai utilisé Close - qui est une valeur précédente normale. Changez-le en mais alors il se repeindra

 

Chers mrtools et mladen

Quelqu'un peut-il m'aider ? La moyenne mobile Tom Demark est un indicateur clé dans ma stratégie, cependant, une alarme serait très utile lorsqu'un nouveau palier est indiqué ; je serais très reconnaissant si une alarme pouvait être codée dans l'indicateur. Dans l'attente de votre aide, je vous remercie.

Merci beaucoup.

Dossiers :