[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 183

 

Bonjour.

Il y a quelques temps, lors de l'affichage des indicateurs TRIX de type MTF sur la fenêtre de travail de MT4, une ligne supplémentaire de barres apparaît. Comme je l'ai découvert sur l'un des forums étrangers, cela se produit dans les dernières versions de MT4.

Puis-je prendre des mesures indépendamment (avec vos instructions) pour corriger ce problème, ou cet effet sera-t-il corrigé par vous dans les prochaines versions de MT4.

Sincèrement, Evgeniy. 412500@gmail. com ; 4125er@gmail.com

 
Craft:

Bon après-midi.

Pouvez-vous me dire comment trouver la fermeture la plus élevée dans un tableau :

double hc = iClose(NULL, 0, iHighest(Symbol(), 0, MODE_HIGH, PERIOD_M1, kk)) ;

Est-ce que ça se passe comme ça ou est-ce que je me trompe ?

Je n'ai pas trouvé de réponse en cherchant "plus haute fermeture".

Peut-être que c'est comme ça :

string sym;int PER=1;//таймфрейм
//+------------------------------------------------------------------+
//| script program                                                   |
//+------------------------------------------------------------------+
int init(){sym=Symbol();return(0);}
int start(){int bar=iHighest(sym,PER,MODE_CLOSE,iBars(sym,PER)-1,0);
  double hc=iClose(NULL,PER,bar);Print(sym," PERIOD_M",PER,"  max_close =",hc,"  Time =",
  TimeToStr(iTime(NULL,PER,bar),TIME_DATE|TIME_MINUTES));return(0);}
//+------------------------------------------------------------------+
 
MikeM:
Time[i] - temps qui correspond à la i-ème barre du graphique.
Je ne comprends pas les données "de demain" sur le graphique. Où le montrent-ils ? Je veux oooh-ooh-ooh ! !!

Il s'agit d'une très ancienne version de mon indicateur...
Je comptais juste les barres jusqu'au bon moment pour y placer la flèche - mais ce n'est pas la bonne version, car dans certains cas, ce sont les vacances, et juste le moment de la session de trading et l'instrument (dans ce cas, c'est sberbank).

J'ai maintenant complètement réécrit le code et je veux qu'il soit correct...

Je veux obtenir =) les valeurs de temps dans l'axe X sous la dernière flèche bleue, pour vérifier l'emplacement.

En fait, la nouvelle version de l'indicateur a dans ses tableaux les informations sur l'emplacement de la prochaine flèche le long de l'axe X (temps) et du prix, il ne reste plus qu'à les transférer sur le graphique..... en général, aidez-moi, dites-moi comment le faire joliment.

Capture d'écran d'une ancienne version...

с

 
personne ici ne répond aux questions du tout)
 

Bon après-midi. Pouvez-vous me dire, dans ces conditions, les ordres ne s'ouvrent pas à travers le niveau. Qu'est-ce qui ne va pas ici ?

double Mash_Price_1=iCustom(NULL,0,"mashka",0,0);
double Mash_Price_2=iCustom(NULL,0,"mashka",0,1);
double Mash_Price_3=iCustom(NULL,0,"mashka",0,2);

double Max_1,Max_2; //уровень цены 

if(Mash_Price_1>Max_1 && Mash_Price_2==Max_1 && Mash_Price_3<Max_1 || 

Mash_Price_1>Max_1 && Mash_Price_2 < Max_1 && Mash_Price_3<Max_1 ||

Mash_Price_1>Max_1 && Mash_Price_2==Max_1 && Mash_Price_3==Max_1)
{
Opn_B=true;
Opn_S=false;
}
if(Mash_Price_1<Min_1 && Mash_Price_2==Min_1 && Mash_Price_3>Min_1 ||
Mash_Price_1<Min_1 && Mash_Price_2 > Min_1 && Mash_Price_3>Min_1 ||
Mash_Price_1<Min_1 && Mash_Price_2==Min_1 && Mash_Price_3==Min_1)
{
Opn_B=false;
Opn_S=true;
}
}



while(true)
{
if(Total==0 && Opn_B==true)
{
RefreshRates();
SL=Bid-New_Stop(StopLoss)*Point;
TP=Bid+New_Stop(TakeProfit)*Point;
Print("Попытка открыть Buy. Ожидаем ответа...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);
if(Ticket>0)
{
Print("Открыт ордер Buy ",Ticket);
return;
}
if(Fun_Error(GetLastError())==1)
continue;
return; 
}

if(Total==0 && Opn_S==true)
{
RefreshRates();
SL=Ask+New_Stop(StopLoss)*Point;
TP=Ask-New_Stop(TakeProfit)*Point;
Print("Попытка открыть Sell. Ждем ответа...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);
if(Ticket>0)
{
Print("Открыт ордер Sell ",Ticket);
return;
}
if(Fun_Error(GetLastError())==1)
continue;
return;
}
 
deyron:

Bon après-midi. Pouvez-vous me dire, dans ces conditions, les ordres ne s'ouvrent pas à travers le niveau. Qu'est-ce qui ne va pas ici ?


Il y a un bouton SRC pour l'insertion de code

Qu'est-ce que vous avez que ces variables sont égales à ?

double Max_1,Max_2; //уровень цены 
 
int Bar_Beg = iBarShift(Symbol(),0,Cur_Beg,false);//начальный бар
int Bar_End = iBarShift(Symbol(),0,Cur_End,false);//конечный бар
int Dif_Bar = Bar_Beg - Bar_End;//Разница баров для расчетов Мах и Мин

int High_1 = iHighest(Symbol(),0,MODE_HIGH,Dif_Bar,Bar_End); //Максимальное значение бара
int Low_1 = iLowest (Symbol(),0,MODE_HIGH,Dif_Bar,Bar_End); //Минимальное значение бара

Max_1=High[High_1];
Min_1=Low[Low_1];

Et Mashka=(High[i]+Low[i])/2 ;

 
deyron:

Voici Mashka avec le niveau Min_1.

Voici une option si :


Vert Max_1,

de l'histoire

Max_1 = 1,5485 Min_1 = 1,5461 Mash_Price_1 = 1,5496 Mash_Price_2 = 1,5495 Mash_Price_3 = 1,549

Dans quelle direction cherchez-vous les problèmes ?

Avez-vous essayé la gestion des erreurs?
 
S'il y avait des tentatives d'ouverture d'un ordre, cela serait indiqué dans les messages. S'il n'y a pas de tentative d'ouverture d'un ordre, pourquoi y aurait-il une erreur ? La question est de savoir si les conditions de passage du Macha dans les niveaux sont correctement établies. Pourquoi les ordres s'ouvrent-ils beaucoup plus tard que prévu lorsque les paramètres sont codés en dur ?
 

Question.

Pourquoi la condition ne va pas

if(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) buffer[i]=High_1 ;

Exemple conditionnel. \

Cherche tout...mais pas la taille en points... Vérifié par Commentaire(waste,5) ;

Ie... la condition if(Close_1>Open_1) semble bien, mais la condition ( Close_1>Open_1 && Close_1-Open_1)>=30*Point) pourquoi PAS... ! !!

Qu'est-ce que je fais de mal ?

Merci d'avance ! !!)) :

Raison: