[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 67

 

J'ai ajouté des lignes au script (ajouté BUYSTOP et SELLSTOP), mais il ne compile pas, il donne des erreurs. Pouvez-vous me dire ce qui ne va pas ?

#property copyright "Copyright © 2010, Khlystov Vladimir".
#lien de propriété "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0, //niveau du SL, si 0, le SL n'est pas exposé
extern int takeprofit = 0, //t niveau de TP, si 0, TP n'est pas exposé
extern int Magic = 123456 ; //numéro d'une commande
extern bool BUY = false ; //ouverture de l'ordre BUY
extern bool SELL = false ; //ouverture de l'ordre SELL
extern bool BUYSTOP = false, //ouverture de l'ordre BUYSTOP
extern bool SELLSTOP = false, //ouverture de l'ordre SELLSTOP
extern double Lot = 0.1 ; // volume d'ordre
extern int slippage = 3 ; //écart de prix maximal autorisé pour les ordres au marché
//--------------------------------------------------------------------
double SL,TP ;
//--------------------------------------------------------------------
int start()
{
si (BUY)
{
si (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Acheter") ;
}
si (VENTE)
{
si (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Vendre") ;
}
si (BUYSTOP)
{
si (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Buy Stop") ;
}
si (SELLSTOP)
{
si (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Sell Stop") ;
}
retour(0) ;
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err ;
while (true)
{ error=true ;
si (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP, "BUY",Magic,0,Blue) ;
si (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP, "SELL",Magic,0,Red) ;
si (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP, "BUYSTOP",Magic,0,Blue) ;
si (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP, "SELLSTOP",Magic,0,Red) ;
if (error==-1) //échec de l'achat OK
{
ShowERROR() ;
err++;Sleep(2000);RefreshRates() ;
}
si (erreur || err >10) retour ;
}
retour ;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError() ;
switch ( err )
{
cas 1 : retour ;
cas 2 : Alert("No connection to the trade server ",Symbol());return ;
cas 3 : Alert("Erreur paramètres incorrects ",Symbol());return ;
cas 130 : Alert("Error close Ticket stops ",Symbol());return ;
cas 134 : Alert("Pas assez d'argent ",Symbol());return ;
cas 146 : Alert("Error Trade Subsystem is busy ",Symbol());return ;
cas 129 : Alert("Error Wrong price ",Symbol());return ;
cas 131 : Alert("Error Incorrect volume ",Symbol());return ;
cas 4200:Alert("Error Object already exists ",Symbol());return ;
défaut : Alert("Error ",err," ",Symbol());return ;
}
}
//--------------------------------------------------------------------

Merci d'avance.

 
nemo811:

pouvez-vous terminer l'opérateur par un " ;" au lieu d'un "," ?

 
FreeLance:

pouvez-vous terminer l'opérateur par un " ;" au lieu d'un "," ?


Merci, je suis en train d'apprendre :)))) Merci.
 
nemo811:

Merci, je suis en train d'apprendre :)))) Merci.

Merci ! Je suis moi-même comme ça... ;)
 
FreeLance:

Merci ! Je suis moi-même comme ça... ;)

:)))) Question encore plus brûlante. Ce script ouvre des ordres au marché mais ne place pas d'ordres en attente. J'ai encore tout gâché. Pouvez-vous me dire ce qui ne va pas ?
 
nemo811:

:)))) Question encore plus pressante. Ce script ouvre des ordres au marché mais ne place pas d'ordres en attente. J'ai encore tout gâché. Pouvez-vous me dire ce qui ne va pas ?

Quelle est l'idée commerciale qui se cache derrière ?
 
J'ai un EA qui ignore les ordres définis manuellement. Le script que j'essaie de modifier est conçu pour transformer un ordre "manuel" en un ordre avec un paramètre magique. C'est l'idée).
 
nemo811:
J'ai un EA qui ignore les ordres ouverts définis "manuellement". Le script que j'essaie de modifier est conçu pour transformer un ordre "manuel" en un ordre avec un paramètre magique. C'est l'idée).


Bonne nuit !

Je n'arrivais pas à comprendre - alors j'ai remis ça à plus tard.

Mais vous aussi, prenez votre temps, étudiez les mathématiques !

Le langage et les objets de la manipulation sont simples...

L'exécution est parfois boiteuse ?

Il y a donc une laxité des deux côtés.

;)

 

Correction du code ci-dessus. Les pendentifs ne sont pas sertis. Veuillez m'aider à trouver l'erreur.

#property copyright "Copyright © 2010, Khlystov Vladimir"
#lien de propriété "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0 ; //niveau du SL, si 0, le SL n'est pas exposé
extern int int takeprofit = 0 ; //t niveau de TP, si 0, TP n'est pas exposé
extern int Magic = 123456 ; //numéro d'une commande
extern bool BUY = false ; //ouverture de l'ordre BUY
extern bool SELL = false ; //ouverture de l'ordre SELL
extern bool BUYSTOP = false ; //ouverture de l'ordre BUYSTOP
extern bool SELLSTOP = false ; //ouverture de l'ordre SELLSTOP
extern double Lot = 0.1 ; // volume d'ordre
extern int slippage = 3 ; //écart de prix maximal autorisé pour les ordres au marché
extern int DistanceSet = 20 ; //Distance du marché
//--------------------------------------------------------------------
double SL,TP ;
//--------------------------------------------------------------------
int start()
{
si (BUY)
{
si (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Acheter") ;
}
si (VENTE)
{
si (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Vendre") ;
}
si (BUYSTOP)
{
si (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Buy Stop") ;
}
si (SELLSTOP)
{
si (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits) ; sinon TP=0 ;
si (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits) ; sinon SL=0 ;
OPENORDER ("Sell Stop") ;
}
retour(0) ;
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err ;
while (true)
{ error=true ;
si (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0) ;
si (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,",Magic,0) ;
si (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0) ;
si (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0) ;
if (error==-1) //échec de l'achat OK
{
ShowERROR() ;
err++;Sleep(2000);RefreshRates() ;
}
si (erreur || err >10) retour ;
}
retour ;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError() ;
switch ( err )
{
cas 1 : retour ;
cas 2 : Alert("No connection to the trade server ",Symbol());return ;
cas 3 : Alert("Erreur paramètres incorrects ",Symbol());return ;
cas 130 : Alert("Error close Ticket stops ",Symbol());return ;
cas 134 : Alert("Pas assez d'argent ",Symbol());return ;
cas 146 : Alert("Error Trade Subsystem is busy ",Symbol());return ;
cas 129 : Alert("Error Wrong price ",Symbol());return ;
cas 131 : Alert("Error Incorrect volume ",Symbol());return ;
cas 4200:Alert("Erreur L'objet existe déjà ",Symbol());return ;
défaut : Alert("Error ",err," ",Symbol());return ;
}
}
//--------------------------------------------------------------------

Merci.

 
Dimka-novitsek:


Non, c'est tout le contraire de ce que vous avez écrit. Bien sûr, merci de votre attention. J'ai réfléchi, j'ai compris de telle et telle façon, et vous avez tort.

En général, je vois que le problème ne vient pas des axes et des bits, et je ne l'ai pas résolu.

C'est une affirmation très étrange de votre part. Une pomme ne volera pas vers le haut par la force de vos pensées, mais elle tombera sur votre tête...

C'est comme ça et rien d'autre.

Ou bien vivez-vous dans un pays particulier, où tout est strictement à l'envers : profit - valeur avec un moins ? Pensez-y : acheter à 1,0100, vendre à 1,0200 (prendre à ce niveau, c'est-à-dire plus haut que le prix d'achat). Nous avons un bénéfice de 100 points. Il n'y a pas d'autre moyen. Si vous essayez de fixer le take au niveau de 1.0000, vous obtiendrez l'erreur 130 - mauvais stops. Le Take Buy (OP_BUY) ne peut pas être inférieur au prix d'ouverture. Et le stop - tout le contraire - doit être inférieur au prix d'ouverture de la position d'achat. Pour la vente, c'est l'inverse - le Take est inférieur au prix d'ouverture, le Stop est supérieur.

On dirait que tu n'as pas seulement besoin d'apprendre les maths, mais aussi les maths de première année... Sans vouloir vous offenser.