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

 
quelque part sur ce site, il y a longtemps, j'ai rencontré un lien vers un site où vous pouvez télécharger votre robot, ainsi que spécifier le nom d'utilisateur, le mot de passe, le serveur et il négociera quand mon copm sera éteint..... Quelqu'un se souvient-il de ce site ?
 
jobber:
quelque part sur ce site, il y a longtemps, j'ai rencontré un lien vers un site où vous pouvez télécharger votre robot, ainsi que spécifier le nom d'utilisateur, le mot de passe, le serveur et il négociera quand mon copm sera éteint..... Quelqu'un se souvient-il de ce site ?

Vous pouvez entrer VPS dans le moteur de recherche, je ne sais pas ce que cela signifie littéralement, mais cela pourrait être un bureau virtuel pour les traders.
 
splxgf:

LazarevDenis

Le compte initial est de 59 barres, ce qui est incorrect. Il peut y avoir des trous dans les minutes, et la dernière barre d'heure peut contenir moins de minutes.

Vous devez prendre l'heure d'ouverture et de fermeture de la barre des heures (Time[i]). Utilisez cette heure pour calculer les décalages des minutes iBarShift, puis calculez le maximum dans cette plage de décalages.

D'ailleurs, que doit afficher l'indicateur sur une période d'une minute ?

Bien que cela n'ait pas d'importance pour le Conseiller Expert, il a seulement besoin d'obtenir la dernière valeur sur les barres d'une minute, si le nombre est positif le prix monte, s'il est négatif il descend, en retournant le nombre modulo il montre la force du mouvement.


quant au nombre de barres - leur 60 compte à partir de zéro et il n'y a pas de 60 minutes puisque c'est la minute zéro de la nouvelle heure, ou je me trompe ?

J'ai des doutes sur la barre de la dernière heure, mais j'espère que, comme il n'y a pas de barres min, leur volume est égal à zéro et qu'elles n'affectent pas le résultat des calculs.

J'ai fait une barre minute pour vérifier l'adéquation des calculs, ainsi j'ai identifié que j'ai une erreur, j'ai marqué le début et la fin de l'heure, et la valeur maximale dans l'indicateur horizontal, puis je suis passé à une barre minute et j'ai vérifié, les barres de 6 heures étaient bien, et ensuite quelque chose s'est détraqué

 
LazarevDenis:


quant au nombre de barres - leur 60 compte à partir de zéro et il n'y a pas de 60 minutes, puisqu'il s'agit de la minute zéro de la nouvelle heure, ou je me trompe ?

J'ai des doutes sur la barre de la dernière heure, mais j'espère que, comme il n'y a pas de barres de minutes, leur volume est nul et qu'elles n'affectent pas les résultats du calcul.

j'ai créé une barre de minutes pour vérifier l'adéquation des calculs, et j'ai défini que j'ai une erreur. sur la barre d'heures, j'ai marqué le début et la fin de l'heure, et la valeur maximale dans l'indicateur horizontal, puis je suis passé à la barre de minutes et j'ai vérifié, les barres de 6 heures étaient bien, et ensuite quelque chose s'est mal passé


Écrire ou fournir votre code ?
 
Vinin:

Écrire ou fournir votre code ?
Je ne sais pas trop quoi écrire ?
Le code de l'indicateur est sur la page précédente, j'ajouterai l'EA quand je serai sûr que l'indicateur fonctionne correctement, merci.
 
//+------------------------------------------------------------------+
//| FT_Fractal_MA.mq4 |
//| FORTRADER.RU, Yuri, ftyuriy@gmail.com |
//| http://FORTRADER.RU, Fractales + Moyennes |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU, Yury, ftyuriy@gmail.com"
#property link "http://FORTRADER.RU, Fractales + Moyennes"

