Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Jusqu'à présent, c'est comme ça :
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Minodi"
#lien de propriété "minodi@yandex.ru"
extern int period_EMA = 233,
période_SMA = 233,
stoploss = 30,
extern double Lot = 0.01 ;
extern string SesEnd = "22:00" ; //heure limite pour Hai ou Low
//+------------------------------------------------------------------+
//| fonction de démarrage du programme de script |
//+------------------------------------------------------------------+
int start()
{
//------- Prix quotidiens, Fibs et rendu High-Low time--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1 ;
double HiPrice = iHigh(NULL,1440,shift) ; /Prix élevé
double LoPrice = iLow(NULL,1440,shift) ; // prix bas
double OpPrice = iOpen (NULL,1440,shift) ; //prix d'ouverture
double ClPrice = iClose (NULL,1440,shift) ; // Prix de clôture
datetime StTime = iTime(NULL,1440,shift) ; // ?
si(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Ajouter le haut et le bas du vendredi
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1)) ;
LoPrice = MathMin(LoPrice,iLow(NULL,1440,shift+1)) ;
OpPrice = iOpen(NULL,1440,shift+1) ;
ClPrice = iClose (NULL,1440,shift+1) ;
}
double Pivot =(HiPrice+LoPrice+ClPrice)/3 ;
double Range =HiPrice-LoPrice ;
double Fibo138 =1.382*Range+LoPrice ;
double Fibo162 =1.618*Range+LoPrice ;
double Fibo_138 =LoPrice-(1.382*Range-Range) ;
double Fibo_162 =LoPrice-(1.618*Range-Range) ;
//---------------- HiTime et Low-----------------------------------------+
int HiTime,LoTime ;
int time ; // à la barre suivante, lancez les valeurs.
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
si (High[0]>HiPrice)HiTime=TimeCurrent() ;
si (Low[0]<LoPrice)LoTime=TimeCurrent() ;
Comment("Sur cette barre : "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime) ;
//-----------------Ценовой диапазон Демарка-------------------------------+
int currDay, i=0 ; //
si (currDay!=TimeDay(Time[i]))
{
si (ClPrice<OpPrice) double x=(HiPrice + LoPrice + LoPrice)/2 ;
si (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2 ;
si (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2 ;
i++ ;
}
double MaxDay = x - LoPrice ; // Plage de prix de Demark
double MinDay = x - HiPrice ; // Plage de prix de Demark
// -----------Скользящие средние---------------------------------------------+
double EMA = iMA(15,0,period_EMA,0,MODE_EMA, PRICE_CLOSE,0) ;
double SMA = iMA(15,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0) ;
double EMA1 = iMA(60,0,period_EMA,0,MODE_EMA,PRICE_CLOSE,0) ;
double SMA1 = iMA(60,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0) ;
//----------------Удаление вчерашних ордеров---------------------------------+
//------------------Ордера----------------------------------------------------+
Chers membres du forum, vérifiez le code, je prévois d'ajouter progressivement des
Ce sont les paramètres que je vous ai donnés, placez-les avant de commencer.
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Вот эти параметры ято я давал, поместите перд стартом
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Chers membres du forum, veuillez être attentifs et nous dire quelles erreurs ont été commises :
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Minodi"
#lien de propriété "minodi@yandex.ru"
extern int period_EMA = 233,
période_SMA = 233,
stoploss = 30,
Magie = 55 ;
extern double Lot = 0.01 ;
extern string SesEnd = "22:00" ; //heure limite pour Hai ou Low
int HiTime,LoTime ;
int time ; // à la barre suivante, les valeurs sont remontées.
//+------------------------------------------------------------------+
//| fonction de démarrage du programme de script |
//+------------------------------------------------------------------+
int start()
{
//------- Prix quotidiens, Fibs et rendu High-Low time--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1 ;
double HiPrice = iHigh(NULL,1440,shift) ; /Prix élevé
double LoPrice = iLow(NULL,1440,shift) ; // prix bas
double OpPrice = iOpen (NULL,1440,shift) ; //prix d'ouverture
double ClPrice = iClose (NULL,1440,shift) ; // Prix de clôture
datetime StTime = iTime(NULL,1440,shift) ; // ?
si(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Ajouter le haut et le bas du vendredi
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1)) ;
LoPrice = MathMin(LoPrice,iLow(NULL,1440,shift+1)) ;
OpPrice = iOpen(NULL,1440,shift+1) ;
ClPrice = iClose (NULL,1440,shift+1) ;
}
double Pivot =(HiPrice+LoPrice+ClPrice)/3 ;
double Range =HiPrice-LoPrice ;
double Fibo138 =1.382*Range ;
double Fibo162 =1.618*Range ;
double Fibo_138 =(LoPrice-1.382*Range)-Range ;
double Fibo_162 =(LoPrice-1.618*Range)-Range ;
//---------------- temps hai et bas-----------------------------------------+
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
si (High[0]>HiPrice)HiTime=TimeCurrent() ;
si (Low[0]<LoPrice)LoTime=TimeCurrent() ;
Comment("Sur cette barre : "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime) ;
//-----------------Ценовой диапазон Демарка-------------------------------+
int currDay, i=0 ; //
si (currDay!=TimeDay(Time[i]))
{
si (ClPrice<OpPrice) double x=(HiPrice + LoPrice + LoPrice)/2 ;
si (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2 ;
si (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2 ;
i++ ;
}
double MaxDay = x - LoPrice ; // Plage de prix de Demark
double MinDay = x - HiPrice ; // Plage de prix de Demark
// -----------Скользящие средние---------------------------------------------+
double EMA = iMA(15,0,period_EMA,0,MODE_EMA, PRICE_CLOSE,0) ;
double SMA = iMA(15,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0) ;
double EMA1 = iMA(60,0,period_EMA,0,MODE_EMA,PRICE_CLOSE,0) ;
double SMA1 = iMA(60,0,period_SMA,0,MODE_SMA,PRICE_CLOSE,0) ;
//------------------Ордера----------------------------------------------------+
si (HiTime>LoTime){
int ticket1 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,Pivot,NULL,Magic,58000,Red) ;
int ticket2 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,LoPrice,NULL,Magic,58000,Red) ;
int ticket3 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,HiPrice,NULL,Magic,58000,Red) ;
int ticket4 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,LoPrice,NULL,Magic,58000,Red) ;
int ticket5 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,HiPrice,NULL,Magic,58000,Red) ;
int ticket6 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,Pivot,NULL,Magic,58000,Red) ;
}
si (HiTime<LoTime){
int ticket7=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,Pivot,NULL,Magic,58000,Red) ;
int ticket8=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,HiPrice,NULL,Magic,58000,Red) ;
int ticket9=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,LoPrice,NULL,Magic,58000,Red) ;
int ticket10=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,Pivot,NULL,Magic,58000,Red) ;
int ticket11=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,LoPrice,NULL,Magic,58000,Red) ;
int ticket12=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,Pivot,NULL,Magic,58000,Red) ;
}
if (HiTime>LoTime && ClPrice>Pivot) {
int ticket13=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,HiPrice,NULL,Magic,58000,Red) ;
int ticket14=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,Fibo138,NULL,Magic,58000,Red) ;
}
si (HiTime<LoTime && ClPrice<Pivot)
int ticket15=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,LoPrice,NULL,Magic,58000,Red) ;
int ticket16=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,Fibo_138,NULL,Magic,58000,Red) ;
}
retour(0) ;
//+------------------------------------------------------------------+
à première vue les paramètres :
int currDay ;
pour le départ
Messieurs du forum, aidez à comprendre....
Voici une partie du code (le code principal est tiré du manuel de construction de l'Expert Advisor)
// Fonction d'ordre
// Variables globales :
// Mas_Ord_New[31][9] // Tableau des derniers ordres connus
// Mas_Ord_Old[31][9] // Tableau des ordres précédents (anciens)
// 1er indice = numéro d'ordre
// [][0] n'est pas défini
// [][1] prix de l'ordre ouvert (abs. d'un ordre (taux abc)
// [][2] StopLoss d'un ordre (taux abc)
// [][3] TakeProfit d'un ordre (taux abc)
// [][4] Numéro de l'ordre
// [][5] nombre de lots d'un ordre. (Taux Abc)
// [][6] Type de commande 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] numéro magique de l'ordre
// [][8] 0/1
if (Mas_Ord_Old[old][6]==0 && Bid>Mas_Ord_Old[old][2] && Bid<Mas_Ord_Old[old][3])
Inform(1, Mas_Ord_Old[old][4]) ; // L'ordre d'achat a donc été fermé par le signal du compteur
else if (Mas_Ord_Old[old][6]==0 && Bid<=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Old[old][4],Mas_Ord_Old[old][2]) // cela signifie que SL a déclenché
else if (Mas_Ord_Old[old][6]==0 && Bid>=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]) // TA déclenché
else if (Mas_Ord_Old[old][6]==1 && Ask<Mas_Ord_Old[old][2] && Ask>Mas_Ord_Old[old][3])
Inform(2, Mas_Ord_Old[old][4]) ; // L'ordre de vente est donc fermé par le signal du compteur
else if (Mas_Ord_Old[old][6]==1 && Ask>=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Old[old][4],Mas_Ord_Old[old][2]) // cela signifie que SL a déclenché
else if (Mas_Ord_Old[old][6]==1 && Ask<=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]) ; // TA a déclenché
Le reste est sans intérêt...
Le problème : dans 90% des cas, le paramètre correct est affiché, c'est-à-dire que si SL est déclenché, le paramètre est "19", si TP est "20", si l'ordre est fermé manuellement, ou par un signal de compteur, le paramètre est "1" ou "2". Il a été conçu de cette façon.
Mais parfois (assez souvent), au lieu de "20", il renvoie "19" (ou vice versa), ou même "1"("2"). S'il vous plaît, aidez-moi à décrire correctement la fonction "si" : comme conditions des raisons de fermeture de l'ordre.
Je pense que la raison peut être dans l'arrondi des prix ?