Systèmes de prospective stratégique - page 39

 
-Aleksey-:
Question de clarification : les valeurs de l'indicateur conditionnel sont-elles nécessaires pour toutes les bougies du graphique à un moment donné, ou pour un certain nombre de bougies récentes ?
De préférence, pour les dernières fixées par une fenêtre.
 

Voici un morceau de mon code de travail. Je n'ai jamais eu de problème de fermeture (je l'ai un peu modifié).

int i, total = OrdersTotal(), slippage = 50 ;

bool Ans ;
for (i = total-1 ; i >=0 ; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;
if (OrderSymbol() == Symbol()) {
if(OrderType()==OP_BUY) {
Print("CLOSE BUY") ;
Ans = false ;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Bid, slippage, DodgerBlue) ;
Sleep(1000) ;
RefreshRates() ;
}
}
if(OrderType() == OP_SELL) {
Print("CLOSE SALE") ;
Ans = false ;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Ask, slippage, Orange) ;
Sleep(1000) ;
RefreshRates() ;
}
}
}
}

 
rulabs:

Voici un morceau de mon code de travail. Je n'ai jamais eu de problème de fermeture (je l'ai un peu modifié).

...

Merci beaucoup ! !! Je vais essayer.
 
Farnsworth:
Merci beaucoup ! !! Je vais essayer.
Merci pour le fil de discussion. Demandez si vous avez besoin de quelque chose.
 
Farnsworth:
de préférence pour ce dernier, fixé par une sorte de fenêtre.

Je l'ai implémenté comme ceci :

//---начало блока глобальных переменных---------------
int GLOBAL_DATA_LIMIT;
bool first_run=true;
//---конец блока глобальных переменных
//++++++++++++++++++++++++++++++++++++
//---начало блока инициализации
void OnInit()
   {
      GLOBAL_DATA_LIMIT= расчет числа данных(длины окна данных), необходимых для расчета окна условного индикатора заданной длины
      ....инициализация
  }
//---конец блока инициализации индикатора
//+++++++++++++++++++++++++++++++++++++++
//---начало блока обновления индикатора--
int OnCalculate (
                  const int rates_total,      // current size of the timeseries array
                  const int prev_calculated,  // size of the timeseries array got by reurn value the last time
                  const datetime& time[],     // Time
                  const double& open[],       // Open
                  const double& high[],       // High
                  const double& low[],        // Low
                  const double& close[],      // Close
                  const long& tick_volume[],  // Tick Volume
                  const long& volume[],       // Real Volume
                  const int& spread[]         // Spread
                )
   {
      if(rates_total<0)
      {
         printf("На графике отсутствуют исторические данные");
         return(0);
      }
      if(rates_total<GLOBAL_DATA_LIMIT)
      {
         printf("Недостаточно исторических данных, необходимое количество: "+string(GLOBAL_DATA_LIMIT));
         return(0);
      }
      if(prev_calculated==0) // срабатывает при первом запуске, или когда история поменялась
      {
         if (first_run==true) первый расчет при запуске - в момент первого тика после инициализации
         *{
            ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
            ...
            Со скопированным массивом проводим расчет
            Отображаем результат
            ...   
            first_run=false;
         *}
         else расчет на каждом тике
         {
         в это место вставить код *(без first_run=false;), если считать на каждом тике. Если считать не на каждом тике, а по новому бару, то вставить * в функцию isNewBar
         }         
      }
      
      if(isNewBar(_Period)) расчет на каждом баре
      {
          *{
                      ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
                      ...
                      Со скопированным массивом проводим расчет
                      Отображаем результат
                      ...
         *}
      }
      return(rates_total);
   } 
//---конец блока обновления индикатора---
 

Il s'agit d'un schéma permettant de calculer une ou plusieurs valeurs d'indicateur n sur la base des valeurs de prix m(GLOBAL_DATA_LIMIT) copiées sur chaque barre ou tick.

Si les valeurs passées de la fenêtre de la valeur calculée ne changent pas, alors dans le calcul(intérieur) vous pouvez procéder comme suit

-calculer uniquement la nouvelle valeur (une) ;

-déplacer la fenêtre des valeurs calculées (tableau des résultats) vers la gauche d'un index ;

-écrire une nouvelle valeur dans le dernier index du tableau de résultats.


Je ne sais pas si c'est clair. Le code est en MQL5, je ne connais pas 4, mais ça devrait être similaire je suppose.

 
-Aleksey-:

...

Merci, je vais m'en occuper.
 
Risk:

Admins, le pouvoir absolu mène à la dictature. Même notre timbo, politiquement correct, n'a pas pu supporter ce marasme et est allé voir ailleurs :)

Il doit y avoir une opposition qui, au moins parfois, remet tout à sa place, mais ici on ne sait pas qui définit sérieusement les sections de mathématiques, alors qu'elles ne peuvent pas fermer l'ordre sans l'aide des écoliers. Que se passera-t-il demain ?

Si vous êtes l'opposition, je suis le pape. Vous ne donnez pas la parole à l'auteur et il n'y a aucun contenu dans vos posts. Il y a une réelle opposition et elle s'oppose de manière constructive. Et les trolls ne peuvent pas être l'opposition, ils sont des destructeurs de sujets purs et simples.
Vous êtes présenté pour une autre interdiction.
 
rulabs:
Merci pour le fil de discussion. N'hésitez pas à demander si vous avez besoin de quelque chose.
En me disputant avec un collègue, j'ai failli manquer un message sincère. Chacun sur ce site apporte quelque chose de différent, donc je ne peux pas prendre le "merci" complètement - si un fil de discussion s'avère intéressant, c'est grâce à tous ses participants :o)
 

Pour garder le fil en vie :)

Lundi à 11h15 heure de Moscou, sans aucune analyse, j'ai ouvert des paires observées dans MT5 (je devrais m'y habituer).

Je n'ai pas ouvert l'EURUSD et le GBPUSD car ils étaient plats. Je vais le garder jusqu'à vendredi, cependant, je devrais regarder correctement et éventuellement le corriger tous les jours.

Si quelqu'un est intéressé, vous pouvez le regarder.

Login : 729566

Investisseur : iuj2seh