/* Développé pour le 49ème numéro de FORTRADER.Ru. Système sur les fractales et les moyennes.
Rapports : http://finfile.ru/index.php/files/get/6qQW8tgENy/fracralma1.zip, http://finfile.ru/index.php/files/get/_glRYiHkQi/fracralma2.zip
Définir les fichiers : http://finfile.ru/index.php/files/get/k2w2e92iCI/eurusd1h.zip
Discussion : http://fxnow.ru/group_discussion_view.php?group_id=49&grouptopic_id=266&grouppost_id=2667#post_2667
Archives des journaux : http://www.fortrader.ru/arhiv.php
Numéro 49 : http://www.fortrader.ru/
*/

extern int lwmaper1=4 ;
extern int lwmaper2=8 ;

extern int int lwmapertrend=40 ;
extern int lwmatrendchart=1 ;

extern int SL=150 ;
extern int TP=150 ;

extern int mn=1 ;

int err ;

extern int MG=564651 ;
extern double Lots=0.01 ;

extern int maxpos=1 ;

int bars ;
int start()
{
si(bars!=Bars)
{
bars=Bars ;
OpenPattern() ;
}
retour(0) ;
}

int okbuy ; }

int OpenPattern()
{
double op, sl, tp ;
double upf=iFractals(NULL, 0, MODE_UPPER, 3) ;
double dwf=iFractals(NULL, 0, MODE_LOWER, 3) ;
double lwma1=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,1) ;
double lwma2=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,1) ;
double lwma1Last=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,2) ;
double lwma2Last=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,2) ;
double lwmatrend=iMA(NULL,GetPeriod(lwmatrendchart),lwmapertrend,0,MODE_LWMA,PRICE_CLOSE,1) ;
double lwmatrendLast=iMA(NULL,0,GetPeriod(lwmatrendchart),0,MODE_LWMA,PRICE_CLOSE,2) ;
if(upf!=0){oksell=1;okbuy=0;}
if(dwf!=0){okbuy=1;oksell=0;}
if(oksell==1 && lwma1<lwma2 && lwma1Last>lwma2Last && CountPos(0)<maxpos && lwmatrend>lwmatrendLast)
{
op=Bid;if(SL>0){sl=Bid+SL*Point*mn;}if(TP>0){tp=Bid-TP*Point*mn;}
err=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "4 FORTRADER.RU",MG,0,Red) ;
if(err<0){Print("OrderSend()- Error OP_SELL. op "+op+" sl "+sl+" tp "+tp+""+GetLastError());return(-1);}
oksell=0 ;
}
if(okbuy==1 && lwma1>lwma2 && lwma1Last<lwma2Last && CountPos(1)<maxpos && lwmatrend<lwmatrendLast)
{
op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;}
err=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "6 FORTRADER.RU",MG,0,Red) ;
if(err<0){Print("OrderSend()- Error OP_BUY. op "+op+" sl "+sl+" tp "+tp+""+GetLastError());return(-1);}
okbuy=0 ;
}
retour(err) ;
}
//Contrôlez le nombre de positions.
int CountPos(int type)
{// Description http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

int i ;
int col ;
int count=0 ;
for( i=0 ; i<=OrdersTotal() ; i++)
{
si(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG){count++;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG){count++;}
}
}
return(count) ;
}

int GetPeriod(int GrafOpen)
{int GrafOpenT ;
switch(GrafOpen)
{
cas 1 : GrafOpenT=1;break ;
cas 2 : GrafOpenT=5;break ;
cas 3 : GrafOpenT=15;break ;
cas 4 : GrafOpenT=30;break ;
cas 5 : GrafOpenT=60;break ;
cas 6 : GrafOpenT=240;break ;
cas 7 : GrafOpenT=1440;break ;
par défaut : GrafOpenT=1;break ;
}
retour(GrafOpenT) ;

}

Veuillez échanger l'achat et la vente dans cet EA à partir de ce site, il ne fonctionne pas pour moi. Il est intéressant de le vérifier, car il est trop plat.

 
LazarevDenis:


quant au nombre de barres - leur 60 compte à partir de zéro et il n'y a pas de 60 minutes puisque c'est la minute zéro de la nouvelle heure, ou je me trompe ?

Je vais poser une question stupide maintenant, combien de barres quotidiennes y a-t-il dans une année ?
 

Bonne nuit... matin... ou peut-être même après-midi...

J'essaie d'apprendre le langage mql... Je suis confronté à un malentendu... L'essence du problème se trouve dans le code :

      OrderSelect(ТикетСелл,SELECT_BY_TICKET);
      double СеллТейкПрофит=ЦенаПродажи-(ЦенаПокупки-ЦенаПродажи);
      PrintDoubleToStr("OrderOpenPrice()= ",OrderOpenPrice(),8);PrintDoubleToStr("ЦенаПродажи= ",ЦенаПродажи,8);
      PrintDoubleToStr("OrderStopLoss()= ",OrderStopLoss(),8);PrintDoubleToStr("ЦенаПокупки= ",ЦенаПокупки,8);
      PrintDoubleToStr("OrderTakeProfit()= ",OrderTakeProfit(),8);PrintDoubleToStr("СеллТейкПрофит= ",СеллТейкПрофит,8);
      Print(OrderType(),"=",OP_SELLSTOP);
      if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
      {
         OrderModify(OrderTicket(),ЦенаПродажи,ЦенаПокупки,СеллТейкПрофит,0,Red);
      }

La fonction "PrintDoubleToStr" imprime des nombres doubles dans le journal...

En général, dans mon journal (lire de bas en haut).

2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderModify error 1
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: 5=5
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: СеллТейкПрофит= 1.41884000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()= 1.41884000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: ЦенаПокупки= 1.44244000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderStopLoss()= 1.44244000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: ЦенаПродажи= 1.43064000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderOpenPrice()= 1.43064000

Une question se pose : pourquoi modifie-t-il l'ordre si toutes les valeurs sont égales et que cette condition n'est donc pas remplie :

if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
S'il vous plaît, dites-moi où je me suis trompé...
 
niknikolas:

S'il vous plaît, dites-moi où je me suis trompé...

Je n'attraperai pas de poisson, mais je vous donnerai une canne à pêche... vous pouvez également ajouter une ligne Print(OrderOpenPrice()!=Prix de vente) et le tableau sera complet et suffisant pour des conclusions indépendantes.
 
splxgf:
Je n'attraperai pas de poisson, mais je vous donnerai une canne à pêche... vous pouvez ajouter d'autres lignes Print(OrderOpenPrice()!=SellTakeProfit) et le tableau sera complet et suffisant pour des conclusions indépendantes.

Comme on dit, "Qu'est-ce que j'y gagne ?" J'ai besoin d'un ver... Bref, voici le code :

OrderSelect(ТикетСелл,SELECT_BY_TICKET);
double СеллТейкПрофит=ЦенаПродажи-(ЦенаПокупки-ЦенаПродажи);
Print("OrderOpenPrice()!=ЦенаПродажи= ",OrderOpenPrice()!=ЦенаПродажи);
Print("OrderStopLoss()!=ЦенаПокупки= ",OrderStopLoss()!=ЦенаПокупки);
Print("OrderTakeProfit()!=СеллТейкПрофит= ",OrderTakeProfit()!=СеллТейкПрофит);
PrintDoubleToStr("OrderTakeProfit()= ",OrderTakeProfit(),8);
PrintDoubleToStr("СеллТейкПрофит   = ",СеллТейкПрофит,8);
if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
{
 OrderModify(OrderTicket(),ЦенаПродажи,ЦенаПокупки,СеллТейкПрофит,0,Red);
}
Dans le journal :
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderModify error 1
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: СеллТейкПрофит   = 1.42505000
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()= 1.42505000
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()!=СеллТейкПрофит= 1
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderStopLoss()!=ЦенаПокупки= 0
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderOpenPrice()!=ЦенаПродажи= 0

Pourquoi avec " SellTakeProfit = 1.42505000 " et avec "OrderTakeProfit()= 1.42505000 " toujours "OrderTakeProfit()!=SellTakeProfit= 1 ".

Ce n'est pas clair en général...