Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 608

 
solnce600:

Bonne journée à tous !

Pouvez-vous me dire quelle est la meilleure façon de coder la condition suivante

Si tous les chandeliers de 1 à 20 sont baissiers sans exception (le nombre de points entre l'ouverture et la fermeture de chaque chandelier n'a pas d'importance).

Pour ouvrir une commande.

La seule façon de le faire est de rédiger un ordre de "travail".


Si je pouvais l'écrire "à la main".

if(f) OrderSend(...); // открыть ордер Sell


bool f()
{
   for(int i = 1; i <= 20; i++)
    {
     if(Open[i] < Close[i]) return(false);
    }
    return(true);
}
 
AlexeyVik:

Eh bien, à moins que ce soit écrit sur place.


Merci beaucoup.
 
fmv_for_a_way:

Citoyens, pouvez-vous me dire pourquoi le terminal Alpari est incapable de passer un ordre ?

La fonction OrderSend ressemble à ceci

Il n'y a pas de paramètres égaux à zéro. Je l'ai vérifié.

La distance minimale d'arrêt et de profit selon les conditions du terminal = 0,1.

Le terminal génère l'erreur 130 et écrit sur un profit ou un stop invalide.

Les paramètres SL et TP sont respectivement 11 et 1 (après normalisation).

Sur les terminaux Aforex, Diven FX, ForexClub, AlfaForex - aucun problème avec le même code.

Pour l'achat, le Stop et la Prise sont comptés à partir du prix d'achat - c'est un.

Deuxièmement - comme les prix stop sont calculés, ils doivent être normalisés. La normalisation précédente de SL et TP n'est rien. Ensuite, dans l'ordre de transaction, vous substituez la valeur non normalisée de l'expression.

Troisièmement, tous les prix doivent respecter les exigences et les restrictions commerciales. Le niveau StopLevel, par exemple, peut être supérieur à la taille de l'ordre stop.

 

Veuillez m'expliquer pourquoi il en est ainsi.

Il existe trois conditions (en gras), qui, lorsqu'elles sont exécutées simultanément, permettent d'ouvrir un ordre avec succès.

int start()

{

int ot = OrdersTotal();

int index=iHighest(NULL,0,MODE_HIGH,20,1) ;
int index1=iLowest(NULL,0,MODE_HIGH,20,1) ;
int index3=iLowest(NULL,0,MODE_HIGH,40,20) ;

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

si ( Bid==Low[40])

si (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 ) ;

PROBLÈME

Dès que j'ajoute une quatrième condition (marquée en rouge), un ordre est ouvert UNIQUEMENT si la quatrième condition est remplie.

Lestrois conditions précédentes sont ignorées par le programme.

J'ai essayé d'écrire les conditions par &&.... ne fonctionne pas.

Comment faire en sorte que le mandat soit ouvert lorsque les quatre conditions sont remplies simultanément.

Merci.

 
solnce600:

Veuillez m'expliquer pourquoi il en est ainsi.

Il existe trois conditions (mises en évidence en gras) qui, lorsqu'elles sont exécutées en même temps, permettent d'ouvrir un ordre avec succès.

int start()

{

int ot = OrdersTotal() ;

int index=iHighest(NULL,0,MODE_HIGH,20,1) ;
int index1=iLowest(NULL,0,MODE_HIGH,20,1) ;
int index3=iLowest(NULL,0,MODE_HIGH,40,20) ;

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

si ( Bid==Low[40])

si (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 ) ;

PROBLÈME

Dès que j'ajoute une quatrième condition (marquée en rouge), l'ordre s'ouvre lorsque la quatrième condition est remplie UNIQUEMENT.

Le programme ignore lestrois conditions précédentes.

J'ai essayé d'écrire les conditions par &&.... ne fonctionne pas.

Comment faire pour que le mandat soit ouvert en même temps que l'exécution des quatre conditions.

Merci.

Développez les accolades pour que l'algorithme fonctionne.
 
artmedia70:

Pour l'achat, le stop et le take sont calculés à partir du cours acheteur - c'est le premier.

Deuxièmement, si vous calculez les prix des ordres stop, ils doivent être normalisés. Le fait que SL et TP aient été normalisés plus tôt n'est pas un problème. Ensuite, dans l'ordre de transaction, vous substituez la valeur non normalisée de l'expression.

Troisièmement, tous les prix doivent respecter les exigences et les restrictions relatives aux opérations commerciales. Le niveau de StopLevel, par exemple, peut être supérieur à la taille de l'ordre stop.



sur alpari depuis hier est passé à l'exécution sur le marché c.-à-d.

D'abord acheter/vendre sl=0;tp=0 ; puis modifier sl=100;tp=300 ;

 
AlexeyVik:
Développez les accolades pour que l'algorithme fonctionne.

Merci.
 
pako:


sur alpari depuis hier est passé à l'exécution sur le marché c.-à-d.

d'abord acheter/vendre sl=0;tp=0 ; ensuite modifier sl=100;tp=300 ;

C'est aussi au même endroit. Bien sûr, l'un ne contredit pas l'autre. Il compte les ordres d'arrêt pour l'achat à partir de la demande. Elle ne les normalise pas. Ne vérifie pas la limite de distance StopLevel.

En bref - un méli-mélo.

 
Super, les questions sont supprimées, super.
 
pako:


Alpari est passé à l'exécution sur le marché depuis hier, c'est à dire

d'abord acheter/vendre sl=0;tp=0 ; ensuite modifier sl=100;tp=300 ;


Merci pour les conseils. Je me pencherai sur la question. Le passage à l'exécution sur le marché signifie-t-il que les ordres en attente doivent également être placés avec des stops et des profits nuls, puis modifiés ?