Fonctions utiles de KimIV - page 96

 
KimIV >> :

Vous n'avez pas besoin d'ajouter quoi que ce soit... C'est déjà dans la ligne.


Merci beaucoup !

Votre fil de discussion est un trésor sur Internet. Je ne peux pas me passer de ce que j'ai trouvé.

 
KimIV >> :

Vous n'avez pas besoin d'ajouter quoi que ce soit... C'est déjà dans la ligne.


Je voudrais demander à Igor et à tous ceux qui écrivent régulièrement dans ce fil. J'ai parcouru la branche et je n'ai pas trouvé la fonction qui détermine l'angle de la tendance. Avez-vous une fonction qui détermine l'angle de la tendance sur un graphique de 15 minutes pour 6 chandeliers ou plus ?
 

existe-t-il des fonctions qui vous permettent d'appuyer sur (la gâchette)

profil

modèle

? ??

 
mazepa писал(а) >>

Je voudrais demander à Igor et à tous ceux qui écrivent régulièrement dans ce fil. J'ai regardé dans la branche et je n'ai pas trouvé la fonction qui détermine l'angle de la tendance. Avez-vous une fonction qui détermine l'angle de la tendance sur une bougie de 15 minutes à 6 bougies ou plus ?

Nous pouvons parler non pas de l'angle, mais du taux de variation du prix

 

Salutations ! Merci pour votre travail, vous faites un bon travail.

Je suis en train de créer un indicateur mais la fonction EquationDirect calcule parfois le point de passage de manière incorrecte :(

J'ai calculé les points des lignes sur mon graphique et je les ai joints dans un indicateur de test pour plus de clarté. La fonction ne calcule pas correctement l'intersection avec un décalage, c'est-à-dire qu'à un certain angle, la formule de la fonction n'est pas appropriée et doit être corrigée d'une manière ou d'une autre, de sorte que lorsque cela se produit, les calculs seront effectués par une formule différente IMHO.

#define CPR "DECIDE"
#define mName "Signal"

#property indicator_chart_window

extern int SignalBars=30;              // кол-во баров для сигнала
extern int TrendBars=300;              // кол-во баров для т. линий
extern color CostMaxColor=FireBrick;   // цвет максимальной цены
extern color CostMinColor=SteelBlue;   // цвет минимальной цены
extern color VLineColor=DarkSlateGray; // цвет минимальной цены
extern color TrendColor=Gray;          // цвет трендовых линий
extern color OrderColor=Green;         // цвет сигнала ордера
extern color LabelColor=Navy;          // цвет меток

// Инициализация - функция начальных установок
int init(){
   if(!IsDemo())return(0);
   if( SignalBars<30) SignalBars=30;
}

// ДеИнициализация - функция завершения работы
int deinit(){
   ObjectDelete("UpTrend");
   ObjectDelete("DownTrend");
   ObjectDelete("MaxCost");
   ObjectDelete("MinCost");
   ObjectDelete("SignOrder");
   ObjectDelete("Trend");
   ObjectDelete("Volume");
}

// СТАРТ - основная функция обработки
int start(){
   int bar;
   double val, upb, t1, t2, h1, h2;
   val=173;
   bar=iHighest(NULL,0,MODE_HIGH,100,0);
   t1=Time[0]-273600;
   h1=High[ bar];
   t2= t1-518400;
   h2=High[ bar]- val*Point;
   SetTLine( TrendColor,"DownTrend", t2, h2, t1, h1, True,STYLE_SOLID,2);
   upb= EquationDirect( t1, h1, t2, h2,Time[0]);
   SetArrow(6,DarkViolet,"UpBorder",Time[0], upb,2);
   SetVLine( VLineColor,"VLine",Time[0],STYLE_SOLID);
}

// --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ---

// вертикальная временная линия
void SetVLine(color cl,string nm="",datetime t1=0,int st=0,int wd=1){
// Параметры:
// cl - цвет линии
// nm - наименование               ("" - время открытия текущего бара)
// t1 - время                      (0  - время открытия текущего бара)
// st - стиль линии                (0  - простая линия)
// wd - ширина линии               (1  - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[0];
  if(ObjectFind( nm)<0)ObjectCreate( nm,OBJ_VLINE,0,0,0);
  ObjectSet( nm, OBJPROP_TIME1, t1);
  ObjectSet( nm, OBJPROP_COLOR, cl);
  ObjectSet( nm, OBJPROP_STYLE, st);
  ObjectSet( nm, OBJPROP_WIDTH, wd);
}
// установка трендовой линии
void SetTLine(color cl,string nm="",datetime t1=0,double p1=0,datetime t2=0,double p2=0,bool ry= False,int st=0,int wd=1){
// Параметры:
// cl - цвет линии
// nm - наименование               (  ""  - время открытия текущего бара)
// t1 - время открытия бара        (  0   - Time[10]
// p1 - ценовой уровень            (  0   - Low[10])
// t2 - время открытия бара        (  0   - текущий бар)
// p2 - ценовой уровень            (  0   - Bid)
// ry - луч                        (False - по умолчанию)
// st - стиль линии                (  0   - простая линия)
// wd - ширина линии               (  1   - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[10];if( t2<=0) t2=Time[0];
  if( p1<=0) p1=Low[10];if( p2<=0) p2=Bid;
  if(ObjectFind( nm)<0)ObjectCreate( nm,OBJ_TREND,0,0,0,0,0);
  ObjectSet( nm, OBJPROP_TIME1, t1);
  ObjectSet( nm, OBJPROP_PRICE1, p1);
  ObjectSet( nm, OBJPROP_TIME2, t2);
  ObjectSet( nm, OBJPROP_PRICE2, p2);
  ObjectSet( nm, OBJPROP_COLOR, cl);
  ObjectSet( nm, OBJPROP_RAY, ry);
  ObjectSet( nm, OBJPROP_STYLE, st);
  ObjectSet( nm, OBJPROP_WIDTH, wd);
}
// вычисление точки пересечения
double EquationDirect(double x1,double y1,double x2,double y2,double x){
// Параметры:
// x1,y1 - координаты первой точки,
// x2,y2 - координаты второй точки,
// x     - значение, для которого вычислить Y

  if( x2== x1)return( y1);
  else
  return(NormalizeDouble(( y2- y1)/( x2- x1)*( x- x1)+ y1,Digits));
}
// установка значька
void SetArrow(int cd,color cl,string nm="",datetime t1=0,double p1=0,int sz=0){
// Параметры:
// cd - код значка
// cl - цвет значка
// nm - наименование               ("" - время открытия текущего бара)
// t1 - время открытия бара        (0  - текущий бар)
// p1 - ценовой уровень            (0  - Bid)
// sz - размер значка              (0  - по умолчанию)

  if( nm=="") nm=DoubleToStr(Time[0],0);
  if( t1<=0) t1=Time[0];if( p1<=0) p1=Bid;
  if(ObjectFind( nm)<0)ObjectCreate( nm,OBJ_ARROW,0,0,0);
  ObjectSet( nm, OBJPROP_TIME1, t1);
  ObjectSet( nm, OBJPROP_PRICE1, p1);
  ObjectSet( nm, OBJPROP_ARROWCODE, cd);
  ObjectSet( nm, OBJPROP_COLOR, cl);
  ObjectSet( nm, OBJPROP_WIDTH, sz);
}
 

capture d'écran

ajouté via opera, non ajouté dans l'explorateur

 
comment déterminer l'heure de fin (à partir de la gauche) qui est visible sur le graphique ?
 
DECIDE писал(а) >>
Comment puis-je déterminer l'heure de fin (à partir de la gauche) qui est visible dans le graphique ?

TimeCurrent()

 
KimIV писал(а) >>

TimeCurrent()

Cela semble être sur la droite.

 

Je l'ai déjà compris.

ce n'est pas à cause de la fonction EquationDirect, le calcul est correct, c'est à cause d'un bug dans le terminal, la ligne est dessinée avec un décalage

c'est pourquoi j'ai dû d'abord déterminer le point de passage avec Time[0] et ensuite tracer une ligne de tendance du point initial au point de passage avec Time[0], dans ce cas tout fonctionne bien

le moment le plus à droite dans le graphique est nécessaire pour positionner l'icône de commutation du signal de l'indicateur (lorsque l'échelle du graphique est modifiée), c'est-à-dire que si vous déplacez l'icône de commutation au-delà du moment le plus à droite, c'est-à-dire non encore atteint, l'icône commute (le signal pour placer un ordre s'active ou se désactive, ce qui signifie que vous pouvez interdire ou autoriser l'EA à trader en commutant le signal)

Le temps de gauche est déterminé comme suit : on obtient la barre la plus extérieure visible sur le graphique

WindowFirstVisibleBar() et obtenir l'heure Time[WindowFirstVisibleBar()]

Raison: