Советники: DVD Level - страница 76

[Удален]  

При прогоне по истории советник был замечен в попытках установить ордер на расстоянии < рыночному STOPLVELу. Естественно, ошибка 130. Причем на большинстве ордеров. Добавил проверку

if (BAL >= 50)
{
   if(MathAbs(Level100-Bid) > stopLevel)
     return(true); 
}

 где stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)/10000.0, то есть 0,0010 при стопе в 10 пунктов. При таком раскладе вобще ни один ордер не открывается. Как быть ?

 
grandmaster:

При прогоне по истории советник был замечен в попытках установить ордер на расстоянии < рыночному STOPLVELу. Естественно, ошибка 130. Причем на большинстве ордеров. Добавил проверку

if (BAL >= 50)
{
if(MathAbs(Level100-Bid) > stopLevel)
return(true);
}

где stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)/10000.0, то есть 0,0010 при стопе в 10 пунктов. При таком раскладе вобще ни один ордер не открывается. Как быть ?

можно так сделать:

изменить строку

if(!ValidTime()) return(0);

на

if(!ValidTime() || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) return(0);

100 - для 5 знаков, соответственно для 4-х будет 10

 

Посмотрите на график торгов:

http://www.alpari.ru/ru/cnews/34316.html

Что скажите?

Рождество 25 Декабря

 
sezon:

Посмотрите на график торгов:

http://www.alpari.ru/ru/cnews/34316.html

Что скажите?

Рождество 25 Декабря


касяк в дате, они прошлым годом живут :)
 
Tiburond:
sezon:

Посмотрите на график торгов:

http://www.alpari.ru/ru/cnews/34316.html

Что скажите?

Рождество 25 Декабря


касяк в дате, они прошлым годом живут :)
Мдя ... гыыыы ... это вообще на прошлый год ...
[Удален]  
Tiburond:
grandmaster:

При прогоне по истории советник был замечен в попытках установить ордер на расстоянии < рыночному STOPLVELу. Естественно, ошибка 130. Причем на большинстве ордеров. Добавил проверку

if (BAL >= 50)
{
if(MathAbs(Level100-Bid) > stopLevel)
return(true);
}

где stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)/10000.0, то есть 0,0010 при стопе в 10 пунктов. При таком раскладе вобще ни один ордер не открывается. Как быть ?

можно так сделать:

изменить строку

if(!ValidTime()) return(0);

на

if(!ValidTime() || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) return(0);

100 - для 5 знаков, соответственно для 4-х будет 10


Проблемы не решает, ибо функция МаркетИнфо всегда будет возвращать 10 (4знака). У моего ДЦ фиксированный стоплевел. Неужели я единственный с такой проблемой ? Какой у вас стоплевел и зависит ли он от волатильности ?
 
grandmaster:
Tiburond:
grandmaster:

При прогоне по истории советник был замечен в попытках установить ордер на расстоянии < рыночному STOPLVELу. Естественно, ошибка 130. Причем на большинстве ордеров. Добавил проверку

if (BAL >= 50)
{
if(MathAbs(Level100-Bid) > stopLevel)
return(true);
}

где stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)/10000.0, то есть 0,0010 при стопе в 10 пунктов. При таком раскладе вобще ни один ордер не открывается. Как быть ?

можно так сделать:

изменить строку

if(!ValidTime()) return(0);

на

if(!ValidTime() || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) return(0);

100 - для 5 знаков, соответственно для 4-х будет 10


Проблемы не решает, ибо функция МаркетИнфо всегда будет возвращать 10 (4знака). У моего ДЦ фиксированный стоплевел. Неужели я единственный с такой проблемой ? Какой у вас стоплевел и зависит ли он от волатильности ?

альпарь, 5 знаков
на евробаке постоянно 18, при серьезных новостях подымают до 300 (на минут 30-60), апотом опять 18

так что нужно просто регулировать значением 100

 
Tiburond:
grandmaster:
Tiburond:
grandmaster:

При прогоне по истории советник был замечен в попытках установить ордер на расстоянии < рыночному STOPLVELу. Естественно, ошибка 130. Причем на большинстве ордеров. Добавил проверку

if (BAL >= 50)
{
if(MathAbs(Level100-Bid) > stopLevel)
return(true);
}

где stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)/10000.0, то есть 0,0010 при стопе в 10 пунктов. При таком раскладе вобще ни один ордер не открывается. Как быть ?

можно так сделать:

изменить строку

if(!ValidTime()) return(0);

на

if(!ValidTime() || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) return(0);

100 - для 5 знаков, соответственно для 4-х будет 10


Проблемы не решает, ибо функция МаркетИнфо всегда будет возвращать 10 (4знака). У моего ДЦ фиксированный стоплевел. Неужели я единственный с такой проблемой ? Какой у вас стоплевел и зависит ли он от волатильности ?

альпарь, 5 знаков
на евробаке постоянно 18, при серьезных новостях подымают до 300 (на минут 30-60), апотом опять 18

так что нужно просто регулировать значением 100

Я так решил вопрос:

void OpenBuyOrder() {
   int err, ticket;
   color myColor = Green;
   
   if (MarketInfo(Symbol(), MODE_STOPLEVEL) > 10) double shift = MarketInfo(Symbol(), MODE_STOPLEVEL);
   else shift = 10;
   
   double myPrice      = NormalizeDouble(Bid - shift*Pnt*10,Digits);

и

void OpenSellOrder() {
   int err, ticket;
   color myColor = Green;
   
   if (MarketInfo(Symbol(), MODE_STOPLEVEL) > 7) double shift = MarketInfo(Symbol(), MODE_STOPLEVEL);
   else shift = 7;
   
   double myPrice      = NormalizeDouble(Bid + shift*Pnt*10,Digits);         
Это ИЗМЕНЕННЫЕ начала функций. Далее - по тексту функций
[Удален]  
Tiburond:

grandmaster:

 Проблемы не решает, ибо функция МаркетИнфо всегда будет возвращать 10 (4знака). У моего ДЦ фиксированный стоплевел. Неужели я единственный с такой проблемой ? Какой у вас стоплевел и зависит ли он от волатильности ?

альпарь, 5 знаков
на евробаке постоянно 18, при серьезных новостях подымают до 300 (на минут 30-60), апотом опять 18

так что нужно просто регулировать значением 100

Допустим текущая цена - 1.3990, ордеров нет. Советник пытается открыть ордер на 1.3995, стоплевел не позволяет. Предложенная вами дополнительная проверка

 if(... || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) ...;

не отреагирует на расстояние от текущей цены до ближайшего цента, и соответственно не является решением проблемы.

С уважением. 

 
grandmaster:
Tiburond:

grandmaster:

Проблемы не решает, ибо функция МаркетИнфо всегда будет возвращать 10 (4знака). У моего ДЦ фиксированный стоплевел. Неужели я единственный с такой проблемой ? Какой у вас стоплевел и зависит ли он от волатильности ?

альпарь, 5 знаков
на евробаке постоянно 18, при серьезных новостях подымают до 300 (на минут 30-60), апотом опять 18

так что нужно просто регулировать значением 100

Допустим текущая цена - 1.3990, ордеров нет. Советник пытается открыть ордер на 1.3995, стоплевел не позволяет. Предложенная вами дополнительная проверка

if(... || MarketInfo(Symbol(),MODE_STOPLEVEL)>100) ...;

не отреагирует на расстояние от текущей цены до ближайшего цента, и соответственно не является решением проблемы.

С уважением.

Читай ниже. Решено однозначно