Fonctions utiles de KimIV - page 83

 
Est-ce que i-Sessions peut aussi ajouter une session de nuit, par exemple du 23 au 01, c'est-à-dire que je peux l'ajouter moi-même, mais comment faire pour passer par les heures 00 ? Aidez-nous ! !!
 
Aidez à refaire e-TFL_v2 !

Comment faire pour que l'EA n'ouvre pas une position, mais 2 ou 3 en même temps dans une direction. Par exemple, comment puis-je ouvrir deux positions unidirectionnelles à 0,5 et 0,5 lot au lieu d'un seul lot ? Ou 0,3+0,3+0,3 lots.
 
Pouvez-vous me dire comment configurer le terminal de manière à ce que, lorsque l'on passe en russe, tout soit écrit en russe, car tout est écrit en hiéroglyphes.
 
arvis >> :
>> Comment puis-je configurer le terminal pour que, lorsque je le passe en russe, il dise tout en russe, car ma langue est écrite en hiéroglyphes.

Dans les paramètres régionaux de Windows, définissez la langue sur le russe pour l'utiliser dans les applications qui n'utilisent pas l'Unicode.

 

Bonjour, j'ai une question à poser directement à Igor Kim car il est l'auteur (si je ne me trompe pas) de l'indicateur i-SignalOfTrade.

L'indicateur remplit parfaitement toutes ses fonctions, mais les entrées suivantes apparaissent dans le journal lors de l'envoi d'un courriel

Mail : 'i-SignalOfTrade' a échoué

Mail : 451 Voir http://pobox.com/~djb/docs/smtplf.html.

et bien sûr, le message ne va nulle part.

Pouvez-vous me dire quel est le problème et comment le résoudre ?

P.S. Le client de messagerie est configuré correctement, les messages de test sont envoyés et remis sans aucun problème.

 

Bon après-midi. Pouvez-vous me dire qui sait ? Je travaille avec l'indice RTS. La taille de la position est calculée par un programme tiers et transmise à l'Expert Advisor via un fichier txt. J'ai deux problèmes ici :

1. comme le bloc de départ {...} n'est activé que lorsqu'un nouveau tick arrive et que les ticks dans l'indice sont rares, il y a un retard dans l'exécution de l'EA.

Je l'ai placé sur un instrument plus fréquent (EURUSD), mais je me demande quand même s'il est possible de forcer le démarrage de {...} ?

2) La taille maximale de la position autorisée par mon courtier est de 20 lots. J'ai besoin d'ouvrir une position de 100 lots. Pour l'instant, j'ouvre un poste à la fois,

mais cela prend beaucoup de temps, environ 4 secondes par commande. (c'est-à-dire qu'il faut 20 secondes pour ouvrir une position), et parfois ce n'est pas bon. Y a-t-il un moyen de le faire plus rapidement ? (via des ordres stop prédéfinis - cela ne fonctionne pas pour moi).

 
ADI1966 >> :

2. la taille maximale de la position autorisée par le courtier est de 20 lots. J'ai besoin d'ouvrir une position de 100 lots. Maintenant, j'ouvre en succession,

mais cela prend beaucoup de temps, environ 4 secondes par commande. (c'est-à-dire qu'il faut 20 secondes pour ouvrir une position), et parfois ce n'est pas bon. Y a-t-il un moyen de le faire plus rapidement ? (par le biais d'ordres stop placés à l'avance - cela ne fonctionne pas pour moi).

https://forum.mql4.com/ru/13567
 
kombat писал(а) >>
https://forum.mql4.com/ru/13567

lire.

J'ai bien compris que sur un tick l'EA va envoyer plusieurs ordres d'achat au système de trading en même temps,

au lieu d'attendre que le serveur réponde au premier ordre d'acceptation et d'exécution, puis au second, et ainsi de suite ? ? ?

Voici comment je procède jusqu'à présent - exemple - (journal, compte réel, temps réel)

10.55.13 - ordre d'achat marché 20 RTS - il s'agit des 20 premiers lots

10.55.13 - La demande a été acceptée par le serveur.

10.55.13 - demande en cours

10.55.17 - la commande a été ouverte

10.55.18 - ordre d'achat marché 20 RTS - c'est le deuxième 20 lots

10.55.18 - La demande a été acceptée par le serveur.

10.55.19 - demande en cours

10.55.22 - la commande a été ouverte

10.55.23 - ordre d'achat marché 20 RTS - c'est le troisième 20 lots

10.55.23 - La demande a été acceptée par le serveur.

10.55.24 - demande en cours

10.55.27 - la commande a été ouverte

et je voudrais que toute la position soit ouverte dans les 4 secondes, c'est-à-dire avant 10.55.17.

 
ADI1966 писал(а) >>

2. la taille maximale de la position autorisée par le courtier est de 20 lots. J'ai besoin d'ouvrir une position de 100 lots. Maintenant, j'ouvre en succession,

mais cela prend beaucoup de temps, environ 4 secondes par commande. (c'est-à-dire qu'il faut 20 secondes pour ouvrir une position), et parfois ce n'est pas bon. Y a-t-il un moyen de le faire plus rapidement ? (via des ordres stop pré-positionnés - cela ne fonctionne pas pour moi).

Si vous utilisez 4 terminaux, 4 demandes parviendront au concessionnaire pour être traitées en même temps, et non pas une par une.

 

Igor, bonjour !

Pourriez-vous m'indiquer comment implémenter une notification sonore dans un indicateur existant ?

Par exemple, dans ZigZag. Si vous voulez avoir du son au moment de tracer la nouvelle ligne, veuillez l'enregistrer dans l'Organisateur :

//+------------------------------------------------------------------+
//| Zigzag.mq4 |
//| Copyright © 2005-2007, MetaQuotes Software Corp.
//| https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#lien de propriété "https://www.metaquotes.net//"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- paramètres de l'indicateur
extern intDepth=12 ;
extern inttern ExtDeviation=5 ;
extern inttern ExtBackstep=3 ;
//---- tampons indicateurs
double ZigzagBuffer[] ;
double HighMapBuffer[] ;
double LowMapBuffer[] ;
int level=3 ; // profondeur du recomptage
bool downloadhistory=false ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3) ;
//---- paramètres de dessin
SetIndexStyle(0,DRAW_SECTION) ;
//---- mise en correspondance des tampons indicateurs
SetIndexBuffer(0,ZigzagBuffer) ;
SetIndexBuffer(1,HighMapBuffer) ;
SetIndexBuffer(2,LowMapBuffer) ;
SetIndexEmptyValue(0,0.0) ;

//---- indicateur nom court
IndicatorShortName("ZigZag("+ExtDepth+", "+ExtDeviation+", "+ExtBackstep+")") ;
//---- initialisation faite
retour(0) ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars = IndicatorCounted() ;
int limite, counterZ, whatlookfor ;
int shift,back,lasthighpos,lastlowpos ;
double val,res ;
double curlow, curhigh, lasthigh, lastlow ;

if (counted_bars==0 && downloadhistory) // l'historique a été téléchargé
{
ArrayInitialize(ZigzagBuffer,0.0) ;
ArrayInitialize(HighMapBuffer,0.0) ;
ArrayInitialize(LowMapBuffer,0.0 ;)
}
si (counted_bars==0)
{
limit=Bars-ExtDepth ;
downloadhistory=true ;
}
if (counted_bars>0)
{
while (counterZ<level && i<100)
{
res=ZigzagBuffer[i] ;
si (res!=0) counterZ++ ;
i++ ;
}
i-- ;
limit=i ;
si (LowMapBuffer[i]!=0)
{
curlow=LowMapBuffer[i] ;
whatlookfor=1 ;
}
sinon
{
curhigh=HighMapBuffer[i] ;
whatlookfor=-1 ;
}
pour (i=limite-1;i>=0;i--)
{
ZigzagBuffer[i]=0.0 ;
LowMapBuffer[i]=0.0 ;
HighMapBuffer[i]=0.0 ;
}
}

for(shift=limite ; shift>=0 ; shift--)
{
val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)] ;
si(val==lastlow) val=0.0 ;
sinon
{
lastlow=val ;
si((Low[shift]-val)>(ExtDeviation*Point)) val=0.0 ;
sinon
{
for(back=1 ; back<=ExtBackstep ; back++)
{
res=LowMapBuffer [shift+back] ;
si((res!=0)&&(res>val)) LowMapBuffer [shift+back]=0.0 ;
}
}
}
si (Low[shift]==val) LowMapBuffer[shift]=val ; sinon LowMapBuffer[shift]=0.0 ;
//--- haut
val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)] ;
si(val==lasthigh) val=0.0 ;
sinon
{
lasthigh=val ;
si((val-High[shift])>(ExtDeviation*Point)) val=0.0 ;
sinon
{
for(back=1 ; back<=ExtBackstep ; back++)
{
res=HighMapBuffer [shift+back] ;
si((res!=0)&&(res<val)) HighMapBuffer [shift+back]=0.0 ;
}
}
}
si (High[shift]==val) HighMapBuffer[shift]=val ; sinon HighMapBuffer[shift]=0.0 ;
}

// coupe finale
si (whatlookfor==0)
{
dernier bas=0 ;
lasthigh=0 ;
}
sinon
{
lastlow=curlow ;
lasthigh=curhigh ;
}
pour (shift=limite;shift>=0;shift--)
{
res=0.0 ;
switch(whatlookfor)
{
cas 0 : // recherche d'un pic ou d'une pelouse
si (lastlow==0 && lasthigh==0)
{
si (HighMapBuffer[shift]!=0)
{
lasthigh=high[shift] ;
lasthighpos=shift ;
whatlookfor=-1 ;
ZigzagBuffer[shift]=lasthigh ;
res=1 ;
}
si (LowMapBuffer[shift]=0)
{
lastlow=Low[shift] ;
lastlowpos=shift ;
whatlookfor=1 ;
ZigzagBuffer[shift]=lastlow ;
res=1 ;
}
}
pause ;
cas 1 : // recherche d'un pic
si (LowMapBuffer[shift]=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)
{
ZigzagBuffer[lastlowpos]=0.0 ;
lastlowpos=shift ;
lastlow=LowMapBuffer[shift] ;
ZigzagBuffer[shift]=lastlow ;
res=1 ;
}
si (HighMapBuffer[shift]=0.0 && LowMapBuffer[shift]==0.0)
{
lasthigh=HighMapBuffer[shift] ;
lasthighpos=shift ;
ZigzagBuffer[shift]=lasthigh ;
whatlookfor=-1 ;
res=1 ;
}
pause ;
case -1 : // recherche de la pelouse
si (HighMapBuffer[shift]=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)
{
ZigzagBuffer[lasthighpos]=0.0 ;
lasthighpos=shift ;
lasthigh=HighMapBuffer[shift] ;
ZigzagBuffer[shift]=lasthigh ;
}
si (LowMapBuffer[shift]=0.0 && HighMapBuffer[shift]==0.0)
{
lastlow=LowMapBuffer[shift] ;
lastlowpos=shift ;
ZigzagBuffer[shift]=lastlow ;
whatlookfor=1 ;
}
pause ;
par défaut : retour ;
}
}

retour(0) ;
}
//+------------------------------------------------------------------+

Raison: