[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1079
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то ну никак не хочет работать. ПОМОГИТЕ, ПОЖАЛУЙСТА.
Идея проверки следующая: если свеча больше определённого значения, то запретить дальнейшую торговлю.
bool Trade=true;
//----------запуск в start()
{.......
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen(); //--------открытие ордера если (нет открытых ордеров) И (свеча не больше чем)
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false; //---------присвоение значение Trade false при условии если (открытых ордеров нет) И (свеча оказалась больше чем)
......}
//------- использование Trade осуществляется в функции CheckForOpen().
void CheckForOpen() //-------------------проверки условий и открытия ордера
{int res;
if( Trade && A()==-1 && B()==-1) //------- проверка условия открытия
{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red); //---------если условие выполнилось, то ордер открывается
Trade=false; } //--------Trade присваивается значение запрета на торговлю. И здесь это срабатывает. Если ордер закрывается по тэйку, то дальше он ожидает наступления новых определённых условий при том, что старые условия всё ещё действуют (ранее советник открывал ордера непрерывно)
.........}
//--------------------------проверка высоты свечи
int CheckVolume()
{ double volume=High[1]-Low[1]; //------измерение высоты свечи
if (volume <= CandleVolume*Point) return (1); //----------если свеча меньше чем
if (volume > CandleVolume*Point) return (-1);//------------если свеча больше чем
return(0);}
Также побовал версию, но она так и не заработала:
void start()
{ .....
if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen();
.....}
.....
int CheckVolume()
{ double volume=High[1]-Low[1]; //------измерение высоты свечи
if (volume <= CandleVolume*Point) return (1); //----------если свеча меньше чем
if (volume > CandleVolume*Point) {Trade=false; return (-1);}//------------если свеча больше чем
return(0);}
что-то ну никак не хочет работать.
Может индикатор вначале сделать
Может индикатор вначале сделать
помогите разобраться ! Как сделать так что бы принт один раз выводился, а то у меня на каждом тике випадает принт.
помогите разобраться ! Как сделать так что бы принт один раз выводился, а то у меня на каждом тике випадает принт.
выводите этот принт в момент открытия ордера.
Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.
Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.
Что это за ошибка ? Если я отправляю тестовое письмо с терминала то выдает ошибку
- 2010.12.28 18:23:55 Mail: 530 5.7.0 Must issue a STARTTLS command first. y1sm3265289fak.15
а без него никак с этим не справиться?
Можно конечно, но с помощью индикатора легко проверить визуально работу алгоритма
Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.
Как вариант, можно сделать счётчик принтов. Объявляем целочисленную переменную. Далее проверяем, если ордеров нет, то обнуляем её. Далее проверка - если переменная = нулю и ордера в рынке есть, то принтуем данные ордеров и увеличиваем эту переменную на 1. Как только ордера позакрываются, переменная снова станет равна нулю. Это значит, что код будет ждать появления хотя бы одного ордера и выводить инфу о нём в журнал.