Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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.
Tomcat98Tomcat98
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
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 ;
"
Tomcat98Tomcat98
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
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.
Tomcat98Un 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))) ;
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 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 ?
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.