Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Si vous aimez ma solution, écrivez-moi en personne. Je vais l'affiner et le donner.
Bonne chance à tous.
Un cycle de symboles, la vérification de l'ouverture d'une nouvelle barre lorsqu'une cotation arrive, etc. peuvent facilement être ajoutés à ma solution. Et qu'est-ce que la POO a à voir avec ça ?
Vous avez choisi un mauvais exemple. Pensez à autre chose à votre guise.
Et vous le faites. Étant donné que les personnages peuvent changer - après tout, c'est vrai quand on lit des personnages.
Faites-le. Étant donné que les personnages peuvent changer - parce que lorsque vous lisez les personnages est vrai.
Et si je le fais ? Que dites-vous alors ? Je vais vous dire un secret : pour moi, ce genre de tâche est un véritable jeu d'enfant. Tu penses vraiment que je ne peux pas le faire ? C'est juste naïf...
Et si je le fais ? Que dites-vous alors ? Je vais vous dire un secret : pour moi, ce genre de tâche est un véritable jeu d'enfant. Tu penses vraiment que je ne peux pas le faire ? C'est juste naïf...
Eh bien, faites-le déjà.
Artyom n'a pas répondu à la question, mais la question est la suivante : écrivez dans un style procédural, de façon à ce que cela fonctionne correctement.
Sans aucun doute. Couverture pour économiser la comparaison des opérations sur les chaînes de caractères, enfin, si le client est un maniaque et qu'il négocie sur tous les symboles simultanément.
Mais il semble qu'il n'y ait pas d'autre endroit pour sauvegarder les opérations et la mémoire - tout est minimal.
void OnTimer(){
Alert(Fn_new_bar("EURUSD", PERIOD_D1)); }
//+------------------------------------------------------------------+
uint Sp_Adler32(string line){
ulong s1 = 1;
ulong s2 = 0;
uint buflength=StringLen(line);
uchar char_array[];
ArrayResize(char_array, buflength,0);
StringToCharArray(line, char_array, 0, -1, CP_ACP);
for (uint n=0; n<buflength; n++){
s1 = (s1 + char_array[n]) % 65521;
s2 = (s2 + s1) % 65521;}
return ((s2 << 16) + s1);}
//+------------------------------------------------------------------+
bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf){
static datetime st_time[];
static uint st_id[];
//---- set
datetime new_time = iTime(symb, tf, 0); if(new_time==0) return(false);
uint new_id = Sp_Adler32(StringConcatenate(symb,EnumToString(tf)));
datetime old_time = 0;
uint old_id = 0;
//---- find
int size = ArraySize(st_time);
for(int i=0; i<size; i++){
if(st_id[i]!=new_id) continue;
old_id = st_id [i];
old_time = st_time[i];
break;}
//----add new element
if(old_time==0){
ArrayResize(st_time, size+1); st_time[size]=new_time;
ArrayResize(st_id, size+1); st_id [size]=new_id; }
//----
return(old_time>0 && old_time<new_time);}
Je m'excuse pour ce léger retard.
Voici la première version de la fonction. Vous pouvez l'affiner et le développer davantage. Si vous remarquez une erreur, veuillez nous faire part de vos commentaires.
L'intérêt n'est pas dans la POO mais dans le fait que votre code est linéaire, même si vous ne l'apprendrez probablement jamais...
Pas de problème. Couverture pour sauver la comparaison des opérations sur les chaînes de caractères, enfin, si le client est un maniaque et qu'il négocie sur tous les caractères simultanément.
Mais il semble qu'il n'y ait pas d'autre endroit pour sauvegarder les opérations et la mémoire - tout est minimum.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Mt4 Fin du support.
Artyom Trishkin, 2017.09.10 23:21
J'avais pour objectif que le résultat final de son code de style procédural fonctionne dans une telle boucle :
Mal nommée par habitude -bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf) est la bonne fonction.
Eh bien, faites-le maintenant.
OK. Votre solution ne fonctionne que sur les tiques. Le mien est sur minuterie. Pensez-vous que ma méthode de chronométrage des apparitions dans les bars présente un inconvénient ? Ok. Que ce soit comme ça. Je vais ajouter une vérification de l'arrivée d'un devis avant de mettre un nouveau drapeau de barre. Je vais ajouter un autre paramètre à la fonction - un symbole. L'utilisateur choisira le symbole par lequel il veut recevoir le nouvel événement de barre et l'envoyer à la fonction. La fonction vérifiera l'heure de la dernière citation de ce symbole. Ensuite, nous comparerons l'heure de l'apparition formelle du bar et l'heure de la cotation et nous mettrons le drapeau d'événement.
Je viens seulement de commencer à étudier ce sujet, mais je ne vois pas de difficultés.
Il ne s'agit pas de POO, il s'agit de la linéarité de votre code, même si vous ne le saurez jamais...