Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 448

 
Forexman77:
Comment le mettre en œuvre de manière approximative ? Les autres fonctions me sont familières, mais je ne comprends pas encore très bien les ordres et les tableaux.

C'est quelque chose comme ça, je suppose

 // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int Ticket[5];
   ArrayInitialize(Ticket,0);
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>5)                           // Было не более одного орд, стало не более пяти
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket[Total-1]=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total < 5 && Opn_B==true)     // Открытых орд. нет +. Было Total < 1, стало Total < 5
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
   // Закрытие ордеров
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy и есть критерий закр
        {
          for(i=0;i<5;i++)                             
          {
            if (Ticket[i]==0) continue;           

            Alert("Попытка закрыть Buy ",Ticket[i],". Ожидание ответа..");
            RefreshRates();                        // Обновление данных
         
            Ans=OrderClose(Ticket[i],Lot,Bid,2);      // Закрытие Buy

            if (Ans==true)                         // Получилось :)
            {
               Alert ("Закрыт ордер Buy ",Ticket[i]);
            }

            if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            {
               i--;
               continue;                           // Повторная попытка
            }

         }
 
Vitek2010:
Non, je vais vous expliquer - votre forum est comme un espoir pour le dernier bastion compétent du prog. et de l'insertion de la taille - c'est ainsi que l'écriture PERIOD_W1 le voitmais ni l'utilisation de la taille ni l'utilisation de points de référence fixes sous forme de dates n'obtiennent l'effet désiré. J'ai posté une question spécifique sur le vendredi - d'ailleurs votre code ne compile pas parce qu'il dit 'version' - propriété inconnue, donc si vous ne savez pas comment mettre DayOfWeek et 5 (le numéro du vendredi) dans le code, les autres options ne vous aideront pas .


Donc tu dis la mauvaise chose.

Dossiers :
vitek2010.mq4  2 kb
 

Bonjour à tous. J'affiche un indicateur qui malheureusement se fige et ne dessine pas les flèches à temps, mais seulement quand on rafraîchit le graphique... Passage à des TF différentes.

Si quelqu'un peut faire en sorte que l'indicateur se mette à jour à la fin de chaque bougie..., disons 5-10 secondes avant la fermeture de la bougie ? Ou peut-être y a-t-il un autre moyen de résoudre ce problème ?

Merci d'avance.

Dossiers :
 
Vinin:


Donc tu dis la mauvaise chose.


J'ai mis dans l'indicateur - ce qu'il montre - n'est pas clair. ma variante avait la condition de la poursuite ou le changement dans le mouvement précédent . c'est-à-dire en dessous ou au-dessus de la ligne zéro . et vous avez tout au-dessus et sur toutes les semaines ce n'est pas si simple . vous ne devriez pas dévier de la base (ma) variante et de simplifier les choses . vous devez faire sur la base de mon indicateur . Sincèrement.
 
alsu:

Quelque chose comme ça, je suppose.


Mise en place des lignes
int Ticket[5];
ArrayInitialize(Ticket,0);

au lieu deint Ticket ; des erreurs apparaissent :

'=' - parenthèse carrée gauche attendue pour un tableau('=' - parenthèse carrée gauche, attendue pour un tableau)

'>' - parenthèse carrée gauche attendue pour un tableau ('=' - parenthèse carrée gauche attendue pour un tableau)

'>' - jeton inattendu('>' - jeton inattendu)

')' - affectation attendue('' - affectation attendue )

continue" - "break" ou "continue" utilisé dans certaines boucles uniquement )

et bien d'autres choses encore.

 

Pourquoi le conseiller ouvre-t-il un nombre infini d 'ordres, aidez-moi à le réparer.

merci

extern double tp = 100 ;
double externe l = 0,1 ;




int start()
{
// 1.3600
si(OrderMagicNumber() ==1 >0){retournez;}
sinon
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
si(OrderMagicNumber() ==2 >0){retournez;}
sinon
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
retour ;
}

 
addict:

Pourquoi le conseiller ouvre-t-il un nombre infini d'ordres, aidez-moi à le réparer.

merci

extern double tp = 100 ;
double externe l = 0,1 ;




int start()

ajouter si(OrdersTotal()==0)




// 1.3600
si(OrderMagicNumber() ==1 >0){retournez;}
sinon
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
si(OrderMagicNumber() ==2 >0){retournez;}
sinon
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
retour ;
}

 
denis77515:

ajouter si(OrdersTotal()==0)

l'ordre d'achat est ouvert par un seul, et pour la vente - à nouveau, un nombre infini d'ordres
 

Bon après-midi.

Je ne comprends pas comment cela fonctionne

03:00:24 '9473965' : ordre de vente 0.01 GBPUSD ouvrant à 0.00000 sl : 1.65314 tp : 0.00000 échoué [Invalid S/L or T/P].

avec ce code

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
pourquoi le prix d'ouverture est de zéro
 

Bon après-midi.

Pouvez-vous nous aider à créer une telle fonction ?

Combien de barres du graphique actuel depuis la dernière heure connue du serveur (TimeCurrent()) jusqu'à un certain jour par la première barre dece jour (TimeDay(Time[80]) ?

Merci d'avance !

Raison: