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

 
Dimka-novitsek:

if(Stoch_1>Stoch_2) { flag1=1 ; Print (flag1,flag2,flag3,flag4) ; }


if(Stoch_1<Stoch_2 && flag1==1) flag2=1 ; Print (flag1,flag2,flag3,flag4) ; }

if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) {flag3=1 ; Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");}


si(Stoch_1<Stoch_2 && flag1==1 && flag2==1 && flag3==1) flag4=1 ;
{Imprimer (flag1,flag2,flag3,flag4);}
if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 && flag3==1 && flag4==1)
{OrderSend (Symbol( ), OP_SELL, 0.01 ,Bid, 0, 0, 0, NULL, 450, 0, CLR_NONE) ;
Print ("OUT");}



flag1=0 ;
flag2=0 ;
flag3=0 ;
flag4=0 ;

En comprenant que tu vas apprendre et pour apprendre, tu écris quelque chose... Au moins, j'ai disposé vos parenthèses de manière à ce qu'elles jouent un rôle, à mon avis.


et même si votre code a donné 24 erreurs dans le compilateur !!! merci quand même pour l'aide bâclée.... pour l'idée... (maintenant ça marche - bien que j'ai essayé de le faire de cette façon en principe, mais la ponctuation posait problème)
 

Je me suis à nouveau demandé quel était l'indice de position. S'il s'agit d'un numéro de position dans l'historique, alors que fait cette fonction ?

GetIndexLastPos Index de la dernière position ouverte ou -1 ? ??

l'indice de la dernière position ouverte est toujours 1 car c'est la plus récente ! !!

Je comprends manifestement mal l'INDEX .....

indice qui sait ?

 
lottamer:

Comment pensez-vous qu'il devrait être comparé ?

Commençons :

1.Si(Stoch_1>Stoch_2) flag1=1 ; , alors la condition qui la suit (Stoch_1<Stoch_2 && flag1==1) ne peut en principe pas être vraie, car si Stoch_1<Stoch_2 flag1==0 et si flag1==1alors Stoch_1>Stoch_2. il en est de même pour toutes les conditions suivantes dans cette fonction, donc seul le flag1 peut changer la valeur. Autrement dit, votre programme exécutera les deux premières lignes, sautera latroisième, exécutera laquatrième, sautera lacinquième, exécutera la sixième, exécutera la septième et sautera toutes les autres.


	          
 
xant:

TarasBY,

Var1 et les autres nommés comme j'ai, inséré le bloc fGet_MineGV() dans init et le bloc fSave_MineGV() dans staft.

Lors de la compilation, l'EA a donné un tas d'erreurs.

Je les ai essayés un par un. Je l'ai d'abord inséré dans init, puis je l'ai compilé. Il y a 0 erreur, une remarque : n'est pas référencé et sera supprimé du fichier exp. Cela me semble logique, il ne peut pas trouver le fichier, car il n'existe pas encore. Il doit être écrit à l'intérieur de l'arbre.

Ainsi, lorsque j'essaie d'écrire le deuxième bloc à l'intérieur de l'arbre, cela produit beaucoup d'erreurs.

Algorithme structurel :

int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

Vous avez, bien sûr, fait ça ? ?? Et il ne compile pas ???

 
lottamer:

Je me suis à nouveau demandé quel était l'indice de position. S'il s'agit d'un numéro de position dans l'historique, alors que fait cette fonction ?

GetIndexLastPos Index de la dernière position ouverte ou -1 ? ??

l'indice de la dernière position ouverte est toujours 1 car c'est la plus récente ! !!

Je comprends manifestement mal l'INDEX .....

indice qui sait ?


l'indice du dernier ouvert est toujours 1 car c'est le plus récent ! !! Pas 1, mais 0, et pas dans l'histoire. Dans l'historique, 0 est l'indice de la dernière position fermée ou du dernier ordre supprimé, et pas toujours, car outre le marché, il y a aussi des ordres en attente, qui ne sont pas des positions.
 
Profi, dites-moi s'il vous plaît comment écrire ce qui suit par programme : "Pour mettre un ordre en attente au niveau SL avec les paramètres d'un ordre de fermeture en tenant compte du spread" et où le joindre dans le code d'un EA ?
 
yosuf:
Prof Profi, dites-moi s'il vous plaît comment écrire le programme suivant : "Pour placer un ordre en attente au niveau SL avec les paramètres d'un ordre de clôture, y compris le spread" et où le joindre dans le code EA ?

Vous ne pouvez pas le faire avec les paramètres d'un ordre de fermeture. Le prix d'ouverture est également un paramètre.
 

TarasBY

Oui, j'ai fait comme vous l'avez écrit. Et ça ne compile pas.

Il est évident que j'ai fait quelque chose de mal, mais je ne sais pas quoi exactement. Vous pouvez le faire étape par étape.

 
rigonich:

Il n'y a aucun moyen avec les paramètres de celui qui doit être fermé. Le prix d'ouverture est également un paramètre.
Pourquoi ? Par exemple, un ordre a été ouvert avec O=1,2900, TP 1,300 et SL 1,2800. L'ordre en attente doit avoir les paramètres BAY O= 1.2800 avec TP 1.2900 et SL 1.2700. Si possible, veuillez considérer que la propagation est perdue.
 
yosuf:
Pourquoi ? Par exemple, un ordre BAY est ouvert à O= 1,2900 avec un TP de 1,300 et un SL de 1,300. L'ordre en attente doit avoir les paramètres BAY O= 1.2800 avec TP 1.2900 et SL 1.2700. Si possible, veuillez considérer que la propagation est perdue.


Le premier ordre a un prix ouvert de 1,2900 et un TP de 1,300. Le second ordre a un prix ouvert de1,2800 et un TP de 1,290. Il s'agit de paramètres différents. Le premier est BAY, le second est BAY_STOP. Il s'agit également de paramètres différents. Et lorsque vous fermez sur le SL, vous ne perdez pas le spread, mais bien plus (spread+SL*Point).