[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 341
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
Les paramètres d'indication sauvegardés sont "introduits" dans les indicateurs une fois lors de l'initialisation du modèle, puis "ils deviennent complètement indépendants"/.
Tous les paramètres modifiés de l'indicateur sont enregistrés dans le modèle. Si vous avez modifié les paramètres de l'indicateur, enregistrez à nouveau le modèle.
>> Merci !
mazepa 08.12.2009 17:42
REPONSE : sur le CODE !
Si je comprends l'algorithme, alors à l'heure fixée nous ouvrons un achat (vente), si le prix a passé >10 pips dans l'autre direction, alors nous fermons l'ordre et nous nous positionnons dans la direction opposée.
Pour la clôture, j'utilise ma propre fonction universelle.
//Fonction permettant de clôturer tous les ordres du marché dans--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0 ; i<OrdersTotal() ; i++) //croiser tous les ordres pour toutes les devises
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si l'ordre est sélectionné avec succès
{
if (OrderSymbol() !=Symbol()) continue ; //si l'ordre est dans la mauvaise devise, continuer la recherche
{
switch(OrderType()) //dans l'ordre requis, déterminer le type (Bue_Sell) et le fermer
{
case 0 :OrderClose(OrderTicket(),OrderLots(),Bid,2);break ;
cas 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break ;
}
}
}
}
return ;
}
Donc maintenant, avant d'ouvrir dans la direction opposée, il suffit d'écrire _CloseAllOrder()
Mes amis, je ne fais qu'apprendre. S'il vous plaît, ne regardez pas le contenu du programme, aidez-moi simplement à trouver un bug dans le programme :
int start()
{
switch(CurrentState)
{
case STATE_SHORT :
MyOrderTicket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red) ;
OrderSelect(MyOrderTicket,SELECT_BY_TICKET) ;
if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid+90*Point,Bid-Profit1*Point,0,Green)==true)
{CurrentState=STATE_1 ;
break ;
}
case STATE_1 :
OrderSelect(MyOrderTicket,SELECT_BY_TICKET) ;
if(Ask <= OrderTakeProfit())
{CurrentState=STATE_SHORT ;
break ;
}
if(Bid >= (OrderOpenPrice()+Profit1*Point)
{CurrentState=STATE_SHORT ;
break ;
}
}
//----
return(0) ;
}
L'erreur est la suivante : \``Fin_du_programme'' - parenthèse gauche déséquilibrée. Où se trouve l'erreur ?
Mes amis, je ne fais qu'apprendre. S'il vous plaît, ne regardez pas le contenu du programme, aidez-moi simplement à trouver un bug dans le programme :
Je l'ai :
besoin :
Comment déclarer un tableau unidimensionnel sans appliquer un enregistrement à chaque cellule de la mémoire (est-ce possible ?)
mais par une séquence unidimensionnelle
ou la séquence unidimensionnelle est seulement pour les constantes numériques et logiques !!!?
Je l'ai :
>> nous devons le faire :
Merci, mon ami !
Une dernière question. Si (OrdersTotal()==0) ce... si le nombre d'ordres ouverts est égal à zéro... alors comment sera-t-il...si le nombre d'ordres ouverts POUR LA JOURNEE est égal à zéro.
N'y a-t-il pas quelque chose comme OrdersDayTotal ?
non, mais nous pouvons toujours écrire notre propre fonction)
Compte les ordres d'achat et de vente, pour un symbole donné, ouverts aujourd'hui. Aucune commande en cours.
if(OrdersDayTotal(Symbol())==0) {...}
quelque chose comme ceci)
mazepa 08.12.2009 17:42
RÉPONSE : Sur le COD !
Si je comprends l'algorithme, nous ouvrons un ordre d'achat (vente) à l'heure fixée, si le prix passe >10 pips dans l'autre direction, nous fermons l'ordre et passons du côté opposé.
Pour la fermeture, j'utilise ma propre fonction universelle.
//Fonction pour fermer tous les ordres de marché dans la fenêtre--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0 ; i<OrdersTotal() ; i++) //collecter tous les ordres pour toutes les devises
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si la commande est sélectionnée avec succès
{
if (OrderSymbol()!=Symbol()) continue ; //si la commande est dans la mauvaise devise, continuer la recherche
{
switch(OrderType()) //lorsque l'ordre requis est soumis, définissez son type (Bue_Sell) et fermez-le.
{
cas 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break ;
cas 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break ;
}
}
}
}
retour ;
}
Donc maintenant, il suffit d'écrire _CloseAllOrder() avant d'ouvrir dans la direction opposée.
La fonction est la bombe, ça m'a pris quelques pages. Merci beaucoup.mazepa 08.12.2009 17:42
RÉPONSE : Sur le COD !
Si je comprends bien l'algorithme, nous ouvrons un ordre d'achat (de vente) à l'heure fixée, si le prix a bougé de >10 pips dans l'autre direction, nous fermons l'ordre et allons dans la direction opposée.
Pour la fermeture, j'utilise ma propre fonction universelle.
//Fonction pour fermer tous les ordres de marché dans la fenêtre--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0 ; i<OrdersTotal() ; i++) //collecter tous les ordres pour toutes les devises
{
if (OrderSelect(i,SELECT_BY_POS)==true) //si la commande est sélectionnée avec succès
{
if (OrderSymbol()!=Symbol()) continue ; //si la commande est dans la mauvaise devise, continuer la recherche
{
switch(OrderType()) //lorsque l'ordre requis est soumis, définissez son type (Bue_Sell) et fermez-le.
{
cas 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break ;
cas 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break ;
}
}
}
}
retour ;
}
Donc maintenant, il suffit d'écrire _CloseAllOrder() avant d'ouvrir dans la direction opposée.
La fonction est la bombe, ça m'a pris quelques pages. Merci beaucoup.