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

 
Shniperson:

Bonjour ! Pouvez-vous me dire comment "boucler" la vérification de la barre supérieure et inférieure ? Autrement dit, comment puis-je décrire cette condition "plus courte" ?

Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3]&&&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]

bool Res=true;
for(int i=0;i<8;i++) Res = Res && Close[i]>Open[i];

Merci d'avance.


Vous pourriez le faire, mais ça ne sera pas plus rapide. Les conditions doivent être un peu élargies
 

Je ne sais pas comment transformer ça en une vie, est-ce que je peux le faire ?

Ma stratégie est idéalement ouverte manuellement à 8h00 sur le terminal, si bénéfice, alors jusqu'au jour suivant. Si le bénéfice ne va pas dans ma direction, alors à la perte je retourne la position + - quoi qu'il en soit, je n'ouvre pas d'autres positions ce jour-là et j'attends jusqu'à 8 heures du matin. C'est-à-dire qu'il devrait y avoir un maximum de deux commandes et pas plus. Si nous n'avons pas atteint le profit, mais que le chalut s'est déplacé vers le seuil de rentabilité, nous effectuons également un roulement. Bien sûr, nous pouvons tout gérer, mais notre travail ne nous permet pas de surveiller les positions. Il serait préférable de placer un ordre et de laisser l'EA suivre la position. J'ai joint le RSI juste pour le tester dans le testeur de stratégie.

C'est tout ce dont j'avais besoin.

extern int Hour_To_Open = 08; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50;
extern double StopLoss = 30;
extern double Lot = 0.1;
extern int MagicNumber = 655433;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal();
for (int i = 0; i < total; i++) 
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
return(0);
}
} 
int ticket=1;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PR ICE_CLOSE,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid - StopLoss * Point,Bid + TakeProfit * Point,"My order #",MagicNumber,0,Blue);
if(ticket<0)
{
Sleep(30000);
}
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask + StopLoss * Point,Ask - TakeProfit * Point,"My order #",MagicNumber,0,Red);
if(ticket<0)
{
Sleep(30000);
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return(0);
}
//+------------------------------------------------------------------+

J'ai ce stop suiveur, je l'ai pris d'un autre EA mais il ne fonctionne pas pour moi.

extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50; // Фиксированный размер трала
extern int TrailingStep = 1; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i=0;
for(i=0; i<OrdersTotal(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue; 

if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<Normali zeDouble(Bid-(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if(OrderType()==OP_SELL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>Normali zeDouble(Ask+(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

Comment puis-je l'attacher ? Et le renversement, il ne doit fonctionner qu'une fois après l'ouverture de la position.

 

L'inversion doit chercher quelque part par ici, je le prends ou pas ?

bool OrderCloseBy(int ticket, int opposite, color Color=CLR_NONE)
Fermer une position ouverte avec une autre position ouverte sur le même instrument, mais dans le sens opposé. Renvoie VRAI en cas de réussite de la fonction. Renvoie FALSE lorsque la fonction échoue. Pour obtenir des informations sur l'erreur, appelez la fonction GetLastError().
Paramètres :
billet - Numéro de série unique de l'ordre à clôturer.
en face de - Le numéro de séquence unique de l'ordre opposé.
Couleur - Couleur de la flèche de fermeture sur le graphique. Si le paramètre est absent ou si sa valeur est CLR_NONE, la flèche n'apparaît pas sur le graphique.
Exemple :
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderCloseBy(order_id,opposite_id) ; return(0) ; }.

 
Monsieur le Professionnel, pouvez-vous me dire s'il est possible d'exécuter un script à partir de la barre d'outils ? Pour l'instant, le script écrit doit être lancé soit à partir du navigateur, soit avec une combinaison de touches prédéfinie (ce qui, pour une raison quelconque, ne fonctionne qu'une fois de temps en temps). Question - est-il possible, par exemple, d'attribuer à l'icône du panneau "outils graphiques" une nouvelle fonction et d'exécuter le script à partir de la barre d'outils ? Peut-être y a-t-il d'autres options ?
 

Bon après-midi.

Pouvez-vous me dire où je peux voir le code original de la fonction OrderSend()?

Merci d'avance.

 
kon12:
M. l'expert, conseillez, est-il possible d'exécuter le script à partir de la barre d'outils ? Pour l'instant, le script doit être lancé soit à partir du navigateur, soit en utilisant une combinaison de touches prédéfinie (qui ne fonctionne qu'une seule fois). Question - est-il possible, par exemple, d'attribuer une nouvelle fonction à l'icône du panneau "outils graphiques" et d'exécuter le script à partir de la barre d'outils ? Y a-t-il d'autres options ?

Non, mais vous pouvez utiliser le glisser-déposer de l'objet Étiquette comme exemple ...

Télécharger , extraire vers le terminal avec remplacement, permettre l'importation de dll dans la configuration du terminal, attacher Expert Advisor aux Experts, taper le nom du script à exécuter pour redémarrer le terminal ou compiler.

Le conseiller expert met en œuvre - charge le script sur le graphique spécifié par son nom lorsqu'il fait glisser l'objet sur le graphique.

      ServiceLoadScript(WindowHandle(Symbol(), Period()), "ZZ_All_Quotings 4.10425", /*<---- Имя загружаемого скрипта.*/  false);
Dossiers :
trade_1.mq4  2 kb
 

Bon après-midi ! !!

Veuillez me conseiller. J'écris un EA qui fonctionne sur la rupture d'un canal, en mettant deux en attente derrière le canal. Quand l'un d'eux se déclenche, il faut en retirer un autre. Comment l'implémenter dans le code ?

 
Parn25:

Bon après-midi ! !!

Veuillez me conseiller. J'écris un EA qui fonctionne sur la rupture d'un canal, en mettant deux en attente derrière le canal. Quand l'un d'eux se déclenche, il faut en retirer un autre. Comment l'implémenter dans le code ?


Peut-être que ce serait une bonne idée - je ne l'ai pas fait moi-même - si votre EA n'autorise qu'un seul ordre au marché (sur 2 ordres en attente qui ont été précédemment placés), alors surveillez (suivez) la disponibilité de votre ordre (par magie) au marché et dès qu'il apparaît, supprimez l'ordre en attente. C'est tout. Si vous voulez supprimer un ordre en attente, tapez sur Google quelque chose comme "supprimer les ordres site:mql4.com".
 

Bonjour !

Exécution de l'EA sur le testeur. Le serveur est composé de quatre chiffres. Lorsque l'on passe un ordre d'achat ou de vente dans le journal, on peut lire ceci

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1 : ouvert #1 acheter 0.10 GBPUSD à 1.5551 sl : 1.4551 tp : 1.5586 ok

Mais s'ouvre à 1.55512 ! Aux cinq chiffres. Ensuite, les ordres en attente sont placés à quatre chiffres et déclenchés à quatre chiffres également. Mais OP_SELL et OP_BUY ne s'ouvrent que par cinq chiffres !

Je fais NormalizeDouble(Ask,Digits) ;

Rien ne marche ! Veuillez me conseiller sur la façon de résoudre ce problème.

Vous pouvez, bien sûr, ignorer le dernier chiffre. L'erreur ne se produit pas, mais pour la pureté de l'expérience, j'ai besoin que toutes mes transactions soient effectuées en quatre chiffres.

 
ZZZEROXXX:
Veuillez me conseiller sur la manière de corriger un EA, par exemple des moyennes mobiles standard, pour le transformer en script afin de l'exécuter sur un délai non standard.


UP. J'apprécierais que vous me disiez comment transformer un EA en script en quelques mots.