besoin de conseils d'un pro du chalut qui contrôle deux positions indépendamment l'une de l'autre, comment le mettre en œuvre ?
Le chalut doit de toute façon distinguer les positions, nous pouvons donc attribuer des magies différentes aux ordres et mettre en place deux chaluts avec des magies différentes.
Ou devrions-nous intégrer le code du chalut dans l'EE ? Dans ce cas, nous devons toujours attribuer des numéros magiques différents aux ordres et dupliquer la fonction de suivi sur deux symboles magiques. IMHO.
Dans tous les cas, un chalut doit faire la distinction entre les positions, il est donc possible d'attribuer des magies différentes aux ordres et de définir deux chaluts avec des magies différentes.
Comment cela se présenterait-il dans le code ?
Y a-t-il un chalut distinct pour chaque poste ?
Et s'il y a 6 à 8 postes ?
Est-il vraiment impossible de simplifier ?
le chalut est dans l'EA
Comment cela se présenterait-il dans le code ? Est-il possible d'écrire un nouveau magik pour chaque position ?
Y a-t-il un chalut distinct pour chaque poste ?
Et s'il y a 6 à 8 postes ?
Cela ne pourrait-il pas être plus simple ?
S'il y a beaucoup de postes, il est difficile d'avoir un chalutage séparé pour chacun d'entre eux, je suis d'accord. S'il y a deux postes à la fois, c'est parfait à mon avis.
Peut-être que cela peut être plus simple, mais quelle devrait être la différence de chalutage entre les différents ordres ?
comment cela se présenterait-il dans le code ? un nouveau magik serait-il écrit pour chaque position ?
Y a-t-il un chalut distinct pour chaque poste ?
Et s'il y a 6 à 8 postes ?
est-il vraiment impossible de simplifier ?
le chalut est dans l'EA
Désactiver le chalut dans EA et utiliser le chalut intégré, il y a un chalut séparé pour chaque position.
pas drôle
//--------------------------------------------------------------- 1 -- // Функция модификации StopLoss всех ордеров указанного типа // Глобальные переменные: // Mas_Ord_New Массив ордеров последний известный // int TralingStop Значение TralingStop(количество пунктов) //--------------------------------------------------------------- 2 -- int Tral_Stop(int Tip) { int Ticket; // Номер ордера double Price, // Цена открытия рыночного ордера TS, // TralingStop (относит.знач.цены) SL, // Значение StopLoss ордера TP; // Значение TakeProfit ордера bool Modify; // Признак необходимости модифи. //--------------------------------------------------------------- 3 -- for(int i=1;i<=Mas_Ord_New[0][0];i++) // Цикл по всем ордерам { // Ищем ордера задан. типа if (Mas_Ord_New[i][6]!=Tip) // Если это не наш тип.. continue; //.. то переступим ордер Modify=false; // Пока не назначен к модифи Price =Mas_Ord_New[i][1]; // Цена открытия ордера SL =Mas_Ord_New[i][2]; // Значение StopLoss ордера TP =Mas_Ord_New[i][3]; // Значение TakeProft ордера Ticket=Mas_Ord_New[i][4]; // Номер ордера if (TralingStop<Level_new) // Если меньше допустимого.. TralingStop=Level_new; // .. то допустимый TS=TralingStop*Point; // То же в относит.знач.цены //--------------------------------------------------------- 4 -- switch(Tip) // Переход на тип ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)<// Если ниже желаемого.. NormalizeDouble(Bid-TS,Digits)) { // ..то модифицируем его: SL=Bid-TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)>// Если выше желаемого.. NormalizeDouble(Ask+TS,Digits)|| NormalizeDouble(SL,Digits)==0)//.. или нулевой(!) { // ..то модифицируем его SL=Ask+TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не надо модифи.. continue; // ..то идём по циклу дальше bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его! //--------------------------------------------------------- 5 -- if (Ans==false) // Не получилось :( { // Поинтересуемся ошибками: if(Errors(GetLastError())==false)// Если ошибка непреодолимая return; // .. то уходим. i--; // Понижение счётчика } } return; // Выход из пользов. функции } //--------------------------------------------------------------- 6 --code de chalutage
Eh bien, je ne peux que suggérer que chaque ordre devrait se voir attribuer un nouveau magik à son tour, et qu'une fonction de type distincte devrait être créée pour chaque ordre :
//--------------------------------------------------------------- 1 -- // Функция модификации StopLoss всех ордеров указанного типа // Глобальные переменные: // Mas_Ord_New Массив ордеров последний известный // int TralingStop_1 Значение TralingStop(количество пунктов) //--------------------------------------------------------------- 2 -- int Tral_Stop(int Tip) { int Ticket; // Номер ордера double Price, // Цена открытия рыночного ордера TS, // TralingStop (относит.знач.цены) SL, // Значение StopLoss ордера TP; // Значение TakeProfit ордера bool Modify; // Признак необходимости модифи. //--------------------------------------------------------------- 3 -- if(OrderMagicNumber() == magic_1){ for(int i=1;i<=Mas_Ord_New[0][0];i++) // Цикл по всем ордерам { // Ищем ордера задан. типа if (Mas_Ord_New[i][6]!=Tip) // Если это не наш тип.. continue; //.. то переступим ордер Modify=false; // Пока не назначен к модифи Price =Mas_Ord_New[i][1]; // Цена открытия ордера SL =Mas_Ord_New[i][2]; // Значение StopLoss ордера TP =Mas_Ord_New[i][3]; // Значение TakeProft ордера Ticket=Mas_Ord_New[i][4]; // Номер ордера if (TralingStop<Level_new) // Если меньше допустимого.. TralingStop=Level_new; // .. то допустимый TS=TralingStop*Point; // То же в относит.знач.цены //--------------------------------------------------------- 4 -- switch(Tip) // Переход на тип ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)<// Если ниже желаемого.. NormalizeDouble(Bid-TS,Digits)) { // ..то модифицируем его: SL=Bid-TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)>// Если выше желаемого.. NormalizeDouble(Ask+TS,Digits)|| NormalizeDouble(SL,Digits)==0)//.. или нулевой(!) { // ..то модифицируем его SL=Ask+TS; // Новый его StopLoss Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не надо модифи.. continue; // ..то идём по циклу дальше bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его! //--------------------------------------------------------- 5 -- if (Ans==false) // Не получилось :( { // Поинтересуемся ошибками: if(Errors(GetLastError())==false)// Если ошибка непреодолимая return; // .. то уходим. i--; // Понижение счётчика } } return; // Выход из пользов. функции } } //--------------------------------------------------------------- 6 --
pas drôle
Bon marché et joyeux.
Si chaque position a son propre chalut, la valeur de la variable du chalut doit être différente pour chaque position. Par conséquent, pour chaque chalut, il y a une variable, combien de postes aurez-vous au maximum ?
Bon marché et bon marché.
Si chaque position a son propre chalut, alors la valeur de la variable chalut doit être différente pour chaque position. Par conséquent, pour chaque chalut il y a une variable, combien de positions au maximum aurez-vous ?
8 positions maximum
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
mettre le chalut, fonctionne bien pour une position
mais s'il y a plus d'une position, par exemple deux positions de Sell.
il ferme les deux en même temps.
j'ai besoin d'un chalut pour travailler pour chaque position séparément
lorsque l'on négocie manuellement, cela est possible, c'est-à-dire qu'une position a un StopLoss de vente.
l'autre position de vente a un StopLoss différent
Google n'a pas aidé