[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 612

 
rigonich:

Commençons :

1.Si(Stoch_1>Stoch_2) flag1=1 ; , alors la condition qui la suit (Stoch_1<Stoch_2 && flag1==1) ne peut en principe pas être vraie, car si Stoch_1<Stoch_2 flag1==0 et si flag1==1alors Stoch_1>Stoch_2. il en est de même pour toutes les conditions suivantes dans cette fonction, donc seul le flag1 peut changer la valeur. Autrement dit, votre programme exécutera les deux premières lignes, sautera latroisième, exécutera laquatrième, sautera lacinquième, exécutera la sixième, exécutera la septième et sautera toutes les autres.


Vous avez tort, parce que vous ne comprenez pas le problème. C'est le cas, et tout fonctionne parfaitement, exactement comme je l'entends. Peut-être que le code pourrait être simplifié, mais maintenant ce n'est plus à la masse... Je dois juste finir l'EA entière et déjà regarder le REST de l'idée de trading qu'elle contient.....

et la programmation pour le plaisir de la programmation ne m'intéresse pas beaucoup...

 
xant:

Oui, j'ai fait comme vous l'avez écrit. Et ça ne compile pas.

Il est évident que j'ai fait quelque chose de mal, mais je ne comprends pas quoi exactement. Vous pourriez le faire étape par étape.

Par souci d'intérêt, montrez-moi mes fonctions que vous avez converties en vos variables. Et montrez-moi le journal avec les erreurs de compilation.
 
rigonich:

Le premier ordre a un prix ouvert de1,2900 et un TP de 1,300. Le second ordre a un prix ouvert de1,2800 et un TP de 1,290. Il s'agit de paramètres différents. Le premier estBAY, le second estBAY_STOP. Il s'agit également de paramètres différents.
Mais vous avez compris, n'est-ce pas ?
 
lottamer:


Vous avez tort parce que vous ne comprenez pas l'essentiel. Et c'est le cas, et tout fonctionne parfaitement comme je le souhaite. Peut-être que le code pourrait être simplifié, mais maintenant ce n'est plus une question de gras... Je dois juste terminer l'EA entier et déjà regarder le retour sur l'idée de trading qu'il contient.....

Je ne suis pas intéressé par la programmation pour le plaisir de programmer...


Je pense que c'est exactement ce que vous avez - la programmation pour le plaisir de la programmation. Votre fonction ne fait rien d'autre que de surcharger le CPU.

J'ai commencé à programmer après cinq ans d'étude du marché, de développement et d'essai de diverses stratégies, lorsque j'ai réalisé que la stratégie de trading (réussie) développée par moi et testée manuellement 20 fois sur l'historique, premièrement, n'a pas d'analogues, qu'ils peuvent être trouvés dans kodobase, et deuxièmement, même avec des paramètres proches des limites des capacités techniques, elle fixe des exigences qui sont impossibles pour les humains, et peuvent être facilement satisfaites même par l'ordinateur le plus faible (par exemple, rester avec votre ordinateur pendant une semaine ou plus).

 
yosuf:
Mais je suppose que vous avez compris ?


Il suffit de placer un ordre en suspens avec les paramètres que vous souhaitez.

P.S. Dans l'EA -- juste après l'ouverture de l'ordre.

 
rigonich:


Il suffit de placer un ordre en attente avec les paramètres que vous souhaitez.

P.S. Dans l'EA -- juste après l'ouverture de l'ordre.

Quel est le code ?
 
yosuf:
Quel est le code ?


int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0,arrow_color=CLR_NONE)
Fonction de base utilisée pour ouvrir une position ou définir un ordre en suspens.
Renvoie le numéro de ticket qui est attribué à l'ordre par le serveur de négociation ou -1 en cas d'échec. Pour obtenir plus d'informations sur l'erreur, appelez GetLastError().
Notes.
Lors de l'ouverture d'un ordre au marché (OP_SELL ou OP_BUY), seuls les derniers cours acheteur (pour la vente) ou vendeur (pour l'achat) peuvent être utilisés comme cours d'ouverture. Si l'opération est effectuée pour un instrument financier différent de l'instrument actuel, alors pour obtenir les derniers cours pour cet instrument, il faut utiliser la fonction MarketInfo() avec le paramètre MODE_BID ou MODE_ASK. Vous ne pouvez pas utiliser un prix estimé ou non normalisé. Si le prix d'ouverture demandé n'était pas dans le flux de prix ou si le prix demandé n'est pas normalisé en fonction du nombre de décimales, l'erreur 129 (ERR_INVALID_PRICE) sera générée. Si le prix d'ouverture demandé est gravement dépassé, une erreur 138 (ERR_REQUOTE) est générée quelle que soit la valeur du paramètre slippage. Si le prix demandé est périmé mais toujours présent dans le flux de prix, la position sera ouverte au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+slippage.

Les prix StopLoss et TakeProfit ne doivent pas être trop proches du marché. La distance minimale de stop en pips peut être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. L'erreur 130 (ERR_INVALID_STOPS) est générée en cas d'arrêts erronés ou non normalisés.

Lorsque vous placez un ordre en suspens, le prix d'ouverture ne peut pas être trop proche du marché. La distance minimale du prix en suspens par rapport au prix actuel du marché en points peut également être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. Si le prix d'ouverture de l'ordre en attente est incorrect, l'erreur 130 (ERR_INVALID_STOPS) sera générée.

Sur certains serveurs commerciaux, il est possible d'interdire l'expiration des ordres en attente. Dans ce cas, une erreur 147 (ERR_TRADE_EXPIRATION_DENIED) sera générée lors de la tentative de définir une valeur non nulle dans le paramètre d'expiration.

Sur certains serveurs commerciaux, il est possible de fixer une limite au nombre total d'ordres ouverts et en attente. Si cette limite est dépassée, une nouvelle position ne sera pas ouverte (aucun ordre en attente ne sera défini) et le serveur de négociation renverra l'erreur 148 (ERR_TRADE_TOO_MANY_ORDERS).
Paramètres :
symbole - Nom de l'instrument financier avec lequel l'opération commerciale est exécutée.
cmd - Opération commerciale. Peut être l'une des valeurs commerciales.
volume - Nombre de lots.
prix - Prix d'ouverture.
glissement - Glissement de prix maximum autorisé pour les ordres de marché (ordres d'achat ou de vente).
stoploss - Le prix de clôture d'une position lorsque la perte est atteinte (0 s'il n'y a pas de perte).
takeprofit - Le prix de clôture d'une position lorsque le niveau de rentabilité est atteint (0 s'il n'y a pas de niveau de rentabilité).
commentaire - Texte de commentaire de commande. La dernière partie du commentaire peut être modifiée par le serveur de négociation.
magie - Numéro magique de la commande. Peut être utilisé comme un identifiant défini par l'utilisateur.
expiration - Heure d'expiration de l'ordre en cours.
couleur de la flèche - Couleur de la flèche d'ouverture sur le graphique. Si le paramètre est absent ou si sa valeur est CLR_NONE, la flèche d'ouverture n'apparaît pas sur le graphique.
Exemple :
 int ticket ; if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25) { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point, "My order #"+counter,16384,0,Green) ; if(ticket<0) { Print("OrderSend failed with error #",GetLastError()) ; return(0) ; } }.
 
lottamer:

et même si votre code a donné 24 erreurs dans le compilateur !!! merci quand même pour l'aide négligente.... pour l'idée... (maintenant ça marche - bien que j'ai essayé de faire ça mais la ponctuation a échoué)


Je n'ai pas essayé de le compiler, j'ai juste mis les parenthèses ! Sinon, ils ne fonctionneraient pas du tout. J'ai montré comment ils doivent être. Le reste de la logique n'est pas encore clair. Je me souviens, en mettant chaque drapeau suivant, vous ,,demandiez le contraire de la condition précédente, tout en vérifiant si le drapeau était vrai....

En fait, mon premier commentaire vous invitait à reconsidérer ce que vous aviez écrit, en vérifiant la référence.

 
des conseils pour le débutant !!!! le conseiller est désactivé dans le terminal mais le stoploss est déclenché, est-ce possible ?
 
tolik73:
un conseil pour un débutant !!!! le conseiller est désactivé dans le terminal mais le stoploss est déclenché, est-ce possible ?

Bien sûr qu'elle l'est.