[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 78

 
goldtrader >>:

Условие под 1-м условным оператором if у Вас действует только на следующий за ним оператор (следующая строка).

Остальные выполняются БЕЗУСЛОВНО. Т.е. даже если нет команды на закрытие ордера, то один из плейсаундов отработает.

Правильнее так:

  В том то и дело что работают оба плейсунда - PlaySound("timeout.wav") срабатывает, после него PlaySound("money.wav"), сделка закрывается нормально но перед ее закрытием идет плейсаунд ошибки и эта штука срабатывает только для коротких сделок, для длинных все нормально-PlaySound("money.wav") если закрылась и PlaySound("timeout.wav") если ошибка, для длинных и коротких конструкция одинаковая. Ща попробую скобки расставить как Вы описали, фиг знает мож дело в них))


 
Dimoncheg >>:

... Ща попробую скобки расставить как Вы описали, фиг знает мож дело в них))

С таким подходом трудно добиться положительного результата.

 
goldtrader >>:

С таким подходом трудно добиться положительного результата.

Глубоко убежден что результат не зависит от способа изложения текста на форуме)) По крайней мере к интеллегенции себя не отношу, ну эт фигня все не в тему))

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

 

Так, для справки. Команда PlaySound() не ждет, когда предыдущий звук отработает до конца, а просто перебивает и запускает свой. При быстром переборе промежуточные звуки могут поглощаться.

 
Roger >>:

Так, для справки. Команда PlaySound() не ждет, когда предыдущий звук отработает до конца, а просто перебивает и запускает свой. При быстром переборе промежуточные звуки могут поглощаться.

Ладно бы только в звуке было дело, ошибка "Нет ошибки" вылазит в журнале при любом закрытии коротких сделок, 3 сделки закрываются - вылезет 3 ошибки итд, но после этого все закрывается и в журнале прописывается закрытие, для длинных сделок все нормально, и звуки работают как задумано, и ошибка не прописывается, вставлял слип на 3 секунды и на 5 секунд, все тоже самое, только с соответствующей задержкой

 
Подскажите, пожалуйста. Есть переменная, которая должна рассчитываться для каждого бара индивидуально т.е [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ а у меня получается, что ко всем барам на истории применяется последнее посчитаное значение.........если последнее 1, то  [i+1]=1, [i+2]=1, [i+3]=1 и если последнее 2, [i+1]=2, [i+2]=2, [i+3]=2 соответственно....
 
Dimoncheg писал(а) >>

Ладно бы только в звуке было дело, ошибка "Нет ошибки" вылазит в журнале при любом закрытии коротких сделок, 3 сделки закрываются - вылезет 3 ошибки итд, но после этого все закрывается и в журнале прописывается закрытие, для длинных сделок все нормально, и звуки работают как задумано, и ошибка не прописывается, вставлял слип на 3 секунды и на 5 секунд, все тоже самое, только с соответствующей задержкой

Ты знаешь, было подобное у меня, бился-бился, ставил задержки - накакого прогресса. Тогда стал проверять закрытие по

if(OrderCloseTime()!=0)

сразу все проблемы ушли. Попробуй.

 
RocketTrend писал(а) >>
Подскажите, пожалуйста. Есть переменная, которая должна рассчитываться для каждого бара индивидуально т.е [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ а у меня получается, что ко всем барам на истории применяется последнее посчитаное значение.........если последнее 1, то [i+1]=1, [i+2]=1, [i+3]=1 и если последнее 2, [i+1]=2, [i+2]=2, [i+3]=2 соответственно....

Так трудно сказать, выкладывай этот кусок кода полностью.

 
Reshetov >>:

Если возникает необходимость в отладке, то через Print()

Но в большинстве случаев такая необходимость не возникает.


А я вот щас другого мнения. Щас пишу советника и испытываю сильные проблемы без нормального отладчика. Особенно с массивами данных.

Чтобы быть точно уверенным что алгоритм работает правильно, мне надо анализировать данные которые попадают туда при расчете индикаторов. А массив не один

Что, кроме как Print(), Comment(), Alert() никаких больше средств нет ?

 
Reshetov >>:


А это что за хрень? Для чего здесь OrderSelect()?


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

Ладно, давай без хрени и чтобы зрение не портить

/---- input parameters
extern int PerRSI=8;
extern int MagicNamber=77771;
extern double Lots=1.0;
//+------------------------------------------------------------------+
int start()
{
int
type, // тип ордера
cnt, // индекс ордера
ticket, // идентификационный номер ордера
total; // число уже открытых ордеров
double
rsi_0, // Значен. rsi_0 текущее
rsi_1; // Значен. rsi_1 1й бар

rsi_0=iRSI (NULL, 0, PerRSI, 0, 0); // Текущий бар
rsi_1=iRSI (NULL, 0, и PerRSI,0, 1); // Текущий бар плюс 1

if(rsi_0 < rsi_1 && rsi_1 < 30) // Если линия пересекла 30

ticket=OrderSend (Symbol(), OP_BUY,Lots, Ask, 3, 0, 0, "My RSI", MagicNamber, 0, Green);

OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);


if(rsi_0 > rsi_1 && rsi_1 > 60) // Если линия пересекла 70

OrderClose(ticket, OrderLots(), Bid, 3, Violet ); // закрываем позицию

return(0); // выходим

}

почему совок покупает и не закрывает, при комиляции ошибок нет

Причина обращения: