[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 1110

 
ALEX_SPB_RU:

Je ne comprends toujours pas !

Même si je spécifie explicitement que la recherche doit commencer à partir de la position zéro, l'objet nommé ya ya_Prefix_78 sera supprimé , car la fonction retournera le numéro 4

Plus précisément, pour supprimer par préfixe, vous devez spécifier soit ==0, soit mettre !

Sans vouloir vous offenser, je suis en train d'apprendre, alors je veux tout déballer pour moi-même.

Merci encore pour votre aide !

Bonne chance !

Peut-être que je n'ai pas été assez clair :

si(StringFind(name, prefix,0) == 0) est de rechercher exclusivement à partir du début de la chaîne.

Je n'aime pas les paramètres par défaut, sauf s'il s'agit de fonctions écrites à la main - là, le contrôle est total.....

Bonne chance.

 
abolk:

J'aimerais aider quelqu'un en particulier qui a besoin d'aide. Mais je sais par expérience que si quelqu'un est trop paresseux pour comprendre sa propre tâche, alors l'aider est un véritable gâchis...
Pourquoi ? Est-il possible de soutenir qu'il est plus rapide et plus facile pour une personne compétente d'écrire du code que pour quelqu'un qui vient d'ouvrir un manuel, qui fera quelques erreurs et n'obtiendra que le bon résultat ? Si vous voulez dire que je ne veux pas réfléchir à la façon d'écrire, alors logiquement j'écrirais immédiatement le problème et demanderais à en écrire un, mais non, je veux me comprendre, mais pas tout le langage, mais exactement ma tâche
 
sergeev:

Je vous ai écrit des noms de fonctions spécifiques.

Je vous ai même montré l'algorithme de vos actions.

Es-tu même trop paresseux pour réfléchir à ce que tu as écrit ?

Je n'ai trouvé que OrderModify, je n'ai pas trouvé OrderOpenPrice , bien que je me souvienne l'avoir vu auparavant. Quant à la réflexion, je pensais qu'une telle tâche appartenait aux fonctions booléennes (je pense à si, alors) dans lesquelles il faut mettre ce que vous avez écrit. ai-je raison ?
 
Danil93:
Je n'ai trouvé que OrderModify, je n'ai pas trouvé OrderOpenPrice , bien que je me souvienne l'avoir vu auparavant. Pour ce qui est de la réflexion, je pensais qu'un tel problème appartient aux fonctions booléennes (je pense à if, then) dans lesquelles il faut écrire ce que l'on a écrit. ai-je raison ?

Oui.

ok. si je te donne une fonction que tu veux, tu peux au moins la coller dans le code toi-même ?

 
sergeev:

Ouais.

ok. si je vous donne la fonction que vous voulez, pouvez-vous au moins l'insérer dans le code vous-même ?

i peut
 

comment trouver le maximum entre une certaine date et une autre date de manière programmatique.

Il existe une fonction qui recherche un sommet par barre ; je comprends qu'elle recherche un sommet de 0 barre à 4 barres ; puis-je utiliser la date et l'heure de la barre au lieu de la barre ?

Par exemple, je peux déterminer la date 2011.01.05 20:00 et trouver la barre (10 ou 100 barres) et ensuite la coller dans la fonction de recherche du haut ?

iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,4,0)
 
Eliza:

comment trouver le maximum entre une certaine date et une autre date de manière programmatique.

Il existe une fonction qui recherche un sommet par barre ; je comprends qu'elle recherche un sommet de 0 barre à 4 barres ; puis-je utiliser la date et l'heure de la barre au lieu de la barre ?

Par exemple, je peux déterminer la date 2011.01.05 20:00 et trouver la barre (10 ou 100 barres) et ensuite la coller dans la fonction de recherche du haut ?


int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) 
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. 
Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости 
от параметра exact, -1 или смещение ближайшего бара.

Параметры:
symbol   -   Символьное имя инструмента. NULL означает текущий символ. 
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
time   -   Значение времени для поиска. 
exact   -   Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. 
            TRUE - iBarShift возвращает -1. 

Пример:
  datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

 
 
VladislavVG:

Merci.)
 
Danil93:
peut
//------------------------------------------------------------------ TralTP
void TralTP()
{
        int TS=20; // расстояние убытка, на котором переносим тейкпрофит на цену открытия
        
        double FreezLvl=MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point; // расстояние заморозки ордера
        double StopLvl=MarketInfo(Symbol(), MODE_STOPLEVEL)*Point; // расстояние стопуровня ордера
        
        int n=OrdersTotal(); // число текущих открытых ордеров
        for (int i=0; i<n; i++) // проходим по всем ордерам и двигаем стоп
        {
                if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // берем ордер
                if (OrderSymbol()!=Symbol()) continue; // если ордер не нашей валюты, то пропускаем
                
                // берем его параметры
                int dir=OrderType(); double cop=NormalizeDouble(OrderOpenPrice(), Digits);
                double csl=NormalizeDouble(OrderStopLoss(), Digits); 
                double ctp=NormalizeDouble(OrderTakeProfit(), Digits);
                
                double apr; if (dir==OP_BUY) apr=Bid; else apr=Ask;
                // проверили уровень заморозки
                if (MathAbs(ctp-apr)<=FreezLvl || MathAbs(csl-apr)<=FreezLvl) continue; // если уровень заморозки
                
                double tp=cop; // ставим ТП на цену открытия
                
                // и проверяем условия выполнения отхода в убыток и правильность установки
                if ((dir==OP_BUY && cop-apr>=TS*Point && (tp<ctp || ctp==0) && tp>apr+StopLvl)
                 || (dir==OP_SELL && apr-cop>=TS*Point && (tp>ctp || ctp==0) && tp<apr-StopLvl))
                {
                        if (!OrderModify(OrderTicket(), cop, csl, tp, 0)) 
                                Print(GetLastError(), " -TralPos #"+OrderTicket()+" tp="+tp);
                }
        }
}
 


if (OrderSymbol()!=Symbol()) continue ; // si l'ordre n'est pas dans notre devise, alors on passe à autre chose.

Je ne comprends encore rien, je viens d'entrer sur le forum, je regarde pendant 15 secondes, mais il y a une erreur, je devrais écrire ==, à première vue, désolé si quelque chose ne va pas.

Joyeuses fêtes ! !! Tout le monde !!!!