[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 224

 

Почему не открываются ордера!

Подскажите почему не работает этот код.

Специально выбрал период графика в 2000 году(когда пятый знак везде равнялся 0) в котором есть свечи открывшиеся по цене которая встречается среди значений массива.

По моему замыслу - на их открытии должен сработать ордер - но этого не происходит......П О Ч Е М У????


int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 double massiv [4]={0.85370,0.85690,    0.85970 ,0.86170};//объявление и инициализация массива


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv[4],  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}
 
solnce600:

В строке 100 значений с  запятой после первого знака(т.е. цена)

Выделяю строку

Главная - найти и заменить

Меняю все запятые на точки - успешно.

Теперь между значениями нужно поставить запятые

Теперь так: Файл - Сохранить как - выбираем тип файла CSV (разделители - запятые). Сохранить. Имеем на выходе текстовый файл нужного формата...

 
solnce600:

Почему не открываются ордера!

Подскажите почему не работает этот код.

Специально выбрал период графика в 2000 году(когда пятый знак везде равнялся 0) в котором есть свечи открывшиеся по цене которая встречается среди значений массива.

По моему замыслу - на их открытии должен сработать ордер - но этого не происходит......П О Ч Е М У????



int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение

massiv[4] означает 4-й элемент массива massiv, а надо передать в функцию сам массив, чтобы был поиск...

 
alsu:

Теперь так: Файл - Сохранить как - выбираем тип файла CSV (разделители - запятые). Сохранить. Имеем на выходе текстовый файл нужного формата...



Понял.Большое спасибо.Подскажите еще пожалуйста почему моя функция не работает (пост выше).

Большое спасибо.Если я научусь программировать......то только благодаря Вам.....!

 
solnce600:

Почему не открываются ордера!

Подскажите почему не работает этот код.

Специально выбрал период графика в 2000 году(когда пятый знак везде равнялся 0) в котором есть свечи открывшиеся по цене которая встречается среди значений массива.

По моему замыслу - на их открытии должен сработать ордер - но этого не происходит......П О Ч Е М У????


Еще хорошо бы при сравнении чисел double записывать вместо

 if (Bid == massiv[S])

вот так:

 if (NormalizeDouble (Bid-massiv[S],Digits)==0)
 
alsu:

massiv[4] означает 4-й элемент массива massiv, а надо передать в функцию сам массив, чтобы был поиск...

Понял.Большое спасибо.
 
solnce600:

Почему не открываются ордера!

Подскажите почему не работает этот код.

Специально выбрал период графика в 2000 году(когда пятый знак везде равнялся 0) в котором есть свечи открывшиеся по цене которая встречается среди значений массива.

По моему замыслу - на их открытии должен сработать ордер - но этого не происходит......П О Ч Е М У????

Уже пора переходить к методу "по-взрослому"!!! - поэкспериментировать со своим кодом, чтобы добится результата.

Совет: привыкайте сравнивать переменные через нормализацию их разности:

    double ld_Delta = 10. * Point;
    if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)// и данная цена есть цена открытия нового бара
    {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}//открыть ордер       

а для упомянутого мной эксперимента "поиграйте" с ld_Delta. 

 
solnce600:

Понял.Большое спасибо.Подскажите еще пожалуйста почему моя функция не работает (пост выше).

Большое спасибо.Если я научусь программировать......то только благодаря Вам.....!


Если научитесь, то только благодаря своим усидчивости и трудолюбию. Моя роль очень скромная, а цели корыстны (помогая Вам, тренирую собственную способность быстро находить ошибки и недочеты, что сокращает собственное потраченное время на программировние, а заодно держит моск в тонусе. Плюс вдруг какая-то ценная идея проскользнет? Я ее украду:)))
 
incluide
alsu:

Если научитесь, то только благодаря своим усидчивости и трудолюбию. Моя роль очень скромная, а цели корыстны (помогая Вам, тренирую собственную способность быстро находить ошибки и недочеты, что сокращает собственное потраченное время на программировние, а заодно держит моск в тонусе. Плюс вдруг какая-то ценная идея проскользнет? Я ее украду:)))

Квалифицированный совет - сильно ускоряет процесс обучения.Самостоятельно ответ на вопрос можно искать долго методом тыка (потому что не знаешь в каком направлении изучать)

Подскажите еще пожалуйста вот что

Хочу объявить и инициализировать массив во включаемом файле.

Вызвал мастера.

Выбрал - Бибилиотека функций

Присвоил имя.

Все убрал и объявили и проинициализировал массив.

Сохранил файл в папке incluide.Он сохранился в ней с расширением mq4 а не mqh

Вставил в код строку вызова файла и указал расширение mqh

Но компилятор ругается

'UYTR.mqh' - cannot open the program file    C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (12, 2)

int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 #include <UYTR.mqh> 


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}

Вероятно дело в разночтении в расширениях между фалом в вызове в коде и файлом в папке incluide.

Подкажите пожалуйста - что делать в данной ситуации.

Спасибо.

 
solnce600:
incluide

Квалифицированный совет - сильно ускоряет процесс обучения.Самостоятельно ответ на вопрос можно искать долго методом тыка (потому что не знаешь в каком направлении изучать)

Подскажите еще пожалуйста вот что

Хочу объявить и инициализировать массив во включаемом файле.

Вызвал мастера.

Выбрал - Бибилиотека функций

Присвоил имя.

Все убрал и объявили и проинициализировал массив.

Сохранил файл в папке incluide.Он сохранился в ней с расширением mq4 а не mqh

Вставил в код строку вызова файла и указал расширение mqh

Но компилятор ругается

'UYTR.mqh' - cannot open the program file    C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (12, 2)

Вероятно дело в разночтении в расширениях между фалом в вызове в коде и файлом в папке incluide.

Подкажите пожалуйста - что делать в данной ситуации.

Спасибо.


Если через  мастер, то там есть возможность сразу создать именно включаемый файл, который сохранится с расширением mqh в папке include. После этого его можно жобавить в любую программу путем #include <>


то есть
не Выбрал - Бибилиотека функций,
а Заголовочный файл MQH
Причина обращения: