[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 169

 
Vinin >> :

Que signifie "i" ?

Je voulais juste montrer les bases - i est défini comme.. :

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {


c'est-à-dire qu'il commence à la barre la plus haute et va jusqu'à zéro.

Si je maintiens l'indicateur en fonctionnement, pour des valeurs de i égales à 0, tout commence à fonctionner (dessine des rectangles pour les valeurs courantes).

etc.), mais il n'y a rien sur l'historique. Je pensais que cela avait peut-être quelque chose à voir avec la définition du tableau !

 
chief2000 писал(а) >>

Je voulais seulement montrer les bases - i est défini comme.. :

c'est-à-dire qu'il commence à la barre la plus haute et va jusqu'à zéro.

Si je maintiens l'indicateur en fonctionnement, pour des valeurs de i égales à 0, tout commence à fonctionner (dessine des rectangles pour les valeurs courantes).

etc.), mais il n'y a rien sur l'historique. Je pensais que cela avait peut-être quelque chose à voir avec la définition du tableau !

Ensuite, je devrai montrer le code complet de l'indicateur.

 
Vinin >> :

Ensuite, vous devrez montrer le code complet de l'indicateur.

Voici le code - j'ai supprimé tout ce qui n'était pas pertinent pour le problème :

 
#property indicator_chart_window
#property indicator_buffers 4



int    i;


// ------------------------------------------------------
extern int RSI_Periods = 14;
extern int Percent_K   = 14;

//---- buffers
// double Buffer1[];
double Buffer1[99000];

// double Current_RSI,Lowest_RSI,Highest_RSI,sum_K;
// ------------------------------------------------------




  
int init() {
   return(0);
}




// -------------------------------------------------------------------------------
int start() {

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {

// ============================================================================================
      double Current_RSI, Lowest_RSI, Highest_RSI;


      Current_RSI    = iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i);
      Highest_RSI    = Current_RSI;
      Lowest_RSI     = Current_RSI;

      for(int x= i+1; x<= Percent_K+ i+1; x++){
         Lowest_RSI  = MathMin( Lowest_RSI, iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
         Highest_RSI = MathMax( Highest_RSI,iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
      }


      Buffer1[ i]     = (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100;
// ============================================================================================



   Comment(
      "\n",
      "\n",
      "\n",
      "\n",
      "\n", "Current_RSI = "  , Current_RSI,
      "\n", "Highest_RSI = "  , Highest_RSI,
      "\n", "Lowest_RSI = "  , Lowest_RSI,
      "\n", "Percent_K = "  , Percent_K,
      "\n", "((Current_RSI-Lowest_RSI) / (Highest_RSI-Lowest_RSI)) * 100 = "  , (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100,
      "\n", "iRSI(NULL,0,RSI_Periods,PRICE_TYPICAL,i) = "  , iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i),
      "\n", "i = "  , i,
//      "\n", "Percent_K = "  , Percent_K,
//      "\n", "Percent_K = "  , Percent_K,
      "\n",
      "\n",
      "\n", "Buffer1[i+30] = ", Buffer1[ i+30],
      "\n", "Buffer1[i+12] = ", Buffer1[ i+12],
      "\n", "Buffer1[i+1] = ", Buffer1[ i+1],
      "\n", "Buffer1[i] = "  , Buffer1[ i],
      "\n",
      "\n"
   );


      i--;
   }


   return(0);
}
 

Où commencer à écrire void ManagePositions() par des conditions connues

Il existe des tableaux
pour (tf = 0 ; tf < 5 ; tf++)
{
......
int TF[tf] - cadre temporel {5,15,30,60,240}
int signal[tf] - "1" - achat
- "2" - achat rapproché
- "-1" - vendre
- "-2" - vente à distance
int mn_b[tf] - magic_number_buy différent pour toutes les périodes de temps.
int mn_s[tf] - magic_number_sell différent pour toutes les périodes de temps
}

Il devrait
ouvrir
sur la trame de temps 5.15 ouvrir dans une direction jusqu'à trois ordres
- 1 commande MM = 1 ARGENT
- 2 MM ordre = 2
- 3 MM ordre = 3
à l'heure 30 ouvrir une voie jusqu'à deux ordres
- 1 commande MM = 2
- 2 MM = 3

à l'intervalle de temps 60, un ordre est ouvert d'un côté.
- 1 commande MM = 3

au moment où le cadre 240 ne s'ouvre pas

Dilution des deuxième et troisième ordres en fonction de différentes conditions

Au total, nous ne recevons pas plus de 9 commandes d'un côté.

Fermer
Lorsqu'un signal de vente à la fermeture d'un cadre temporel apparaît, tous les ordres de vente dans le cadre temporel donné sont fermés.
Lorsqu'un signal d'achat de clôture de la trame temporelle apparaît, il ferme tous les ordres d'achat dans la trame temporelle actuelle.


Veuillez m'aider

 

Veuillez expliquer comment identifier un billet ou un numéro de commande s'il est connu pour être le premier avec un numéro magique donné.

Merci d'avance !

 

I. La branche de Kim "Useful functions from KimIV".

Fonction GetTicketLastPos(). Page 19.
Cette fonction renvoie le ticket de la dernière position ouverte ou -1.
La fonction GetIndexLastPos(). P.17
Cette fonction renvoie l'index de la dernière position ouverte ou -1.
La fonction IndexByTicket(). P.12
Renvoie l'index (le numéro d'index dans la liste générale des ordres fixés ou des positions ouvertes) de l'ordre ou de la position par le ticket. Si IndexByTicket() ne trouve pas d'ordre ou de position avec le ticket requis, il renvoie -1.





 
rid >> :

I. La branche de Kim "Useful functions from KimIV".

Fonction GetTicketLastPos(). Page 19.
Cette fonction renvoie le ticket de la dernière position ouverte ou -1.
La fonction GetIndexLastPos(). P.17
Cette fonction renvoie l'index de la dernière position ouverte ou -1.
La fonction IndexByTicket(). P.12
Renvoie l'index (le numéro d'index dans la liste générale des ordres fixés ou des positions ouvertes) de l'ordre ou de la position par le ticket. Si IndexByTicket() ne trouve pas d'ordre ou de position avec le ticket requis, il renvoie -1.





Merci pour votre aide !

 
chief2000 >> :

Voici le code - j'ai supprimé tout ce qui n'était pas pertinent pour le problème :


J'ai trouvé la cause :

i = Bars-30 - counted_bars - 1;

au lieu de .

i = Bars - counted_bars - 1;


Merci !

 

Une autre question de base concernant mon code ci-dessus - le même indicateur fonctionne séparément.

et dessine une ligne dans la fenêtre située sous la fenêtre principale (et une autre ajoute d'autres objets graphiques dans la fenêtre supérieure).

Les deux boucles for à l'intérieur de while() surchargent sensiblement l'ordinateur.

- Est-il possible de créer des rectangles, des flèches etc. en haut et une ligne

(courbe de type RSI) en bas ?