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
bool order= 0;
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Votre double déclaration de billet.
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
La déclaration de ticket cache ... bla bla bla ? tu vois je suis le compilateur humain.
Supprimez le deuxième int.
Je mets
bool order et
int ticket
dans les variables globales, et le reste du code dans OnTick, mais il n'y a toujours pas d'entrée maintenant.
Non compilé, non testé
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Marco : J'ai supprimé l'int dupliqué, mais maintenant aucun trade n'est fait, j'ai besoin d'un trade, si le prix> nuage ichimoku, ce code était d'abord génial, mais il a continué à créer de nouveaux trades si le prix était au-dessus du nuage.
J'ai juste besoin d'aide pour coder de manière à ce que le script s'arrête après la première transaction.
Honest Knave : j'ai essayé votre code, j'ai juste défini magic_no qui manquait, cela fonctionne bien, il attend pour le nouveau trade que le prix touche à nouveau le nuage, cela sera vraiment utile pour les prochains projets, mais
j'ai juste besoin qu'il s'arrête après le 1º trade, que dois-je faire ?
Merci à tous pour votre aide
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
C'est le problème.
int ticket;
void OnTick()
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket>-1)
{
order=1;
}
}
}
}
Essayez donc ceci et je l'ai déjà signalé dans quelques messages.
Notez également que l'OrderSend renvoie soit le numéro de ticket, soit -1 moins un s'il échoue.
Honest Knave : j'ai essayé votre code, j'ai juste défini magic_no qui manquait, cela fonctionne bien, il attend un nouveau trade si le prix touche à nouveau le nuage, cela sera vraiment utile pour les prochains projets, mais
J'ai juste besoin qu'il s'arrête après le premier trade, que dois-je faire ?
Merci à tous pour votre aide
Il ne devrait pas trader plus d'une fois... ? C'est ce qu'il fait :
{
double up = iIchimoku(NULL,5,9,26,52,3,0),
down = iIchimoku(NULL,5,9,26,52,4,0);
static bool was_above = true;
bool is_above = (MathMax(up,down)< Bid);
if(!was_above && is_above && open_orders()<1)
{
if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
{
printf("OrderSend() failed. Error code: %i",GetLastError());
}
}
was_above = is_above;
}
int open_orders()
{
int count = 0;
for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
{
if(!OrderSelect(i,SELECT_BY_POS)) continue; // select the order
if(OrderSymbol() != _Symbol) continue; // optional check for same symbol
if(OrderMagicNumber()!= magic_no) continue; // optional check for magic number
if(OrderType() < 2) count++; // 0 == OP_BUY and 1 == OP_SELL
}
return(count);
}
Honest Knave :
Votre EA est génial, mais il crée de nouveaux trades si le prix descend à nouveau jusqu'au nuage d'ichimoku et revient ensuite à la hausse. Il ne répète pas les ordres dans la même bougie, comme le problème que j'ai eu, et je vais apprendre beaucoup par cet échantillon que vous m'avez donné, pour créer de nouveaux EA, mais j'ai besoin d'un moyen de coder qu'après le premier trade, il n'y ait pas de nouveau trade.
Mais j'ai besoin d'un moyen de coder qu'après la première transaction, l'EA ou le script se ferme immédiatement, donc je n'ai besoin que d'une seule transaction.
Marco : J'ai essayé votre nouvelle mise à jour, mais il ne fait aucun trade, j'ai mis juste la façon dont vous avez posté la dernière, juste enlevé le deuxième int, dans le ticket. Mais le premier trade n'est jamais fait sur strategy tester, que faire maintenant ?
Honest Knave :
Votre EA est super, mais il crée de nouveaux trades si le prix descend à nouveau jusqu'au nuage d'ichimoku et revient ensuite à la hausse. Il ne répète pas les ordres dans la même bougie, comme le problème que j'ai eu, et je vais apprendre beaucoup par cet échantillon que vous m'avez donné, pour créer de nouveaux EA, mais j'ai besoin d'un moyen de coder qu'après le premier trade, il n'y ait pas de nouveau trade.
Mais j'ai besoin d'un moyen de coder qu'après le premier trade, l'EA ou le script se ferme immédiatement, donc je n'ai besoin que d'un seul trade.
Je ne comprends pas ce que vous voulez dire.
Ce code ne peut pas ouvrir plus d'un ordre à la fois.
Mais si l'ordre se ferme, et que le déclencheur se produit à nouveau, il en ouvrira un autre.
Voulez-vous dire que vous voulez qu'une seule transaction soit ouverte JAMAIS ?
Je ne comprends pas ce que vous voulez dire.
Ce code ne peut pas ouvrir plus d'un ordre à la fois.
Mais si l'ordre se ferme, et que le déclencheur se produit à nouveau, il en ouvrira un autre.
Voulez-vous dire que vous voulez qu'une seule transaction soit ouverte à chaque fois ?