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

 

à Armen

Cela signifie que les fonctions n'ont pas été utilisées dans l'EA. Écrivez quelque chose comme

if (CountBuys()>2 && CountSells()>2) {\\действия}

 
Veuillez me dire s'il est possible de retirer les fonds excédentaires, par exemple dans un coffre-fort, s'ils dépassent le dépôt initial pendant que l'EA est en cours d'exécution et de les laisser dans le dépôt initial, sans fermer les positions ouvertes?
 
link1:


Vinin, merci beaucoup pour votre réponse. Mais honnêtement, je ne comprends pas pourquoi les valeurs 1,-1,-1 sont attribuées à ask1,ask2,ask3. Qu'est-ce que cela signifie ? Si cela ne vous dérange pas, pourriez-vous décrire en mots ce qui se passe et comment cela se passe, je suis un débutant, je ne comprends pas encore tout. Je vous en serai très reconnaissant).


On leur attribue des valeurs qui ne seront jamais égales au prix.

 
yosuf:
Puis-je retirer les fonds excédentaires, par exemple vers le coffre-fort, s'ils dépassent le dépôt initial pendant l'opération EA et les laisser dans le dépôt initial sans fermer les positions ouvertes ?

Sur MT5, vous pouvez voir. Utilisation de TesterWithdrawal() pour simuler un retrait de bénéfices

Cela n'est pas possible sur MT4

 

Bonjour !

J'écris un indicateur qui compte le nombre de points que le prix a monté et descendu pendant un tick.
Qu'est-ce qui ne va pas avec le code et où se trouve l'erreur, s'il vous plaît conseillez !

#property indicator_chart_window

extern int LimitBar = 10;
extern int cegl = 6;
extern string Shrift = "Arial Black";
extern bool delete = true;



double old_price, max_price, sum_pip_sell, sum_pip_bay, new_pip_bay, new_pip_sell, old_pip_bay, old_pip_sell;
datetime ctat_SB =0;

int init() {return(0);}

int deinit() {
if (delete == true) {
GetDellName(); 
}
ObjectsDeleteAll(0, OBJ_TREND);
return(0);
}

int start() {
double price;
string name_4,name_b;
int i=0;
int limit, pip; 
double delta; 
int counted_bars=IndicatorCounted(); 
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(ctat_SB==0) ctat_SB=Time[0];

if(limit>0) limit=0;

for(i=limit; i>=0; i--) {
if(old_price==0) old_price=Close[i];

if(iBarShift(NULL,0,ctat_SB)-iBarShift(NULL,0,Time[i])>=LimitBar) { ' счетчик баров для LimitBar

sum_pip_sell =0;
sum_pip_bay = 0; 
new_pip_bay = 0;
new_pip_sell = 0;
old_pip_bay = 0;
old_pip_sell = 0;

} 

price = Close[i];
if(price > max_price) max_price=price; 

delta = price - old_price; ' разница пунктов
pip = delta*10000; ' округляем до целого

//---- Каунт плюс 

if(delta>=0) { ' условие для ап пунктов

new_pip_bay = pip;
sum_pip_bay = old_pip_bay+new_pip_bay;
old_pip_bay = sum_pip_bay; 

}
//---- Каунт минус
if(delta<0) { ' условие для даун пунктов

new_pip_sell = MathAbs(pip);
sum_pip_sell = old_pip_sell+new_pip_sell;
old_pip_sell = sum_pip_sell;

} 
//----
old_price=price;

//---- размещаем счетчик на графике
name_4 = "TPM_ 4 "+TimeToStr(ctat_SB);
SetText(name_4+"sell",DoubleToStr(sum_pip_sell,0), ctat_SB+60*Period()*2, max_price+(Ask-Bid)*6, Blue,12); 
SetText(name_4+"bay",DoubleToStr(sum_pip_bay,0),ct at_SB-60*Period()*2, max_price+(Ask-Bid)*4.5, Red,12); 

} 

return(0);
}
void SetText(string name,string text,datetime t1, double p1, color c, int size) // --- отображение текста
{
if (ObjectFind(name)!=-1) ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,0,0,0,0,0); 
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1); 
ObjectSetText(name,text,cegl,Shrift,c);
}

//+------------------------------------------------------------+
void GetDellName (string name_n = "TPM_ ") // -- удаление меток с графика
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
} 
} 
//----

Merci d'avance !


 
yosuf:
Dites-moi s'il est possible de retirer des fonds excessifs, par exemple au coffre-fort, s'ils dépassent le dépôt initial pendant le travail de l'EA et de les laisser dans le dépôt initial, sans fermer les positions ouvertes ?
.

N'autorisez le conseiller expert à négocier qu'avec un dépôt égal au dépôt initial.

N'oubliez pas la taille du dépôt initial et avant chaque ouverture d'une position, vérifiez son lot. Si le volume de transactions dépasse la valeur autorisée - réduisez le lot ou libérez les fonds.

 
Fox_RM:

Bonjour !

J'écris un indicateur qui compte le nombre de points que le prix a monté et descendu pendant un tick.
Qu'est-ce qui ne va pas avec le code et où se trouve l'erreur, s'il vous plaît conseillez !

Merci d'avance !


Pourquoi y a-t-il tant de choses ?

Retenez le prix du tick précédent. À l'arrivée d'un nouveau tick, comptez la différence de prix divisée par le point et retenez à nouveau ce prix comme le prix du tick précédent.

 
artmedia70:

Pourquoi y a-t-il tant de choses ?

Retenez le prix du dernier tick. À l'arrivée d'un nouveau tick, comptez la différence de prix divisée par le point et retenez à nouveau ce prix comme le prix du tick précédent.

Dans les conditions pour les points AP et DAUN, le code est exactement comme prescrit, mais lors de l'affichage de l'indicateur sur le graphique des prix, le marqueur sort 0 pour la hausse et 0 pour la baisse du nombre de points. Quel est le problème ? Je ne comprends pas !
 

Messieurs les programmeurs !

La priorité (et l'associativité) des opérations MQL4 correspond-elle à C ?

Je ne veux pas abuser des parenthèses, mais la priorité des opérations n'est mentionnéenulle part dans la documentation.

Ce n'est pas une question futile. MQL4 est positionné comme un langage de type C. Le mot clé ici est DEFINITIVEMENT. Si le calcul complet des expressions logiques n'est qu'un écart par rapport à la norme C, la visibilité des variables définies dans un bloc en dehors de ce bloc est une erreur grave dans les canons de la programmation.

Qui sait jusqu'où pourrait aller l'imagination des développeurs de MQL4 :).

 
artmedia70:

N'autorisez le conseiller expert à négocier qu'avec un dépôt égal au dépôt initial.

N'oubliez pas la taille du dépôt initial et avant chaque ouverture d'une position, vérifiez son lot. Si le volume de la transaction dépasse la taille autorisée, réduisez le lot ou libérez les fonds.

Je veux dire quelque chose comme ceci : quand je trade sur micro-real avec un dépôt de 10k cents, puis-je retirer mes fonds excédentaires manuellement quand je veux pendant le fonctionnement de l'EA, ou dois-je arrêter l'EA, fermer toutes les positions ouvertes et seulement ensuite retirer les fonds excédentaires ? Je négocie avec un lot fixe de 0,1. Comment puis-je réellement mettre en œuvre votre recommandation ? "Permettre au Conseiller Expert de trader uniquement avec un dépôt égal au dépôt initial.