Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы всё же попробуйте локализовать/выявить проблему/ы через построчный просмотр логики вывода рассчитываемых/получаемых значений (например, через Print или Comment, как и советовали выше). Отличия задуманного при написании кода с прописанным по факту, могут подсказать и решение.
Вывел алерты с проверкой
if ( TimeCurrent() > BlockedTrade1)
{
Alert("Разрешаем торговлю");
}
if ( TimeCurrent() < BlockedTrade1)
{
Alert("Запрещаем торговлю");
}
Алерты выходят так как надо, тоесть прошло время запрета выходит 1 алерт
Но почему сделки не открываются не могу понять
В прошлом сообщении выложил скриншот внизу, там сравнение времени. Или еще что то вывести попробовать в comment ?
Уже в голову не приходит нечего что можно было бы вывести.
Может проблема в проверке consecutive_loss ?
void OnTick()
{
//---
CheckEvents( magicnumber );
int consecutive_loss = 0;
{
int counter = 0;
datetime opentime[];
double profit[];
for(int index=0;index<OrdersHistoryTotal();index++)
{
if(!OrderSelect(index,SELECT_BY_POS,MODE_HISTORY) )
continue;
else
if(OrderMagicNumber() == magicnumber && OrderSymbol() == Symbol() )
{
counter++ ;
ArrayResize( opentime, counter);
ArrayResize( profit, counter);
opentime[counter -1]=OrderOpenTime(); //If you change OrderOpenTime() to OrderCloseTime() it will calculate using
profit[counter -1]=OrderProfit(); // close time instead of open time
}
}
int orderarray [];
ArrayResize( orderarray, counter);
datetime copyopentime[];
ArrayResize( copyopentime, counter);
ArrayCopy(copyopentime,opentime);
for(int x=counter-1;x>=0;x--)
{
int latest = ArrayMaximum(copyopentime,WHOLE_ARRAY,0) ;
orderarray[x]=latest;
copyopentime[latest] = 0;
}
for(int x=counter-1;x>=0;x--)
{
int pos = orderarray[x];
if(profit[pos]<0)
consecutive_loss++;
else
break;
//Print(" Profit = ",profit[pos]) ;
}
}
Но хотя она работает ведь верно, перестают открываться ордера лишь после того как делаю проверку на блокировку
Немного по внимательнее изучая ваши приведенные примеры, есть мысль что проблема и в переменной consecutive_loss может и еще в каком условии, лично мне пока мало что понятно без полного кода советника.