[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 318

 

Bonjour, j'ai commencé à apprendre mql4, j'ai écrit un script qui verrouille les ordres perdants. Je n'arrive pas à résoudre un problème : le script verrouille tous les ordres avec des pertes à partir de -10, mais il continue à les verrouiller tant que le prix est inférieur à -10. Comment faire en sorte que le verrouillage ne se produise qu'une seule fois ? C'est-à-dire que si la perte atteint -10, le script a verrouillé cet ordre et le laisse en place même si la perte continue d'augmenter.

extern double StopLoss=150 ;

extern double Profit=-10 ;

//+------------------------------------------------------------------+

//----
void start()
{
double profit=Profit ;
double Lots=0 ;
for(int i=0;i<OrdersTotal();i++)
{
if( !OrderSelect(i,SELECT_BY_POS))
continue ;

if(OrderType()==OP_BUY && OrderProfit()<Profit*Point)
Lots+=OrderLots() ;
if(OrderType()==OP_SELL && OrderProfit()<Profit*Point)
Lots-=OrderLots() ;


}
if(Lots>0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,0,NULL,Red) ;
if(Lots<0)
OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,Bid-StopLoss*Point,0,NULL,Blue) ;
//----
return(0) ;
}

 

Bon après-midi.

Veuillez regarder le code, je veux calculer le temps moyen d'une transaction ( trading d'ordre en attente)

//+------------------------------------------------------------------+
//| Расчет среднего времени сделки            |
//+------------------------------------------------------------------+
double Sredneevremyasdelky(){
datetime Tsd=0; // общее время сделок
datetime Tsvsd=0; // среднее время сделки 
int n=0;
int orders=HistoryTotal();  // history orders total

        for(  int i=orders-1;i>=0;i--)
                  {
                 if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) 
                   { 
                        Print("Ошибка в истории!"); 
                        break;
                   }
                if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 
                  continue;
                  n++;
                 Tsd=Tsd+(OrderCloseTime()-OrderOpenTime());
                   }
            if (n>0) Tsvsd=Tsd/n/60;


            return(Tsvsd);
         }

Du déclenchement de la commande à la clôture.

 
Stells:

Bon après-midi.

Veuillez regarder le code, je veux calculer le temps moyen d'une transaction (trading d'ordre en attente)

Du déclenchement de la commande à la clôture.


Pourquoi calculez-vous le temps moyen du cycle ? Peut-être serait-il préférable de le faire après le cycle. Et ce serait une bonne idée de fixer la période de calcul
 
Vinin:

Pourquoi calculer le temps moyen du cycle ? C'est une opération inutile. Peut-être serait-il préférable de le faire après le cycle. Et il serait bien de pouvoir définir la période de calcul
Tu l'as sorti de la boucle. Comment définir la période de calcul ?
 
Stells:
Je l'ai sorti du cycle. Comment faire la période de calcul ?

Variables externes, par exemple
 

J'ai compris, la date doit être mise en avant d'une manière ou d'une autre.

De quelle fonction s'agit-il ?

 
Stells:

J'ai compris, la date doit être mise en avant d'une manière ou d'une autre.

De quelle fonction s'agit-il ?


Pourquoi compliquer les choses quand il y a un externe
 

hoz ,j'emménagerai dès que je serai libre.

J'ai une question sur l'optimisation. Je m'occupe de l'algorithme de l'EMA. Comme vous le savez, c'est la récursion qui permet de gagner du temps. En se référant au code original :

...

Transféré surhttps://www.mql5.com/ru/forum/144691

 
gyfto:

hoz ,j'emménagerai dès que je serai libre.

J'ai une question sur l'optimisation. Je m'occupe de l'algorithme de l'EMA. Comme vous le savez, c'est la récursion qui permet de gagner du temps. En se référant au code original:

J'ai pris Matcad spécifiquement pour traiter les poids générés par EMA :

Au fait, je comprends maintenant pourquoi les indicateurs qui utilisent l'EMA (qui, à mon avis, devrait être appelée une fonction puissance plutôt qu'une fonction expotentielle) utilisent une période de 14. Donc, pourquoi dois-je prendre le dernier poids si haut quand je peux simplement envelopper une fonction puissance si le prochain poids est plus important que le précédent ? Je ne me demande même plus pourquoi utiliser la récursion quand les poids finaux après la fin de la récursion peuvent être dérivés par une formule (voir F(n,x) et y(n,x)).


Vous devriez peut-être ouvrir votre propre agence. Pourquoi avez-vous besoin d'une "branche pour débutants" ?
 
happybuddhist:

Quoi qu'il en soit, j'ai besoin d'aide pour écrire une fonction de clôture des ordres pour mon TS (point 3) et pour adapter le code existant à la fonction.

Voir ici. ;)

Dossiers :
ln_3.mq4  4 kb