[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 142
Pourquoi en avez-vous besoin ? Dites-m'en plus, il y a peut-être une solution, et vous ne savez pas comment poser les bonnes questions pour que les gens comprennent.
J'ai deux solutions pour ce que vous avez écrit, cela prendrait trop de temps d'en écrire deux en même temps :)
..
À propos, il est préférable de joindre ces longs codes sous forme de fichier.
Et pour le code il y a un bouton spécial SRC
Oui, j'en ai besoin pour ne pas manquer le signal). Une fois qu'une alerte se déclenche, il est facile de la manquer, surtout la nuit((( Qu'est-ce que ça veut dire - alarme ??? Que va-t-il se passer ?
J'ai changé la ligne... J'ai créé un nouvel indicateur Alarme..... mais je ne comprends pas... il fonctionne tout le temps, que l'indicateur émette un signal ou non... Même s'il n'y a pas de signal de l'indicateur, le réveil sonne continuellement)))) Il n'y a pas de signal, mais le réveil fonctionne...
J'en ai besoin pour ne pas manquer le signal ;)) Il ne déclenche une alerte qu'une seule fois, facile à manquer surtout la nuit((( Et qu'est-ce que ça veut dire - alarme ??? Que va-t-il se passer ?
Modifiez la ligne dans votre indicateur comme décrit ci-dessus.
Compilez et exécutez l'indicateur ci-joint.
Il sonnera à chaque tic, jusqu'à ce que vous désactiviez l'indicateur ou réinitialisiez la variable globale "Alarme".
J'ai inséré les fonctions KimIV pour ouvrir un ordre (GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()). Je n'avais pas encore atteint la fermeture. J'ai créé sa propre fonction de données d'indicateur void Indicat_Var(), pour avoir les données d'indicateur dans un endroit et pour l'utiliser à n'importe quel endroit du programme.
Lorsque vous accédez avec la fonction CheckForOpen() à Indicat_Var() tout va bien, mais lorsque vous accédez avec la fonction CheckForClose() à Indicat_Var() les ordres ne sont pas fermés je ne comprends pas pourquoi.
Je pense également que les fonctions CalculateCurrentOrders(string symbol) et ExistPositions() font double emploi.
La fonction de calcul des lots était initialement prévue dans l'EA. Si vous en avez ajouté un autre (GetSizeLot()), alors (au moins) supprimez celui d'origine - LotsOptimized()
Veuillez m'aider à comprendre pourquoi mes ordres ouverts ne se ferment pas lorsque la tendance change (conditions ouvertes). Et comment puis-je réparer cette erreur ?
Le code est comme ça pour moi :
externint TP=40;//уровень Take Profitexternint SL=0;//уровень Stop Lossexterndouble Lots1=0.2;//лот основной сделкиexterndouble Lots2=0.1;//лот вспомогательных сделок externint slippage=2;//проскальзованиеint MagicNumber1=5345;//магическое число сделки BUYint MagicNumber2=1612;//магическое число сделки SELL// переменная для пятизнаковint BrokerDecimal =1;// и просто нужные переменные (типа флажки)double ticketbuy;double ticketsell;int init(){// Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель if(Digits==3||Digits==5) BrokerDecimal=10;// Перемножить все уровни в пипсах на множитель
SL = SL * BrokerDecimal;
TP = TP * BrokerDecimal;return(0);}int start(){// Рассчеты и анализ индикаторовdouble jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORJAW,1);//синяя линия (челюсть)double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORTEETH,1);//красная линия (зубы)double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORLIPS,1);//зеленая линия (губы)double lastClose=iClose(NULL,0,1);// Собственно тело программы if((OrderSelect( ticketbuy, SELECT_BY_TICKET, MODE_TRADES)==false||OrderCloseTime()>0)&& lips> jaw && lastClose> lips)// условие выставления ордеров БАЙ
SEND_BUY();// вынесем "модуль" выставления ордера бай - добавить внизуif((OrderSelect( ticketsell, SELECT_BY_TICKET, MODE_TRADES)==false||OrderCloseTime()>0)&& jaw> lips && lastClose< jaw)// условие выставления ордеров СЕЛЛ
SEND_SELL();// вынесем "модуль" выставления ордера сэлл - добавить внизуif(OrdersTotal()>=1){if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES)){if(OrderType()==OP_BUY){if(( lips== jaw || lips== teen)&& lastClose== lips)// условия закрытия сделки БАЙwhile(OrdersTotal()>0){
CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");}}if(OrderType()==OP_SELL){if(( jaw== lips || jaw== teen)&& lastClose== jaw)// условия закрытия сделки СЕЛЛwhile(OrdersTotal()>0){
CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");}}}else{Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());return(-1);}}return(0);}// "модуль" выставления ордера байvoid SEND_BUY(){double sl_buy;if(! SL){
sl_buy=0;}else{
sl_buy=Ask- SL*Point;}
ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask, slippage, sl_buy,Ask+ TP*Point,"take_trend", MagicNumber1,0,Blue);if( ticketbuy ==-1){Alert(Symbol(),"ошибка:бай",GetLastError());return(-1);}if( ticketbuy >1)Alert(Symbol(),"бай - ок !");}// "модуль" выставления ордера сэллvoid SEND_SELL(){double sl_sell;if(! SL){
sl_sell=0;}else{
sl_sell=Bid+ SL*Point;}
ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid, slippage, sl_sell,Bid- TP*Point,"take_trend", MagicNumber2,0,Red);if( ticketsell ==-1){Alert(Symbol(),"ошибка:сэлл",GetLastError());return(-1);}if( ticketsell >1)Alert(Symbol(),"сэлл - ок !");}// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА void CloseDirect(int cntr,string comm){double closeprice;if(OrderSelect( cntr, SELECT_BY_POS, MODE_TRADES)){RefreshRates();if(OrderType()==OP_BUY)
closeprice=Bid;else
closeprice=Ask;if(OrderClose(OrderTicket(),OrderLots(), closeprice,10,Green)){Print( comm,OrderTicket());}else{Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());}}else{Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());}}
Si vous avez peur de dormir trop longtemps, changez cette ligne.
\ if ( WarningMode>0 ) PlaySound(soundfile) ; \
indicateur à celui-ci
\ si ( WarningMode>0 && shift==0) GlobalVariableSet("Alarm",1) ; \
et créer un indicateur comme ceci
Et lorsque vous vous endormez, vous réglez non seulement l'indicateur principal mais aussi le réveil.
Le réveil peut être désactivé manuellement en modifiant la valeur 0 de la variable Réveil à l'aide de la touche F3.
Pourquoi en avez-vous besoin ? Dites-m'en plus, il y a peut-être une solution, et vous ne savez pas comment poser les bonnes questions pour que les gens comprennent.
J'ai deux solutions pour ce que vous avez écrit, cela prendrait trop de temps d'en écrire deux en même temps :)
..
À propos, il est préférable de joindre ces longs codes sous forme de fichier.
Et pour le code il y a un bouton spécial SRC
Oui, j'en ai besoin pour ne pas manquer le signal). Une fois qu'une alerte se déclenche, il est facile de la manquer, surtout la nuit((( Qu'est-ce que ça veut dire - alarme ??? Que va-t-il se passer ?
J'ai changé la ligne... J'ai créé un nouvel indicateur Alarme..... mais je ne comprends pas... il fonctionne tout le temps, que l'indicateur émette un signal ou non... Même s'il n'y a pas de signal de l'indicateur, le réveil sonne continuellement)))) Il n'y a pas de signal, mais le réveil fonctionne...
J'en ai besoin pour ne pas manquer le signal ;)) Il ne déclenche une alerte qu'une seule fois, facile à manquer surtout la nuit((( Et qu'est-ce que ça veut dire - alarme ??? Que va-t-il se passer ?
Modifiez la ligne dans votre indicateur comme décrit ci-dessus.
Compilez et exécutez l'indicateur ci-joint.
Il sonnera à chaque tic, jusqu'à ce que vous désactiviez l'indicateur ou réinitialisiez la variable globale "Alarme".
Conseiller expert en moyenne mobile .
J'ai inséré les fonctions KimIV pour ouvrir un ordre (GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()). Je n'avais pas encore atteint la fermeture. J'ai créé sa propre fonction de données d'indicateur void Indicat_Var(), pour avoir les données d'indicateur dans un endroit et pour l'utiliser à n'importe quel endroit du programme.
Lorsque vous accédez avec la fonction CheckForOpen() à Indicat_Var() tout va bien, mais lorsque vous accédez avec la fonction CheckForClose() à Indicat_Var() les ordres ne sont pas fermés je ne comprends pas pourquoi.
Je pense également que les fonctions CalculateCurrentOrders(string symbol) et ExistPositions() font double emploi.
Aidez-moi à comprendre
La fonction de calcul des lots était initialement prévue dans l'EA. Si vous en avez ajouté un autre (GetSizeLot()), alors (au moins) supprimez celui d'origine - LotsOptimized()
//------------------------------------------------
En effet. Les fonctions qui déterminent la présence de positions ouvertes se dupliquent les unes les autres.
L'un d'eux peut être retiré. (Apprenez comment ils diffèrent, et lequel vous avez le plus besoin !)
//--------------------------------------------
Voir https://www.mql5.com/ru/articles/1385
Là, juste là, se trouve une modification de cette EA avec des commentaires russes dans le code.
Modification, - Exactement, en fermant.
Marquons-nous les POINTS D'OUVERTURE et de FERMETURE sur le graphique ?
Question aux professionnels : existe-t-il un tel indicateur ou script ?
qui dessine les points d'ouverture et de fermeture sur le graphique ?
d'une commande ? Il les relie par une ligne,
Le rouge est une perte. Utile pour analyser les erreurs de l'histoire !
Je pense que cette question vous a déjà été posée.
Vous pouvez faire glisser une transaction directement de l'historique du compte vers le graphique correspondant à l'aide de votre souris.
Et vous obtiendrez ce que vous cherchez.
J'ai vu le script quelque part. Je pense que I.Kim avait un tel scénario.
http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32
Demander l'aide de connaisseurs sur le Curseur avec un prix,
Merci !
Veuillez m'aider à comprendre pourquoi mes ordres ouverts ne se ferment pas lorsque la tendance change (conditions ouvertes). Et comment puis-je réparer cette erreur ?
Le code est comme ça pour moi :
Pouvez-vous me dire comment obtenir un signal à partir d'un rsi lissé ? (MA => RSI).