[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 277
Tout de même, le code ne fonctionne pas, a fait toute l'action sur 2 bougies. et a dû apprendre que la position ont déjà plus ne s'ouvrent pas ... parce qu'il a ouvert à tous que je pouvais tout le dépôt utilisé (( Rid regarder, peut-être ce que vous devez ajouter ... serait très reconnaissant
Tout de même, le code n'a pas fonctionné, j'ai fait toutes les transactions sur 2 chandeliers.
Oui, en effet....
J'ai oublié de régler le magik dans le fi de l'ORDERSEND.
Il fonctionne bien maintenant. Vérifié. Il ne peut y avoir plus de deux transactions dirigées différemment ou plus d'une transaction unidirectionnelle.
S'il n'est pas nécessaire d'avoir plus d'une donne de n'importe quel type, il est nécessaire dans f-ki NumberOfPositions(c) de remplacer le type de donne par -1 (moins un).
Veuillez me dire ce que la fonction iTime indique.
Quel est ce charabia de 10 chiffres ? Des secondes ?
Comment les traduire en année-mois-jour-heure-minute ?
>> Comme ceci : il suffit de définir le décalage de la barre pour obtenir l'heure et la date par défaut (si time=1 ou true, vous obtenez uniquement l'heure).
Je l'ai. Pour déterminer s'il y a eu des positions sur l'historique, vous pouvez procéder comme suit :
Mais alors votre code ne fonctionnera que dans le testeur. Sinon, il faudrait changer de magik à chaque fois que vous allumez l'EA en ligne.
Exactement, c'est exactement ce dont nous avons besoin !
Veuillez m'indiquer comment insérer ce code correctement dans cette grille :
(Si je le pose directement, le testeur s'arrête juste à l'ouverture de la première position)
for(int i=0; i<OrdersTotal(); i++){if(!(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )))continue;//выбираем из истории счетаif(OrderSymbol()!=Symbol())continue;if(OrderMagicNumber()== Magic){
позиции =true;}}//Открытие позиции:bool Open_Buy(){bool res=false;if( условие_1){if( советник еще не открывал позиций с Магическим номером){
res=true;}}else{if( условие_1){if( условие_2 опирается на данные прошлого ордера){
res=true;}}}return( res);}
//==================Закрытие позиций ============================//----------------------------------------------------------------------for(int v=0; v<OrdersTotal(); v++){if(OrderSelect( v, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic){//----------------------------------------------------- if(OrderType()==OP_BUY){// если открыта бай-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Bid,3,Вlack);// закрываем позицию}}//--------------------------------------------------------if(OrderType()==OP_SELL){// если открыта селл-позиция if( вот здесь вставляй свои условия закрытия){OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);// закрываем позицию}}//------------------------------------------------------- }// Symbol() }// select}//total//------------конец блока закрытия позиций-----------------
Ce bloc doit être inséré dans la fonction START, peut-être au tout début, juste après le calcul de Ema_1, Ema_2, Ema_3. Et, apparemment, il est nécessaire de faire fonctionner le conseiller par les PRIX OUVERTS, sinon le croisement de la MA fermera constamment les positions ouvertes sur presque chaque tick.
Et de la manière dont vous l'avez fait - cela ne fonctionnerait pas correctement en ligne, car l'EA fermera toutes les positions, même celles ouvertes par un autre EA ou manuellement.
Mais j'ai déjà écrit comment le rendre encore plus simple. Au lieu de NumberOfPositions(NULL,OP_BUY,Magic) et au lieu de NumberOfPositions(NULL,OP_SELL,Magic) lors de l'ouverture des positions, il suffit d'indiquer
NombreDePositions(NULL,-1,Magic)
et alors il n'y aura pas plus d'une position sur le marché en permanence. Sans aucun bloc de fermeture.
https://docs.mql4.com/ru/array/ArrayResize
Oui, en effet. J'ai regardé, mais je ne l'ai pas vu.
Merci. (gloussements)
Je ralentis aujourd'hui. Je dois me reposer pour le week-end.
C'est à peu près ça -
Merci ! !! Je vais utiliser....
DDFedor
Débarrassez-vous de
Merci.
Tout de même, le code ne fonctionne pas, a fait toute l'action sur 2 bougies. et a dû apprendre que la position ont déjà plus ne s'ouvrent pas ... parce qu'il a ouvert à tous que je pouvais tout le dépôt utilisé (( Rid regarder, peut-être ce que vous devez ajouter ... serait très reconnaissant
Aide. Je veux un EA qui fasse des transactions la nuit. J'écris du code
int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}
Il génère une erreur
'||' - la condition ne peut pas être une chaîne de caractères
Et si la condition est raccourcie à
if(Vremya > 23:00
ça va marcher,
et s'il va sur
si(Vremya < 06:00 )
ça ne marchera pas.
Je ne comprends pas ce qui ne va pas. Pouvez-vous me dire comment régler l'heure ?
Tout de même, le code n'a pas fonctionné, j'ai fait toutes les transactions sur 2 chandeliers.
Oui, en effet....
J'ai oublié de régler le magik dans le fi de l'ORDERSEND.
Il fonctionne bien maintenant. Vérifié. Il ne peut y avoir plus de deux transactions dirigées différemment ou plus d'une transaction unidirectionnelle.
S'il n'est pas nécessaire d'avoir plus d'une donne de n'importe quel type, il est nécessaire dans f-ki NumberOfPositions(c) de remplacer le type de donne par -1 (moins un).
Veuillez me dire ce que la fonction iTime indique.
Quel est ce charabia de 10 chiffres ? Des secondes ?
Comment les traduire en année-mois-jour-heure-minute ?
>> Comme ceci : il suffit de définir le décalage de la barre pour obtenir l'heure et la date par défaut (si time=1 ou true, vous obtenez uniquement l'heure).
Fonction très pratique, je la recommande.
J'ai essayé d'ajuster le deuxième niveau, mais ça n'a pas marché.
J'ai essayé de le faire mais il ouvrait et fermait un ordre immédiatement après le test.
Je l'ai. Pour déterminer s'il y a eu des positions sur l'historique, vous pouvez procéder comme suit :
Mais alors votre code ne fonctionnera que dans le testeur. Sinon, il faudrait changer de magik à chaque fois que vous allumez l'EA en ligne.
Exactement, c'est exactement ce dont nous avons besoin !
Veuillez m'indiquer comment insérer ce code correctement dans cette grille :
(Si je le pose directement, le testeur s'arrête juste à l'ouverture de la première position)
J'ai essayé d'ajuster le deuxième niveau, mais ça n'a pas marché.
Cela semble tout à fait logique mais dans le test, il ouvre et couvre les ordres en même temps.
Je me suis occupé de la fermeture des positions lors de mon passage ici -
https://www.mql5.com/ru/forum/105913
Ce bloc doit être inséré dans la fonction START, peut-être au tout début, juste après le calcul de Ema_1, Ema_2, Ema_3.
Et, apparemment, il est nécessaire de faire fonctionner le conseiller par les PRIX OUVERTS, sinon le croisement de la MA fermera constamment les positions ouvertes sur presque chaque tick.
Et de la manière dont vous l'avez fait - cela ne fonctionnerait pas correctement en ligne, car l'EA fermera toutes les positions, même celles ouvertes par un autre EA ou manuellement.
Mais j'ai déjà écrit comment le rendre encore plus simple. Au lieu de NumberOfPositions(NULL,OP_BUY,Magic) et au lieu de NumberOfPositions(NULL,OP_SELL,Magic) lors de l'ouverture des positions, il suffit d'indiquer
NombreDePositions(NULL,-1,Magic)
et alors il n'y aura pas plus d'une position sur le marché en permanence. Sans aucun bloc de fermeture.