[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1095

 
Je n'ai pas écrit tout de suite un EA sans indicateurs, il n'y a pas d'indicateurs, juste des ordres d'achat et de vente et ainsi de suite--- et ensuite les périodes qui ont changé dans le testeur et le résultat final est toujours rien je ne comprends pas
 
5drakon:
Je n'ai pas écrit tout de suite un EA sans indicateurs, il n'y a pas d'indicateurs, juste des ordres d'achat et de vente et ainsi de suite--- et ensuite les périodes qui ont changé dans le testeur et le résultat final est toujours rien je ne comprends pas

Vous ne pouvez rien dire sans le conseiller expert lui-même. Je ne fais que supposer.
 

Que dois-je faire avec Ilan6 pour qu'il commence à commercer ? Combien d'argent commence-t-il à fonctionner et fonctionne-t-il sur un centime ?

 
5drakon:
Je n'ai pas écrit tout de suite un EA sans indicateurs, il n'y a pas d'indicateurs, juste des ordres d'achat et de vente et ainsi de suite--- et ensuite les périodes qui ont changé dans le testeur et le résultat final est toujours rien je ne comprends pas

Oui, nous devrions regarder le code lui-même. N'a-t-il pas de stratégie, sur la base de laquelle il ouvre et ferme les ordres ?
 

Pouvez-vous me dire où se trouve l'erreur ? S'il y a un ordre de marché pour vendre notre instrument financier, alors fermez-le et s'il n'y a pas d'ordre d'achat, alors ouvrez un ordre d'achat. Tout est normal ici avec la fermeture, mais il les ouvre non pas une fois, mais à chaque tic.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

Pouvez-vous me dire où se trouve l'erreur ? S'il y a un ordre de marché pour vendre notre instrument financier, alors fermez-le et s'il n'y a pas d'ordre d'achat, alors ouvrez un ordre d'achat. Tout est normal ici avec la fermeture, mais il les ouvre non pas une fois mais à chaque tic.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------


Ou est-il préférable de le faire ? S'il n'y a pas d'ordre de vente, nous n'ouvrirons pas d'ordre d'achat.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

 

Règle pour l'exécution de l'instruction for


Lors du passage du contrôle à l'instruction for, l'Expression_1 est exécutée. Tant que la Condition de l'instruction for est vraie : passer le contrôle à la première instruction du corps de la boucle, et après que toutes les instructions du corps de la boucle aient été exécutées, exécuter l'Expression_2 et passer le contrôle à l'en-tête pour vérifier si la Condition est vraie. Si la condition de l'instruction for est fausse : passer le contrôle à l'instruction qui suit l'instruction for.

Dites-moi : un tick est arrivé, la condition de l'opérateur for est vraie, le contrôle est passé plus loin - tout cela se produira pendant un tick, c'est-à-dire que tous ces opérateurs seront exécutés pendant un tick ou pas.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Ou quels sont exactement les opérateurs qui seront exécutés pendant ce tick ? Toutes ces opérations ou celles qui seront exécutées au cours du prochain tick ? Expliquez...

 
kolyango:

Règle pour l'exécution de l'instruction for


Lors du passage du contrôle à l'instruction for, l'Expression_1 est exécutée. Tant que la Condition de l'instruction for est vraie : passer le contrôle à la première instruction du corps de la boucle, et après que toutes les instructions du corps de la boucle aient été exécutées, exécuter l'Expression_2 et passer le contrôle à l'en-tête pour vérifier si la Condition est vraie. Si la condition de l'instruction for est fausse : passer le contrôle à l'instruction qui suit l'instruction for.

Dites-moi : un tick est arrivé, la condition de l'opérateur for est vraie, le contrôle est passé plus loin - tout cela se produira pendant un tick, c'est-à-dire que tous ces opérateurs seront exécutés pendant un tick ou pas.

Ou quels sont exactement les opérateurs qui seront exécutés pendant ce tick ? Toutes ces opérations ou celles qui seront exécutées au cours du prochain tick ? Expliquez...


La fonction start() est exécutée lorsque le premier tick arrive. Si d'autres ticks arrivent pendant l'exécution de la fonction, ils seront ignorés.

La fonction de démarrage sera exécutée entièrement selon sa logique.

 
kolyango:

Règle de pour l'exécution de la déclaration


Lorsque vous passez le contrôle à l'instruction for, exécutez l'Expression_1. Si la Condition de l'instruction for est vraie : passez le contrôle à la première instruction du corps de la boucle, et après que toutes les instructions du corps de la boucle aient été exécutées, exécutez l'Expression_2 et passez le contrôle à l'en-tête pour vérifier si la Condition est vraie. Si la condition de l'instruction for est fausse : passer le contrôle à l'instruction qui suit l'instruction for.

Dites-moi : un tick est arrivé, la condition de l'opérateur for est vraie, le contrôle est passé plus loin - tout cela se produira pendant un tick, c'est-à-dire que tous ces opérateurs seront exécutés pendant un tick ou pas.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Ou quels sont exactement les opérateurs qui seront exécutés pendant ce tick ? Toutes ces opérations ou celles qui seront exécutées au cours du prochain tick ? Expliquez...


Je l'ai compris. Tous les opérateurs seront exécutés si la condition est épuisée.
 
Comment faire pour que ce code vérifie si nous avons déjà un ordre d'achat ou non avant d'acheter. S'il n'y a pas d'ordre d'achat sur le marché, alors seulement exécuter l'achat ?
Raison: