Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1937

 
VIREDS #:
Bon temps à tous les utilisateurs de mql4. Nous avons une fonction qui ferme la partie de l'ordre le plus perdant d'une série par points de pourcentage au détriment des positions rentables dans n'importe quelle direction. Nous avons besoin d'aide pour finaliser cette fonction ! En d'autres termes, nous devons clôturer partiellement tous les ordres restants de la série (en raison de positions rentables de toute direction) au lieu du premier. Merci d'avance !
Je me débats aveccette fonction depuis environ 2 mois. Il y a tellement de nuances. Surtout cette ligne
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

Lorsqu'il y a beaucoup d'ordres dans la grille, elle donne une perte totale à la fermeture, alors qu'elle devrait les fermer tous à zéro. J'ai fini par supprimer complètement les commissions et les échanges.

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
Et puis dans la fonction vous pouvez multiplier par lot/lotstep pour chaque commande, mais j'ai juste fait un multiplicateur
 
Et avant OrderClose() ils ont oublié ( !)
 
Bon après-midi. Pourriez-vous m'indiquer comment payer les services de MQL4 compte tenu de la situation actuelle ?
 

Bonjour à tous. J'ai un indicateur qui dessine une flèche sur le graphique lorsqu'un signal apparaît. Il s'avère que toutes ces flèches sont placées sur l'historique sur le graphique et vous pouvez évaluer le potentiel des signaux.

graphique avec des flèches indicatrices.

J'ai essayé de joindre une alerte qui signalerait l'apparition d'un signal. J'ai trouvé une fonction dans l'indicateur qui dessine des flèches lorsqu'un signal apparaît.

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


J'ai ajouté une ligne à la fin de cette fonction pour générer l'alerte. J'ai souligné la ligne ajoutée avec de la couleur ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

L'alerte fonctionne et tout est normal dans le testeur. Mais lorsque je démarre le terminal et s'il y a un indicateur sur le graphique, il émet autant de bips et de messages qu'il y avait de flèches sur l'historiqueJ Que dois-je faire et comment faire pour que l'alerte ne soit donnée que lorsque le dernier signal est reçu lorsque le terminal est allumé, et que les flèches sur l'historique sont silencieuses ?
 
DanilaMactep #:

Bonjour à tous. J'ai un indicateur qui dessine une flèche sur le graphique lorsqu'un signal apparaît. Il s'avère que toutes ces flèches sont placées sur l'historique sur le graphique et vous pouvez évaluer le potentiel des signaux.

J'ai essayé de joindre une alerte qui signalerait l'apparition d'un signal. J'ai trouvé une fonction dans l'indicateur qui dessine des flèches lorsqu'un signal apparaît.


J'ai ajouté une ligne à la fin de cette fonction pour générer l'alerte. J'ai souligné la ligne ajoutée avec de la couleur ;-)

L'alerte fonctionne et tout est normal dans le testeur. Mais lorsque je démarre le terminal et qu'il y a un indicateur sur le graphique, il génère autant de signaux et de messages audio qu'il y avait de flèches sur l'historiqueJ Que dois-je faire et comment faire pour que l'Alerte ne se fasse qu'au dernier signal lorsque le terminal est allumé, et que les flèches sur l'historique étaient silencieuses ?
Pour n'alerter que sur la première barre ou la barre zéro.
 

Collègues - question d'organisation :

L'espace libre sur le disque C de mon ordinateur, où je teste et optimise les expositions sur MT4 et MT 5, s'est raréfié... comme sur 220, il reste 30 Go sur mon ordinateur...

Je soupçonne que l'espace est occupé par les journaux des robots fonctionnant précédemment ou en cours de test, ainsi que par l'historique des différents symboles sur les différents terminaux et MT4 et MT5 - cela m'intéresse :

Comment effacer l'historique des symboles (ticks par symbole) et les journaux dans les différents dossiers où se trouvent les terminaux (pas beaucoup au total, environ 5).

Un peu comme avant sur MT 4 il y avait un fichier magique clear.bat.

En général, il faut une ou plusieurs options pour libérer de l'espace sous l'historique des personnages (leurs tics) et les journaux dans différents dossiers. Tous les raccourcis sur le bureau sont vers MT4 et MT5. Un peu comme.

en général pour libérer l'espace disque des tests passés (historique des tics des symboles) et des transactions (leurs journaux).

Au moins où lire comment nettoyer et quels dossiers supprimer et MT4 et MT5 - où ils sont situés...

Sps.

 

Pouvez-vous me donner un indice ?

Le conseiller expert via iCustom utilise un indicateur, mais à chaque tick il y a de telles erreurs dans le journal.

Peut-on le corriger sans modifier l'indicateur et, si oui, comment ?

 
ALEKSANDR SOKOLOV chaque tick dans le journal.

Peut-on le corriger sans modifier l'indicateur et, si oui, comment ?

Si l'indicateur, exécuté séparément du Conseiller Expert, ne produit pas de tels enregistrements, alors vérifiez si les paramètres de l'indicateur sont correctement spécifiés lorsque iCustom() est appelé dans le Conseiller Expert.

 
Roman Shiredchenko dossiers où se trouvent les terminaux (pas beaucoup au total environ 5).

Un peu comme avant sur MT 4 il y avait un fichier magique clear.bat.

En général, il faut une ou plusieurs options pour libérer de l'espace sous l'historique des personnages (leurs tics) et les journaux dans différents dossiers. Tous les raccourcis sur le bureau sont vers MT4 et MT5. Un peu comme.

en général pour libérer l'espace disque des tests passés (historique des tics des symboles) et des transactions (leurs journaux).

Au moins où lire comment nettoyer et quels dossiers supprimer et MT4 et MT5 - où ils sont situés...

Merci.

Quel est l'âge de l'ordinateur et quand les journaux système ont-ils été nettoyés dans les dossiers locaux, les dossiers temporaires et les dossiers de service Intel ou d'autres fabricants ? Sur un ordinateur vieux de 10 ans avec seulement un navigateur et un bureau, il a pris presque 100 gigas avec le sikliner de sous l'administration. Dans mon dossier Intel, j'ai trouvé 25 Go.

Des tiques dans le dossier des histoires. Là aussi par exemple de binans tous les caractères était de 25 gb. Et les logs dans le dossier partagé et mcl vérifier. Si vous démolissez les rondins, ça ne change rien. Mais si vous enlevez les tics, vous devrez peut-être attendre que les bons soient chargés.

Raison: