[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 42
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а что у ДЦ есть ограничения по количеству сделок?
У некоторых есть не только ограничение по количеству сделок, но даже ограничение на количство запросов.
Они ТАКИЕ изобретатели! :-))
а остальные висят до конца теста хотя по условию при открытии одной сделки другая должна закрываться.
И еще вопрос по ошибкам 4051 и 134 при использовании OrderClose(), что они значат? Скопировал инфо из лога.
Вроде последний вариант более менее стал работать. Хотя можно упростить расчеты
Подскажите пожайлуста! Как мне при при достижении определенной цены закрить два отложеных ордера с однаковым magic, но с разным лотом.
int start()
{
double MyLastBullOpenPrice=0;
for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
{
OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==12345 && OrderType()==OP_BUY)
{
MyLastBullOpenPrice=OrderOpenPrice();
double Cena=OrderOpenPrice()+5*Point;
double Totalcena= Bid;
if (Totalcena>Cena)
{
if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if(OrderMagicNumber()==12345)
{ if (OrderDelete(OrderTicket())==true)
{
Print("Error = ",GetLastError()); return(0);
}
} } } } }
}
}
return(MyLastBullOpenPrice);
}
а остальные висят до конца теста хотя по условию при открытии одной сделки другая должна закрываться.
И еще вопрос по ошибкам 4051 и 134 при использовании OrderClose(), что они значат? Скопировал инфо из лога.
134 - нет денюх, 4051 - херовые параметры переданы функции.
По сути вопроса - проверьте, чтобы переменная magick присваивалась у вас только 1 раз, желательно в функции init(), иначе у каждого ордера будет свой магик, и результат получится примерно такой, как вы и рассказываете.
Пожалуйста, помогите дописать (или написать) функцию замены символов в строке через массивы.
Имеем два массива символов:
string symbols1[] = {"a","b","c","d"};string symbols2[] = {"1","2","3","4"};
Пытался написать функцию, которая бы заменяла текст badc на 2143, исходя из массивов, получилось вот так:
string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);
string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}
Знаю что не правильно и собрать массив в строку вообще не могу. Прошу помощи.
У некоторых есть не только ограничение по количеству сделок, но даже ограничение на количство запросов.
Они ТАКИЕ изобретатели! :-))
Пожалуйста, помогите дописать (или написать) функцию замены символов в строке через массивы.
Имеем два массива символов:
string symbols1[] = {"a","b","c","d"};string symbols2[] = {"1","2","3","4"};
Пытался написать функцию, которая бы заменяла текст badc на 2143, исходя из массивов, получилось вот так:
string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);
string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}
Знаю что не правильно и собрать массив в строку вообще не могу. Прошу помощи.
по идее ты нашел индекс символа в массиве замены, так зачем создавать еще один массив?
попробуй в обычную текстовую переменную в первом же цикле плюсовать полученные данные:
string ReplaceSymbolsInStr(string text)
{string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
string textNew="";
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) {textNew = textNew + symbols2[ i2 ] ; i2=ArraySize(symbols1) ; }
}
}
return (textNew);
}
а еще легче вот так:
string ReplaceSymbolsInStr(string text)
{string symbols1[4] = {"a","b","c","d"}; // размер массива по количеству символов в нем
string textNew="";
for (int i1=0; i1< StringLen(text) ; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol)
{
textNew = textNew + (i2+1) ; // к возвращаемому тексту прибавили номер самого символа отсчет от ЕДИНИЦЫ
i2=ArraySize(symbols1) ; // закончили цикл поиска
}
}
}
return (textNew);
}
День добрый!
Подскажите (или дайте ссылку примера), как организовать в советнике автоматическу отправку данных в формате csv на e-mail ?
Спасибо.