Помощь в кодировании - страница 54

 

Нужна помощь с функцией Sleep

Здравствуйте, mladen

Мое требование - если предыдущая сделка достигла стоплосса, то советник должен спать в течение 24 часов. Не могли бы вы помочь мне закодировать это

 
mladen:
annbeea Что касается первой части вашего сообщения: да, эта версия будет перерисовываться (это связано с тем, как производится расчет T3, и в нем есть ошибка, поэтому я и сказал, что лучше использовать другую версию).

привет mladen, помимо использования другого, который вы упомянули, не могли бы вы перекодировать ту часть индикатора, которая прилагается, так как я предпочитаю его стиль пересечения, чтобы он не перерисовывался мимо и с правильным кодом предупреждения?

Большое спасибо за помощь

Файлы:
 

Торговые метки на графике, как их убрать

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

Файлы:
dots.jpg  71 kb
 

Вы можете использовать функцию следующим образом:

bool lastOrderStopLossHit(int magicNumber, string symbol, datetime& lastTime)

{

double lastClosePrice = -1;

double lastStopLoss = -1;

//

//

// reset the time of the last order

//

//

lastTime = -1;

//

//

// find the last order

//

//

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (OrderSymbol() !=symbol) continue;

if (OrderCloseTime()>lastTime)

{

lastTime = OrderCloseTime();

lastClosePrice = OrderClosePrice();

lastStopLoss = OrderStopLoss();

}

}

int digits = MarketInfo(symbol,MODE_DIGITS);

return (lastTime!=-1 && NormalizeDouble(lastClosePrice,digits)==NormalizeDouble(lastStopLoss,digits));

}[/PHP]

and then at the beginning of the start procedure place a code that could look like this :

[PHP] datetime lastClosedTime;

if (lastOrderStopLossHit(1,Symbol(),lastClosedTime) && (lastClosedTime+24*60*60)>TimeCurrent()) return(0);

Если вы хотите паузу, отличную от 1 дня, измените "24*60*60" на то, что вы хотите.

PS: Я использовал "1" для магического числа в звонке. Замените его на ваше настоящее магическое число

uk_kara:
Привет, mladen Мое требование - если предыдущая сделка достигла стоплосса, то советник должен спать в течение 24 часов. Не могли бы вы помочь мне написать код для этого
 

Привет, Младен,

Не могли бы вы помочь мне изменить код внутри, чтобы он мог (нормализовать) иметь вертикальный масштаб: минимум - ноль, максимум - 100, средняя точка - 50 вместо нуля сейчас, но при этом сохранять те же сигналы, что и раньше? Большое спасибо за помощь.

Файлы:
 

annbeea

Вы не можете этого сделать. Нормализация любого вида изменит сигналы (они не могут оставаться точно такими же - тем более, что у вас там 3 значения, еще меньше шансов сохранить сигналы на тех же местах).

annbeea:
Привет, mladen, не могли бы вы помочь мне изменить код внутри, чтобы он мог (нормализовать) иметь вертикальную шкалу: минимум - ноль, максимум - 100, средняя точка - 50 вместо нуля сейчас, но при этом сохранять те же сигналы, что и раньше? Большое спасибо за помощь.
 
mladen:
Вы можете использовать функцию, подобную этой :

.............................

Если вам нужна пауза, отличная от 1 дня, измените "24*60*60" на то, что вы хотите.

PS: Я использовал "1" для магического числа в вызове. Замените его на ваше настоящее магическое число

Спасибо, Младен. Я проверю это.

 
mladen:
annbeea Вы не можете этого сделать. Нормализация любого рода изменит сигналы (они не могут оставаться точно такими же - тем более, что у вас там 3 значения, еще меньше шансов сохранить сигналы на тех же местах).

привет Младен

Возможно, я неправильно использую или не понимаю слово "нормализовать", можно ли масштабировать пробный тест osc, как это обычно делается, min 0, max 100, mid 50?

Кроме того, можно ли позволить моему предыдущему пробному тесту rsi измениться на неперерисовывающийся? Могу ли я знать, перерисовывается ли t3 или компоненты rsi или оба перерисовываются? Большое спасибо за помощь.

 

annbeea

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

Что касается индикатора rsi trial: часть t3 будет перерисовываться. Это связано с тем, как обрабатываются предыдущие шаги расчета t3. При первом расчете (когда вы помещаете его на график, меняете таймфрейм или символ, ...) он будет рассчитываться нормально, но на следующем тике переменные e1 - e6 при расчете на следующем тике будут иметь значения текущего (нулевого) бара, а должны иметь как минимум значения 1-го бара (в зависимости от переменной "limit"). Ошибка в том, что при расчете на следующем тике наследуются значения предыдущего шага расчета, что будет приводить к все большей и большей ошибке на каждом новом тике, поэтому я и рекомендовал взять за основу другой индикатор, так как в нем эти проблемы решены.

annbeea:
Привет, Младен

Возможно, я неправильно использую или не понимаю слово "нормализовать", можно ли масштабировать пробный тест осциллятора, как это обычно делается, min 0, max 100, mid 50?

Кстати, можно ли позволить моему предыдущему пробному тесту rsi измениться на неперерисовывающийся? Могу ли я знать, перерисовывается ли t3 или компоненты rsi или оба перерисовываются? Большое спасибо за помощь.
 
uk_kara:
Спасибо, Младен. Я проверю это

Как всегда, работает как шарм, спасибо Младен, ты - звезда.