Вас никто не называл "лошара", зря вы так. Но и 4-6 строк кода тоже, знаете-ли вызывают недоумение - ведь раз человек чему-то учится, то должен уже что-то пробовать, что-то уже пытался написать, и явно уже видит, что в 4-6 строчек не уместиться.
Покажите что вы пытались сделать - попробуем понять.
Могу предложить альтернативный, упрощённый вариант - не искать по тикам пересечение цены некоего уровня, а искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня.
Простите что долго не отвечал. Я рад что получилось просто недоумение, я вспылил. А что касается моего вопроса, у меня получилось написать код, что бы открыть обычный ордер когда он достиг цены и что бы в последствии пересекая эту цену он не открывался вновь. Но я это сделал так:
Я уже понял, что это "детсадовский" метод и с ним работать нельзя, потому что слишком много нюансов и вообще не практично. Можете сказать в какой именно ситуации код не будет работать или как можно изменить его что бы он был работоспособным? P.s. "искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня. " Как то не очень понимаю о чем речь, так что это пока можно отложить, пока не изучу больше материала
Простите что долго не отвечал. Я рад что получилось просто недоумение, я вспылил. А что касается моего вопроса, у меня получилось написать код, что бы открыть обычный ордер когда он достиг цены и что бы в последствии пересекая эту цену он не открывался вновь. Но я это сделал так:
double b = 5;
int start()
{
double bid = Bid;
if (bid==0.7777 && b==5)
{
b=b+1;
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0,0,0);
}
return;
Я уже понял, что это "детсадовский" метод и с ним работать нельзя, потому что слишком много нюансов и вообще не практично. Можете сказать в какой именно ситуации код не будет работать или как можно изменить его что бы он был работоспособным? P.s. "искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня. " Как то не очень понимаю о чем речь, так что это пока можно отложить, пока не изучу больше материала
Сравнение на равенство двух чисел, тип double, это не очень хорошая операция.
Мне нужно определить был ли профит по моей паре, если был то не продолжать торговлю и закрыть советник, если не был то
выставляем отложенник.
Проблема в том, что при запуске советника, он тут же удаляется, т.е. срабатывает ExpertRemove(), хотя профита то еще не было.
Ниже часть кода:
////////Ищем, были ли здесь ... закрытые с профитом!!!!!!!!
int TakeProfit ()
{
int count = 0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit()>0.0)
{
count ++;
}
}
return (count);
Что вы ищите этим кодом?
Он смотрит профит по всей истории, а не конкретно закрытой позиции, и если по всей истории плюс, то вы и получите при любом раскладе на выходе OrderProfit()>0
Он смотрит профит по всей истории, а не конкретно закрытой позиции, и если по всей истории плюс, то вы и получите при любом раскладе на выходе OrderProfit()>0
а как сделать чтобы искал не по всей, а по закрытым от момента работы советника?
а как сделать чтобы искал не по всей, а по закрытым от момента работы советника?
я не догоняю.
Спасибо за помощь.
Найти последнюю закрытую позицию, которая была закрыта позже времени запуска советника, либо последнюю закрытую в этот день, и поглядеть её профит: OrderProfit()+OrderComission()+OrderSwap()
Artyom Trishkin: Найти последнюю закрытую позицию, которая была закрыта позже времени запуска советника, либо последнюю закрытую в этот день, и поглядеть её профит: OrderProfit()+OrderComission()+OrderSwap()
зачем позже времени запуска советника? он же у меня итак ищет все закрытые позиции.
нужно чтобы он искал от начала работы советника, а не до.
Вас никто не называл "лошара", зря вы так. Но и 4-6 строк кода тоже, знаете-ли вызывают недоумение - ведь раз человек чему-то учится, то должен уже что-то пробовать, что-то уже пытался написать, и явно уже видит, что в 4-6 строчек не уместиться.
Покажите что вы пытались сделать - попробуем понять.
Могу предложить альтернативный, упрощённый вариант - не искать по тикам пересечение цены некоего уровня, а искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня.
Простите что долго не отвечал. Я рад что получилось просто недоумение, я вспылил. А что касается моего вопроса, у меня получилось написать код, что бы открыть обычный ордер когда он достиг цены и что бы в последствии пересекая эту цену он не открывался вновь. Но я это сделал так:
return;
Я уже понял, что это "детсадовский" метод и с ним работать нельзя, потому что слишком много нюансов и вообще не практично. Можете сказать в какой именно ситуации код не будет работать или как можно изменить его что бы он был работоспособным? P.s. "искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня. " Как то не очень понимаю о чем речь, так что это пока можно отложить, пока не изучу больше материала
Простите что долго не отвечал. Я рад что получилось просто недоумение, я вспылил. А что касается моего вопроса, у меня получилось написать код, что бы открыть обычный ордер когда он достиг цены и что бы в последствии пересекая эту цену он не открывался вновь. Но я это сделал так:
return;
Я уже понял, что это "детсадовский" метод и с ним работать нельзя, потому что слишком много нюансов и вообще не практично. Можете сказать в какой именно ситуации код не будет работать или как можно изменить его что бы он был работоспособным? P.s. "искать его по МА(1) - тогда МАшка на баре 1 и МАшка на баре 0 будут служить вам индикатором пересечения нужного вам уровня. " Как то не очень понимаю о чем речь, так что это пока можно отложить, пока не изучу больше материала
Сравнение на равенство двух чисел, тип double, это не очень хорошая операция.
как то, NormalizeDouble (А - Б , 5)==0, так наверное.
Всем добрый вечер!
Прошу помощи, не могу найти ошибку в коде.
Мне нужно определить был ли профит по моей паре, если был то не продолжать торговлю и закрыть советник, если не был то
выставляем отложенник.
Проблема в том, что при запуске советника, он тут же удаляется, т.е. срабатывает ExpertRemove(), хотя профита то еще не было.
Ниже часть кода:
void OnTick()
{
if (TakeProfit ()>0)
{
ExpertRemove();
}
if (TakeProfit ()<=0)
{
здесь выставляем отложку
}
}
//+------------------------------------------------------------------+
////////Ищем, были ли здесь отдера закрытые с профитом!!!!!!!!
int TakeProfit ()
{
int count = 0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit()>0.0)
{
count ++;
}
}
return (count);
Всем добрый вечер!
Прошу помощи, не могу найти ошибку в коде.
Мне нужно определить был ли профит по моей паре, если был то не продолжать торговлю и закрыть советник, если не был то
выставляем отложенник.
Проблема в том, что при запуске советника, он тут же удаляется, т.е. срабатывает ExpertRemove(), хотя профита то еще не было.
Ниже часть кода:
////////Ищем, были ли здесь ... закрытые с профитом!!!!!!!!
int TakeProfit ()
{
int count = 0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit()>0.0)
{
count ++;
}
}
return (count);
Что вы ищите этим кодом?
Он смотрит профит по всей истории, а не конкретно закрытой позиции, и если по всей истории плюс, то вы и получите при любом раскладе на выходе OrderProfit()>0
Что вы ищите этим кодом?
Он смотрит профит по всей истории, а не конкретно закрытой позиции, и если по всей истории плюс, то вы и получите при любом раскладе на выходе OrderProfit()>0
а как сделать чтобы искал не по всей, а по закрытым от момента работы советника?
я не догоняю.
Спасибо за помощь.
а как сделать чтобы искал не по всей, а по закрытым от момента работы советника?
я не догоняю.
Спасибо за помощь.
а как сделать чтобы искал не по всей, а по закрытым от момента работы советника?
я не догоняю.
Спасибо за помощь.
Как вы определяете момент работы советника?
предлагаю так;
Найти последнюю закрытую позицию, которая была закрыта позже времени запуска советника, либо последнюю закрытую в этот день, и поглядеть её профит: OrderProfit()+OrderComission()+OrderSwap()
зачем позже времени запуска советника? он же у меня итак ищет все закрытые позиции.
нужно чтобы он искал от начала работы советника, а не до.
зачем позже времени запуска советника? он же у меня итак ищет все закрытые позиции.
нужно чтобы он искал от начала работы советника, а не до.
Если немножечко подумать, то "от начала и дальше" будет именно позже времени запуска советника ;)
Не ленитесь пользоваться междуушным органом.
Здравствуйте.
Помогите, пожалуйста, отобразить в виде гистограммы, данные из файла.
В файле "file.txt" дате, соответствует некое число.
Данные из файла получаю и вывожу на принт,