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

 

Подскажите.

#property indicator_separate_window

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

//---- indicators
ObjectCreate("прибыль",OBJ_LABEL,0,0,0,0,0);


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Прибыль ", AccountProfit());


string прибыль ="Прибыль = "+DoubleToStr(AccountProfit(),2);

ObjectSetText("прибыль",прибыль,9,"Tahoma",White);
ObjectSet("прибыль",OBJPROP_XDISTANCE,3);
ObjectSet("прибыль",OBJPROP_YDISTANCE,100);

}

как вывести это в отдельном окне индикатора, а не на сам график? поскажите ))

 
alderru >>:

Значит обьявление индикаторных буферов вовсе не означает, что значения ячеек равны нулю. Правильно?

Следовательно, MathMax не расчитывается так как одна из сравниваемых величин (а именно GBPUSD_High) не имеет значения (вообще ни какого, даже нуля).

Понятно. Спасибо OneDepo.

Прошу прощения, что спутал всех своим упрощением (каламбур). Как я уже упоминал меня не интерисует значение High котровки, меня интересует максимальное значение на баре своей собственной функции, кривую которой индикатор мне благополучно рисует и перерисовывает в течении формирования бара. Вот этот диапазон перерисовки индикатора в течении бара меня и интересовал.

Буду думать.

P.S. но почему же MathMin считается без вопросов, условия ведь равные и обьявленны одинаково?

P.S.S. Где-то сильно туплю. Не получается. Помогите, пожалуйста.

Ну, давайте разбираться.

1. Говоря, что значения индикаторного буфера - это неприсвоенные значения, т.е. произвольные величины или информационный "мусор", я вас специально напугал, потому что так использовать переменные - "плохая идея", как говорят классики. Поверьте, вы существенно упростите себе жизнь, всегда инициализируя все используемые переменные, вне зависимости от языка программирования. Одна из особенностей MQL4 в том, что он по дефолту инициализирует локальные переменные нулем, а индикаторные буферы величиной EMPTY_VALUE. Из хелпа:

EMPTY_VALUE 0x7FFFFFFF Значение по умолчанию, указатель пустого значения.

Нужно заметить, что это значение можно изменить функцией SetIndexEmptyValue(), но в вашем случае это не существенно, поэтому не отвлекаемся.


2. Если значение индикаторного буфера равно EMPTY_VALUE, индикатор в данной точке не отрисовывается.


3. Теперь смотрим, что имеем.

GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);

EMPTY_VALUE, т.е. примерно 2 в девятой степени сравнивается с 1.6. Что вернет MathMax()? Правильно, EMPTY_VALUE, которое заносится в i-тый элемент индикаторного буфера и согласно п.2 отрисован не будет.

С кодом

GBPUSD_Low[i]=MathMin(GBPUSD_Low[i],GBPUSD[i]);

аналогично, с той разницей, что MathMin() вернет 1.6. Лоу буфер будет отрисован.

Вывод. Перечитайте выделенное болдом.

Удачи

 
PyMbIH >>:

как вывести это в отдельном окне индикатора, а не на сам график? поскажите ))

int init()
   {
   IndicatorShortName("Profit");
   return(0);
   }
int start()
{
//----
if(ObjectFind("прибыль")<0)
   {
   int win_idx=WindowFind("Profit");
   ObjectCreate("прибыль",OBJ_LABEL,win_idx,0,0,0,0);
   }//и т.д.

как-то так)

 
OneDepo писал(а) >>

Ну, давайте разбираться...

Удачи

Я всё понял.

Ввёл дополнительные переменные Max[0] и Min[0] с которыми идёт сравнение и которые сохраняют промежуточные результаты в течении формирования бара, а их значения, в свою очередь, присвоил моим индикаторным GBPUSD_High[i] и ...Low[i]. Вот мне и не пришлось сравнивать с не проинициализированными переменными :-)

И всё заработало!

Большое спасибо OneDepo за разъяснение, где-то я это упустил когда читал учебник.

 

Подскажите, как дописать в Ilan1.4 стоп лос.

пример:

extern int StopLoss = 50

что нужно дописать ???

ticket=OrderSend(Symbol(),OP_BUYLIMIT,pLots,pLevel,sp,StopLong(pr,sl),TakeLong(pLevel,tp),pComment,pMagic,pExpiration,pColor);

ticket=OrderSend(Symbol(),OP_BUYSTOP,pLots,pLevel,sp,StopLong(pr,sl),TakeLong(pLevel,tp),pComment,pMagic,pExpiration,pColor);

 
tmp.0 >>:
Следующий вопрос, пожалуйста :)

Подскажите как сделать "set" файл советника.

Пробовал сам в тестере в свойствах эксперта далее "сохранить", но не как.

HELP!

 
aksol >>:

Подскажите как сделать "set" файл советника.

Пробовал сам в тестере в свойствах эксперта далее "сохранить", но не как.

HELP!

так вы всё правильно делаете. 

 
sergeev >>:

так вы всё правильно делаете.

Я сохраняю в папку "symbolsets", это правильно или есть другой проще способ.

Спасибо.

 

Добрый день.

Ниже файл с индюком Паттерн, выдаёт постоянно эту ошибку на разных ТФ

2009.08.20 11:58:49 Cannot open file 'C:\Programme\XTB-Trader 4\experts\indicators\MTFPI-sub1.ex4' on the EURUSD,Daily, может кто глянeт, что ему надо -если что подправить.Заранее благодарю.
Файлы:
 
grego писал(а) >>

Добрый день.

Ниже файл с индюком Паттерн, выдаёт постоянно эту ошибку на разных ТФ

2009.08.20 11:58:49 Cannot open file 'C:\Programme\XTB-Trader 4\experts\indicators\MTFPI-sub1.ex4' on the EURUSD,Daily, может кто глянeт, что ему надо -если что подправить.Заранее благодарю.

Индикатора MTFPI-sub1 не хватает