[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

 
E_mc2 >> :

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

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

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.

 
Urain >> :

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...

 
E_mc2 >> :

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".

Dossiers :
wxinptvxq.mq4  1 kb
 

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

Dossiers :
magkimiv.mq4  15 kb
 

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 :

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int 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());
      }
  }
 

Pouvez-vous me dire comment obtenir un signal à partir d'un rsi lissé ? (MA => RSI).