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

 
Zhunko:

Описание чего? Что имеется ввиду под описанием? Там всё есть.

Описание функций в заголовочном файле. Примеры использования в тестовом скрипте.


Сори, увидел. увидел
 

Здравствуйте. Помогите исправить код советника. Проблема в коде следующая : в коде прописано если цена > либо = прописанных уровней то открывается сделка. Т.к. цена может быть сколько ей угодно > этих уровней соответственно советник открывает кучу сделок.

Хотелось бы убрать из кода символ ">" а оставить только "=" .Сам убираю символ ">" но при компиляции возникает кучу ошибок. ПОМОГИТЕ. 

 

 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}

 


Это часть кода если нужен весь код то выложу.

Заранее благодарен. 
 

Перед проверкой условия поставьте строку

if(OrdersTotal()>0)return(0); 

Еще раз присмотрелся, понял - код не Ваш и Вы понятия не имеете как его исправлять. У Вас все в коде уже есть, ищите место, где он выставляет ордера и почему он игнорирует  переменную GO.

 
Roger:

Перед проверкой условия поставьте строку

if(OrdersTotal()>0)return(0); 

Еще раз присмотрелся, понял - код не Ваш и Вы понятия не имеете как его исправлять. У Вас все в коде уже есть, ищите место, где он выставляет ордера и почему он игнорирует  переменную GO.

Код не мой но был написан для меня по моему тех.заданию  и   я  понятия не имею как его исправлять поэтому и обратился. Спасибо за ответ
 

Добрый день.

Подскажите, пожалуйста(можно в личку), ДЦ где котировки идут в выходные дни.

 

Всем привет! Нужна помощь. Где ошибка не пойму!

Смысл в следующем. Задаем точку отсчета во времени, допустим 29/10/2012 00:00. Создаем массив и помещаем в него значения от точки отсчета по данный момент. Дальше проверяем на те условия отклонения цены, которые установил я. Если достигнем отклонений ==10. Выводим сообщение и смещаем точку от установленной ранее на 2 дня вперед. И повторяем процедуру. Проблема в Следующем массив должен пополняться постоянно, допустим с точки 29/10/2012 00:00 нам не хватит значений и каждый новый образованный минутный бар должен в него помещаться и проверятся и точка отсчета не смещается пока условия не совпадут ==10 раз. НО почему то он при каждом тике, начинает обсчет значений заново от стартовой точки!!!

Помогите решить вопрос! ВСЕМ СПАСИБО ЗА ПОМОЩЬ!!!

 

//-----------------------------------------------------------------------------------------------------------------------------------
datetime Tochka_History = D'2012.10.10 17:30';           
double d[];                                            
double a;                                                 
int i;                                                   
int r=0;                                                 
int j=0;                                                  
int c=0;                                                    
datetime time;                                              
int bars;                                                   
string l;
//-----------------------------------------------------------------------------------------------------------------------------------
int start(){
if(j==0){
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Точка отсчета - ",l,"; Счетчик c - ",c);                                                                          
if(TimeCurrent()>=Tochka_History){                                                                                   
bars=iBarShift(NULL,PERIOD_M1,Tochka_History,false);                                                                 
time=iTime(NULL,PERIOD_M1,i);                                                                                                                                            
ArrayResize(d,bars);                                                                                                 
for(i=bars;i>0;i--) d[i]=(iHigh(NULL,PERIOD_M1,i)+iLow(NULL,PERIOD_M1,i))/2;                                        
for(i=bars;i>0;i--) Uslovie();}}}                                                                                     
//-----------------------------------------------------------------------------------------------------------------------------------
void Uslovie(){
if(r==0){a=d[i];r=1;}
if(a+10*Point<=d[i] && r==1){r=0; c=c+1; Alert("Счетчик c - ",c);}
if(c==10){Alert("Значение С достигло 10"); j=1; Smeshenie();}}
//-----------------------------------------------------------------------------------------------------------------------------------
void Smeshenie(){
Tochka_History=Tochka_History+2*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени - ",l);
if(TimeDayOfWeek(Tochka_History)==6||TimeDayOfWeek(Tochka_History)==0){
Tochka_History=Tochka_History+1*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени, если выпали выходные - ",l);} j=0;}
//-----------------------------------------------------------------------------------------------------------------------------------
 
merkulov.artem:

Всем привет! Нужна помощь. Где ошибка не пойму!

Смысл в следующем. Задаем точку отсчета во времени, допустим 29/10/2012 00:00. Создаем массив и помещаем в него значения от точки отсчета по данный момент. Дальше проверяем на те условия отклонения цены, которые установил я. Если достигнем отклонений ==10. Выводим сообщение и смещаем точку от установленной ранее на 2 дня вперед. И повторяем процедуру. Проблема в Следующем массив должен пополняться постоянно, допустим с точки 29/10/2012 00:00 нам не хватит значений и каждый новый образованный минутный бар должен в него помещаться и проверятся и точка отсчета не смещается пока условия не совпадут ==10 раз. НО почему то он при каждом тике, начинает обсчет значений заново от стартовой точки!!!

 Помогите решить вопрос! ВСЕМ СПАСИБО ЗА ПОМОЩЬ!!!

Третий раз уже вижу Вашу просьбу и ни кто не реагирует, как думаетет, почему? Наверно народ просто не понимает, чего от него хотят.

Если достигнем отклонений ==10. Выводим сообщение и смещаем точку от установленной ранее на 2 дня вперед ....   НО почему то он при каждом тике, начинает обсчет значений заново от стартовой точки!!!

Да потому, что Ваш код не проверяет, откуда ему стартовать. Вот он и стартует каждый раз от стартовой точки. Проверьте принтом произошло ли отклонение на 10 и действительно ли смещается при этом точка на 2 дня. Если отклонение на 10 есть, и при этом точка смещается на 2 дня, то перед тем, как на следующем тике вычислять стартовую точку нужно проверить, а действительно ли её нужно вычислять, или она уже вычислена.

Какой-то у Вас сложный путь получения истины. Уверен, что если Вы сформулируете народу саму задачу, он подскажет Вам более простой способ её решения.

P.S.

Всегда из всех решений задачи труднее всего найти самое простое, так как для его поиска приходится переработать и отсеять кучу хлама. Так что не стесняйтесь формулировать - простое решение не значит быстронаходимое. Возможно люди тут сэкономят Вам не 1 день жизни.

 

Доброгодня!!! Вопрос супер пупер офигеть.   Как останавить тестер при достижении нужного места в коде? В справке че-то вроде ничего подобного ни вижу. Не может быть, чтоб вообще не было, и функция была-бы ценная! 

 

2. Поведение функции iCustom.   В реале функция постояно выдает чирез принт -1, ( кроме тех случаев соотвецтвующий буфер углы зигзага ). А в тестере все вижу 0. Почему такая разница?

double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, 1);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, 1);
            
            int BUY=0,SELL=0;int ticket; 
            Print (  " strela1 " , strela1 , "   strela2  " , strela2 );


 
Dimka-novitsek:
Доброгодня!!! Вопрос супер пупер офигеть.   Как останавить тестер при достижении нужного места в коде? В справке че-то вроде ничего подобного ни вижу. Не может быть, чтоб вообще не было, и функция была-бы ценная! 

послать ему нажатие кнопки "Pause/Break"

как отправить - поищите статью.

 
Спасибо! Щас поищу!