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

 
Zhunko:

Malheureusement, toutes les variantes sans DDE sont condamnées à perdre les ticks des packs. On peut les récupérer par approximation, mais ce n'est pas très bon.

Il y a une option pour récupérer via DDE directement à partir d'Exel.


Vadim, merci. Je vais regarder.
 
granit77:
1. https://www. mql5.com/ru/articles/1368
2. https://www.mql5.com/ru/forum/100028/page58#94290

Et en première approximation, c'est suffisant.

Victor, merci du fond du cœur. Je vais certainement examiner cet article et les recommandations de Rosh.
 

Bonjour à tous ! Tentative #3 :))

Chers professionnels !!!

Ecoutez, s'il vous plaît, je ne comprends pas quel est le problème. En essayant de placer un ordre en attente, deux sont placés.

while (Ticket2<0)

{

RefreshRates() ;

Ticket2=OrderSend(Symbol(),2,Lots_New*2,price,2,0,TP,"",MN) ; //1 ordre est en attente Acheter

Alert ("Error in Cycle",GetLastError()) ; Alert ("TIK2= ",Ticket2 ;)

Dormir (500) ;

}

Merci d'avance à tous ceux qui répondent.

 
demlin:

Bonjour à tous ! Tentative #3 :))

Chers professionnels !!!

Ecoutez, s'il vous plaît, je ne comprends pas quel est le problème. En essayant de placer un ordre en attente, deux ordres sont placés.

while (Ticket2<0)

{

RefreshRates() ;

Ticket2=OrderSend(Symbol(),2,Lots_New*2,price,2,0,TP,"",MN) ; //1 ordre est en attente Acheter

Alert ("Error in Cycle ",GetLastError()) ; Alert ("TIK2= ",Ticket2 ;)

Dormir (500) ;

}

Merci d'avance à tous ceux qui répondent.


Ajouter des drapeaux ( présence d'un ordre en attente) dans la condition au numéro de ticket, c'est-à-dire premier drapeau - faux, puis dans la condition - while ticket < 0 and flag==false - set pending and put flag in true. Après le déclenchement de l'ordre en attente sur le marché ou la suppression de l'ordre en attente - réinitialiser le drapeau à faux. Essayez comme ça...
 

Il y a cette question : comment afficher le prix aux bords de la ligne de tendance. Ou pour que le marqueur de prix droit (gauche) soit magnétisé à la ligne de tendance ou à la barre basse (haute) comme le fait la ligne de tendance elle-même. Je voudrais utiliser les outils graphiques standard de MT4. Mais si ce n'est pas possible, peut-être ai-je besoin d'un indicateur qui attache les étiquettes de prix de droite (gauche) à toutes les lignes de tendance dans la fenêtre (j'utilise 4 lignes de tendance et toutes ont besoin de prix aux bords) ? La ligne de tendance est sans faisceau et les bords sont attachés aux barres High ou Low - naturellement manuellement. Une chaîne de quatre lignes de tendance est similaire à l'indicateur ZigZag. Je n'ai aucune expérience dans la rédaction d'indicateurs. Je suis en train d'écrire à cause de ça. Je n'ai aucune expérience dans la rédaction d'indicateurs.

 
demlin:

Bonjour à tous ! Tentative #3 :))

Chers professionnels !!!

Ecoutez, s'il vous plaît, je ne comprends pas quel est le problème. En essayant de placer un ordre en attente, deux ordres sont placés.

while (Ticket2<0)

{

RefreshRates() ;

Ticket2=OrderSend(Symbol(),2,Lots_New*2,price,2,0,TP,"",MN) ; //1 ordre est en attente Acheter

Alert ("Error in Cycle ",GetLastError()) ; Alert ("TIK2= ",Ticket2 ;)

Dormir (500) ;

}

Je vous remercie d'avance si vous me permettez de répondre.

La logique est très simple :

S'il n'y a pas d'ordre en attente avec le bon type, alors définissez-le. C'EST TOUT...

 

J'ai une question, il y a un certain indicateur qui donne un signal quand une certaine condition est atteinte,

Ma question est de savoir comment faire pour qu'il ouvre un ordre au lieu d'un signal,

Voici le code pour le signal et le message

if (SoundON==true && i==1 && CrossUp[i] > CrossDown[i] && alertTag!=Time[0]){
         Alert("Открываем Селл ",Symbol()," ",Period());
        alertTag = Time[0];

J'ai essayé de mettre juste un endroit pour que l'alerte s'ouvre, cela ne fonctionne pas,

Si j'ai un EA avec une description de ce qu'il faut attacher de l'indicateur, je serai très reconnaissant.

 
FoxUA:

J'ai une question, il y a un certain indicateur qui donne un signal quand une certaine condition est atteinte,

Ma question est de savoir comment faire pour qu'il ouvre un ordre au lieu d'un signal,

Voici le code pour le signal et le message

if (SoundON==true && i==1 && CrossUp[i] > CrossDown[i] && alertTag!=Time[0]){
         Alert("Открываем Селл ",Symbol()," ",Period());
        alertTag = Time[0];

J'ai essayé de mettre juste un endroit pour que l'alerte s'ouvre, cela ne fonctionne pas,

Si je ne savais pas comment passer une commande, je ne donnerais pas d'alerte et je ne donnerais jamais d'alerte.

L'indicateur ne peut pas ouvrir d'ordres. C'est le travail de l'EA. Si ce code appartient à l'indicateur, nous devons écrire les données dans son tampon créé spécialement pour ces données. Lorsqu'il n'y a pas de signal, un zéro ou une valeur vide est écrit dans le tampon. Lorsqu'un signal arrive (comme dans votre exemple), au lieu de Alert(); écrire la valeur dans le tampon.
Par exemple :
+1 pour Achat et
-1 pour Vente.
Ensuite, lisez les données du tampon dans l'Expert Advisor en utilisant iCustom() ;.

Ou écrire toutes ces conditions directement dans le conseiller expert.

 

Bonjour !

Pouvez-vous me conseiller, j'ouvre un ordre tous les jours.

Magic_b++ ; OrderSend (Symbol(), OP_BUY, Loot,Ask, 50, SL, TP,NULL,Magic_b,0,L) (ou Magic_s++ ; OrderSend (Symbol(), OP_BUY, Loot,Bid, 50, SL, TP,NULL,Magic_s,0,L ; selon les conditions) ;

Je veux clôturer un ordre ouvert tous les jours à une certaine heure et j'utilise pour cela le schéma suivant (sauf le vendredi)

if ((DayOfWeek () == 1) || (DayOfWeek () == 2) || (DayOfWeek () == 3) || (DayOfWeek () == 4 ))

{si ((timecur > "23:59:00") && (timecur < "23:59:04")) && (iOpen(Symbol (), PERIOD_H4, 0)

!= iOpen(Symbole (), PERIOD_D1, 0))

{si (iOpen(Symbol (), PERIOD_H4, 0) > iOpen(Symbol (), PERIOD_D1, 0))

{Alerte ("le prix est plus élevé") ;

for(i=OrdersTotal()-1;i>=0;i--)

{ OrderSelect(i, SELECT_BY_POS

si(OrderMagicNumber()==Magic_b)

{Alert ("orderticket",OrderTicket() ;

OrderClose(OrderTicket(),Loot,Bid,80,R) ;

Alert ("GetLastError") ;

Contrôle = 0 ;

Magic_b++ ;

} } }

si (((timecur > "22:59:00") && (timecur < "22:59:04")) && (iOpen(Symbol (), PERIOD_H4, 0)

!= iOpen(Symbole (), PERIOD_D1, 0))

{si (iOpen(Symbol (), PERIOD_H4, 0) < iOpen(Symbol (), PERIOD_D1, 0))

{Alerte (" le prix est plus élevé");

for(i=OrdersTotal()-1;i>=0;i--)

{ OrderSelect(i, SELECT_BY_POS

si(OrderMagicNumber()==Magic_s)

{Alert ("orderticket",OrderTicket() ;

OrderClose(OrderTicket(),Loot,Ask,80,R) ;

Alert(GetLastError) ;

Contrôle = 0 ;

Magic_s++ ;

} } } } }

Mais dans le testeur pour une raison quelconque n'est pas fermé tous les jours (par exemple dans le test de 23.08-23.10 2010) fermé seulement 27.09. Et 24.08, en dépit du fait que pas mis en œuvre nytp, pas de SL- trade n'est pas fermé. déjà mal de tête troisième jour, je ne peux pas penser ce qui ne va pas. s'il vous plaît aider

P.S. la condition d'entrée coïncide toujours avec une condition de fermeture (sauf pour l'heure bien sûr, on peut admettre qu'ici heure d'octobre 22:01:00)

 
Peut-être parce que la portée est trop faible, seulement 4 secondes ? Il y a peu de ticks dans la barre à ce moment-là et le testeur peut ne pas atteindre l'intervalle fixé.
Raison: