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

 
L'essentiel est de définir la direction de la pensée... :)

Corrigez-le juste pour que l'homme ne se perde pas... :)

Pourriez-vous me corriger, simplement ?
 
T.H.C.:
Pourriez-vous me corriger, s'il vous plaît ?

J'ai donné un exemple :

Si 5 est supérieur à 2, cela signifie que 5 est supérieur à 2.

Et en comparant la différence de ces valeurs, si 5-2 est supérieur à zéro, alors 5 est supérieur à 2.

Est-ce que c'est clair ? Le fait est qu'il s'agit toujours des mêmes mathématiques de base, mais dérivées...

 
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;

static int KolBars;



if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)


{

KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия

}




// Торговые критерии

// Критерий откр. Buy


Opn_B=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}

}




Aidez-moi, quelqu'un, je vous le demande pour la quatrième fois. J'ai passé 3 jours à chercher une réponse, le livre ne dit pas comment faire, je n'ai pas trouvé d'EA avec une telle condition. Le conseiller élémentaire ouvre une position d'achat à l'apparition d'une nouvelle bougie (à condition que les 2 bougies précédentes soient vertes), et ferme la position à la clôture de la bougie sur laquelle la position a été ouverte, ou à la clôture de la bougie suivante.

Celui que vous voyez ci-dessus ouvre une position à chaque fois qu'une nouvelle bougie apparaît, sans réagir aux critères d'ouverture, et je ne comprends pas comment fermer la position, je ne l'ai pas trouvé dans le tutoriel ou sur les forums.

 
artmedia70:

Faites le tri... :)

Et n'oubliez pas l'existence de StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL) ;

Vérifiez la distance minimale pour les arrêts de réglage et les reprises, afin qu'elle ne soit pas inférieure à cette valeur.


Quoi qu'il en soit, cela semble être correct, mais... "StLev=MarketInfo(Symbol(),MODE_STOPLEVEL) ;" Je ne sais pas où le mettre,
maintenant...

Le problème, c'est que je suis constamment au travail (je ne peux pas installer le programme mql4 ici, donc je dois tout faire de tête).

extern double StopLoss=100.0 ;
extern double TakeProfit=100.0 ;
extern double Lots=0.01 ;
extern int total ;
extern int SetOrderDistance=50 ;

int start() {

int pt,dg,StLev ;
double Price_1,Price_2,min,max,pa,pb ;
RefreshRates() ;

pt=MarketInfo(Symbol(),MODE_POINT) ;
dg=MarketInfo(Symbol(),MODE_DIGITS) ;
pa=MarketInfo(Symbol(),MODE_ASK) ;
pb=MarketInfo(Symbol(),MODE_BID) ;
Price_1=pb ;
Price_2=pa ;
min=iLow(NULL,0,2) ;
max=iHigh(NULL,0,2) ;
total=OrdersTotal() ;
double slB=NormalizeDouble(pa-StopLoss*pt,dg) ;
double tpB=NormalizeDouble(pa+TakeProfit*pt,dg) ;
double slS=NormalizeDouble(pb+StopLoss*pt,dg) ;
double tpS=NormalizeDouble(pb-TakeProfit*pt,dg)

if(total<1) {

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,pa,5,slB,tpB, "My order#,16384,0,Green) ;

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,pb,5,slS,tpS, "My order#,16384,0,Green) ;
}
}return(0) ;

 
T.H.C.:

Je l'ai juste esquissé. Ça pourrait être un désastre.

#define Mag 464564564
extern double Lot=0.01;

int start()
{
int Total;

for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2&&OrderMagicNumber()==Mag)
       {Total++;
       if(Volume[0]<4)close();
       }

if(Total!=0)return;
if(Close[1]>Open[1]&&Close[2]>Open[2]&&Volume[0]>4)bue();
if(Close[1]<Open[1]&&Close[2]<Open[2]&&Volume[0]>4)sell();

}
void bue()
{
OrderSend(Symbol(),0,Lot,NormalizeDouble(Ask,Digits),5,0,0,0,Mag);
}
//----
void sell()
{
OrderSend(Symbol(),1,Lot,NormalizeDouble(Bid,Digits),5,0,0,0,Mag);
}
void close()
{
double pr;if(OrderType()==0)pr=Bid;if(OrderType()==1)pr=Ask;
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(pr,Digits),5);
}
 
Techno:

Je l'ai juste esquissé. Ça pourrait être un peu désordonné.

Merci beaucoup, très utile.

Comment avez-vous appris à programmer ? Où avez-vous commencé ?

 
T.H.C.:

Merci beaucoup, très utile.

Comment avez-vous appris à programmer ? Où avez-vous commencé ?

J'ai étudié à partir de manuels, en commençant par le C++.
 
Le C++ est-il très différent du mql ?
 
T.H.C.:
Le C++ est-il très différent du mql ?
à l'exception de certaines fonctionnalités (orientation commerciale), Mql n'est qu'une copie très dépouillée de c++.
 
Techno:
à l'exception de certaines fonctionnalités (orientation commerciale), Mql n'est qu'une copie très dépouillée de c++.
Oh, merci pour les conseils et le temps que vous m'avez consacré.