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

 
alsu:
Parmi les logiciels propriétaires, probablement MS VisualStudio, il en existe aussi des gratuits, CodeBlocks, par exemple, est assez bon.
Merci, je pense que je vais commencer avec VISUAL C++ 2010 EXPRESS et CodeBlocks.
 
rustein:

J'ai décidé de commencer à apprendre le C, C++, C#, qui peut me suggérer un bon compilateur et éditeur.

Merci.


FORGOTTEN

PERL

 
freeDRIVER:


RIEN D'AUTRE N'EST OUBLIÉ.

PERL

Merci, je l'ai lu, c'est un projet intéressant.
 

Malheureusement, rien de ce qui précède n'a aidé.

La question https://www.mql5.com/ru/forum/138609/page9#edit_form est toujours d'actualité.

Aidez-moi !

 

J'ai besoin d'un indicateur qui montre la plus petite barre ou bougie, pour une certaine période. Par exemple, sur le graphique 4H, il montrera la plus petite bougie ou barre pour 5 jours.

Jours ou heures, à définir dans les paramètres de l'indicateur. Et marqué cette flèche de bougie comme dans l'indicateur Fractals.

Ou quelque chose comme ça.
 
Fox_RM:

Malheureusement, rien de ce qui précède n'a aidé.

La question https://www.mql5.com/ru/forum/138609/page9#edit_form est toujours d'actualité.

Aidez-moi !

S'il vous plaît montrez-moi le code à nouveau avec les changements que vous avez fait
 
Fox_RM:

Malheureusement, rien de ce qui précède n'a aidé.

La question https://www.mql5.com/ru/forum/138609/page9#edit_form est toujours d'actualité.

Aidez-moi !

Vous avez déjà reçu de nombreux conseils. Tout d'abord, il n'est pas correct pour la question de remettre le code original dans votre post (sans les remarques, ou plutôt les corrections que vous avez suggérées). Deuxièmement, vous devez développer votre propre algorithme pour rechercher les erreurs. Personne n'a trouvé mieux (dans MQL4), que d'imprimer les résultats intermédiaires. L'auteur peut voir les erreurs logiques en premier lieu, puisqu'il est le SEUL à connaître la logique du code qu'il a écrit... ;)))
 

Dernière version :

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

Dernière version :

double a=1,c,step=1/20;

1) la variable d'étape est nulle. Soit vous entrez 0,05, soit vous le divisez par 1,/20.

2) après cela, les métiers commencent à essayer de s'ouvrir, mais

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

au lieu de 50 et 20, vous devriez définir des niveaux de stop loss et de take profit (_absolu_).


P.S. Je n'ai examiné que les moments de base de la non-ouverture. Bien sûr, de nombreuses choses doivent être optimisées et ajoutées.

 
Fox_RM:

La dernière version :

C'est quoi ce "mazahisme" :

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

Pourquoi ne pas le déclarer honnêtement :

count = 20;

Et ne pas torturer ces tableaux MA1[] et MA2[] en déclarant leurs dimensions d'un coup :

double MA1[20],MA2[20];

Et avec ça :

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

Vous devez retourner aux racines de... de la connaissance. Vous passez la taille des STOPP en pips à l'ordre de trade, et vous devez passer les LEVELS ! !! Et pour travailler en ligne, il est nécessaire de NORMALISER les NIVEAUX (prix, SL et TP) ! !!

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

Et encore une chose : habituez-vous dès le début comme un "adulte" - attribuez vos commandes MAGIQUES ! !! Vous en aurez besoin à l'avenir ! !!

Raison: