Ответить
01.04.2012, 11:11
Аватар для Bill Vill
Bill Vill Bill Vill вне форума Новичок форума
Регистрация: 29.11.2010 / Сообщений: 60
Поблагодарили 30 раз(а) / Репутация: 31

Вопрос Пароль

Сообщение от: Алексей Самсонов
ребят пароль от уроков у всех подошел? а то у меня выдает ошибку
День добрый вот и у меня тоже ошибку выдает при открытии RAR .
01.04.2012, 11:14
Аватар для Bill Vill
Bill Vill Bill Vill вне форума Новичок форума
Регистрация: 29.11.2010 / Сообщений: 60
Поблагодарили 30 раз(а) / Репутация: 31
А вот теперь то отлично с этим паролем пошло все qwe2011qwe ,тот который мне был дан в личку он не подходил.
01.04.2012, 11:22
Аватар для Bill Vill
Bill Vill Bill Vill вне форума Новичок форума
Регистрация: 29.11.2010 / Сообщений: 60
Поблагодарили 30 раз(а) / Репутация: 31

Отлично Скрипт

Точно так.
#property copyright ""
#property show_inputs
extern int Magic = 0;
int start()
{
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderMagicNumber()== Magic)
if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket());
}
return(0);
}

P.S. Больше отвечать на вопросы которые были в прошлых уроках не буду.
Все в порядке работать будет)))Вам спасибо) А всего то было в дело в этом ; и у меня компил- компиляторович ругаться перестал))Теперь нет никаких предупреждений все класс)))Вам спасибо))

Последний раз редактировалось Bill Vill; 01.04.2012 в 11:57.
01.04.2012, 11:44
Аватар для 4er58
4er58 4er58 на форуме Заблокирован
Регистрация: 23.07.2010 / Сообщений: 1,167
Поблагодарили 272 раз(а) / Репутация: 285
Хорошая тема автору благодарность , только сейач увидел эту тему , не торопитесь подождите плиз , меня , 5 страниц надо всего ничего освоить )...
01.04.2012, 13:59
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 8 - цикл for(;;;) и цикл while()

Сегодня мы познакомимся с операторами цыклов.

Оператор for(;;
{}
Покажу на простейшем примере. Я понимаю как работает этот оператор, но мне не удобно его применять. Если у вас будут по нему вопросы, то будем вместе разбиратся.
Пример будет такой. Надо посчитать суму чисел от 6 до 17(6+7+8...).

Выглядеть это будет так.


PHP код:
1)int a=6,b=17,i,Suma;
 
int start()
{
2)for(i=a;b>=i;i++)
{
Suma=Suma+i;
}
 
3)Alert(Suma);
Return(
0);

Пояснение.
1)Ещё один способ объявления переменных. Можно одной строкой через запятую(если они одного типа). При этом можно сразу присваивать им значение.
2)Оператор for. После него в скобках должны быть 3 условия, после них должны указыватся наши действия в рамках оператора(в квадратных скобках). Итак.
2.1)В первом условии записывается с чего начинаем(с числа 6).
2.2)Во втором условии пишется когда наш оператор закончит свою работу.
2.3)В третем условии записывается шаг(в нашем случае), на который менять значение переменной i.

Цикл проходит в таком порядке. Первое условие-второе условие-тело(в квадратных скобках)-третье условие.

Объясню на нашем примере что делается.
1-ый круг.
2.4)Оператор получил первое условие, это число 6.
2.5)Оператор проверил или 17 больше(или ровно) 6. Если да то продолжаем, если нет оператор for отключается и передаёт управление следуещему оператору.
2.6)Дальше оператор передаёт значение 1-го условия и пересчитывает то, что в теле. У нас стоит Suma=Suma+i; Перед первым кругом значение переменной Suma не было присвоенно. Значит 0. Подсчитываем. Suma=0+6=6.
2.7)В третьем условии стоит что нам надо i увеличить на единицу(i++).
2-ой круг.
2.8)Оператор получил новое условие, это число 7 (так как в конце прошлого круга мы увеличили i на еденицу).
2.9)Оператор проверил или 17 больше(или ровно) 7. Если да то продолжаем, если нет оператор for отключается и передаёт управление следуещему оператору.
2.10)Дальше оператор передаёт значение 1-го условия и пересчитывает то, что в теле. У нас стоит Suma=Suma+i; После первого круга значение переменной Suma = 6. Подсчитываем. Suma=6+7=13.
2.11)В третьем условии стоит что нам надо i увеличить на единицу(i++).
И т.д.
3)После выхода из цыкла(когда 2ое условие стаёт false) for, мы выведем на экран результат.

Оператор while()
{}
Пояснение.
Этот оператор будет исполнятся пока условие в скобках будет истинным(true). Как только условие станет ложным, оператор закончит свою роботу, и будет выполнятся следующий за ним оператор.

Последний раз редактировалось chocolate; 14.05.2012 в 12:41.
03.04.2012, 12:41
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 9 - скрипт закрывающий ордера

Добрый день. Сегодня мы сделаем скрипт котрый будет закрывать ордера.

Скрипт.

PHP код:
#property copyright "eevviill"
#property show_inputs
extern string TO "Тип ордера для закрытия";
extern bool Buy false;
extern bool Sell false;
extern bool BuyStop false;
extern bool SellStop false;
extern bool BuyLimit false;
extern bool SellLimit false;
extern bool Close_all_lots true;
extern double Close_lot 0.1;
double Lot;
extern int Magic 0;
extern int Slippage 4;
 

int start()
  {
1)if(Close_all_lots==trueLot=OrderLots();
if(
Close_all_lots==falseLot=Close_lot;
  
2)for (int i=OrdersTotal()-1i>=0i--)
{
3)if (OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_BUY && Buy==trueOrderClose(OrderTicket(),Lot,Bid,Slippage,Yellow);
if (
OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_SELL && Sell==trueOrderClose(OrderTicket(),Lot,Ask,Slippage,Yellow);
if (
OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_BUYSTOP && BuyStop==trueOrderDelete(OrderTicket());
if (
OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_SELLSTOP && SellStop==trueOrderDelete(OrderTicket());
if (
OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_BUYLIMIT && BuyLimit==trueOrderDelete(OrderTicket());
if (
OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()== Magic && OrderType()==OP_SELLLIMIT && SellLimit==trueOrderDelete(OrderTicket());
}
   return(
0);
  } 
Пояснение.
1)Здесь мы выбираем какую часть лота ордера нужно закрыть. Если во внешних переменных Close_all_lots = true, то будет закрыватся весь ордер. Если Close_all_lots = false , то будет закрыватся та часть лотов что укажыте в переменной Close_lot.
2)С помощью функции for мы перебираем ордера с конца. Как мы помним, этот цикл имеет 4 шага.
2.1)Мы присвоили переменной i значение TotalOrders()-1. Это значит что мы начинаем перебирать ордера начиная с передпоследнего.
2.2)Проверили есть ли у нас ещё открытые ордера.
2.3)Выполняется то, что в теле функции.
2.4)Переменную i уменьшили на еденицу.
3)Здесь мы перечисляем условия для закрытия ордера бай. А именно.
3.1)OrderSelect(i,SELECT_BY_POS) мы выбрали ордер для работы с ним с порядковым номером і.
3.2)OrderMagicNumber()== Magic Меджик должен совпадать с меджиком закрываемого ордера. Если меджик=0, то это ордера открыты вручную.
3.3)OrderType()==OP_BUY Проверяем тип выбраного ордера.
3.4)Buy==true Во внешних переменных мы указываем какой тип ордеров закрывать.

Последний раз редактировалось chocolate; 14.05.2012 в 12:40.
03.04.2012, 15:09
Аватар для Bill Vill
Bill Vill Bill Vill вне форума Новичок форума
Регистрация: 29.11.2010 / Сообщений: 60
Поблагодарили 30 раз(а) / Репутация: 31
eevviill)День добрый ,отличный скрипт .
05.04.2012, 10:15
Аватар для chocolate
chocolate chocolate вне форума Администратор
Регистрация: 18.06.2010 / Адрес: Россия/Тольятти / Сообщений: 3,630
Поблагодарили 3,142 раз(а) / Репутация: 3197
eevviill, а давайте мы ссылки на все уроки в первое сообщение добавим. Пишите в личку текст. Я добавлю.
FAQ по форуму или ответы на все вопросы пользователей

Как вставить видео с Youtube?


Модератор - он не надзиратель, а дружественный пользователю участник. (с)

Есть вопросы по форуму? С радостью отвечу.

Биржевые линейки
05.04.2012, 11:42
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
eevviill, а давайте мы ссылки на все уроки в первое сообщение добавим. Пишите в личку текст. Я добавлю.
Зачем в личку? Я согласен.
05.04.2012, 18:02
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 10 - трейлинг стоп

Сегодня будем учится применять трейлинг стоп. Может кто не знает, то это подтягивание СЛ после определённого количества пунктов в+.

Трейлинг стоп.
PHP код:
int TrailingStop 10;
 
1)OrderSelect(0,SELECT_BY_POS);
2)if(OrderMagicNumber()==Magic
 {
3)if(OrderType()==OP_BUY && Bid-OrderOpenPrice()>TrailingStop*Point && OrderStopLoss()<Bid-TrailingStop*PointOrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
if(
OrderType()==OP_SELL && OrderOpenPrice()-Ask>TrailingStop*Point && OrderStopLoss()>Ask+TrailingStop*PointOrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Blue);
 }
4)OrderModify(); 
Пояснение.
1)Для начала выбираем ордер с которым будем работать.
2)Проверяем ордер на меджик.
3)Здесь указываем условие трейлинга для ордера бай.
3.1)OrderType()==OP_BUY проверяем тип открытого ордера.
3.2)Bid-OrderOpenPrice()>TrailingStop*Point текущая цена-цена открытия ордера>количество пунктов трейлинга.
3.3)OrderStopLoss()<Bid-TrailingStop*Point стоп лос ордера<текущая цена-количество пунктов трейлинга.
4)OrderModify(); функция модификации ордера(СЛ,ТП,цена отложенного ордера).

Последний раз редактировалось chocolate; 14.05.2012 в 12:40.
05.04.2012, 20:57
Аватар для chocolate
chocolate chocolate вне форума Администратор
Регистрация: 18.06.2010 / Адрес: Россия/Тольятти / Сообщений: 3,630
Поблагодарили 3,142 раз(а) / Репутация: 3197
Ну мало ли, вдруг Вы захотите какой-то текст добавить или описание небольшое к урокам.

Некоторые так по 5-10 раз просят менять описание к своей ветке.

Обновил первое сообщение. Думаю раз в 5 уроков можно обновлять.
FAQ по форуму или ответы на все вопросы пользователей

Как вставить видео с Youtube?


Модератор - он не надзиратель, а дружественный пользователю участник. (с)

Есть вопросы по форуму? С радостью отвечу.

Биржевые линейки
08.04.2012, 15:27
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 11 - пользовательская функция

Добрый день. Сегодня будем разсматривать пользовательскую функцию.
Что это? Грубо говоря это блок каких то расчётов, корые находятся вне функции Start() но вызываются ею.
Будем разсматривать 2 примера. Пример обчисления 3 чисел и пример нахождения цены выше или ниже МА. В этих примерах не будет функции типа Void(). Отличается только тем что не возвращает никаких значений.


Пример1.
PHP код:
int a=3;
int b=8;
int c=6;
int d;
 
int start()
{
1)d=Summa(a,b,c);
return;
}
 
2)int Summa(int a,int b,int c)
{
3)int g=a+b+c;
4)return(g);

Пояснение1.
1)Здесь мы присваиваем переменной d, то что вернёт нам функция. При этом надо писать так как в 2) только без типов данных.
2)Это собственно название функции и входные параметры. ОБЯЗАТЕЛЬНО надо указывать тип данных нашей функции(то что будет возвращать) и тип входных данных(даже если до этого тип был указан).
3)Это тело функции. Здесь проводятся все расчёты.
4)Это то значение которое мы вернём и присвоим переменной d.



Пример2.
Желательно в входные параметры записывать чем по меньше значений. Тоесть если есть возможность, то проводить расчёты (которые ведутся в функции start()) в самой пользовательской функции.


PHP код:
extern int period_MA=60
int a;

int start()
{
1)a=Price_MA(period_MA);
2)if(a>0OrderSend(Symbol(),OP_BUY,0.1,Ask,2,0,0,"user function",54,0,CLR_NONE);
return;
}

3)int Price_MA(int period_MA)
{
 
4)double MA1 iMA(Symbol(), 0period_MA,,MODE_LWMAPRICE_CLOSE1);
 
 {
 
5)if(Close[1]<MA1) return(-1); 
 if(
Close[1]>MA1) return (1);
 }
 
 
6)return(0);

Пояснение2.
1)Мы присвоили переменной a значение, которое будет передано после обчисления функции Price_MA(period_MA). Записывать надо
1.1)Название без типа данных.
1.2)В скобках входные данные без типа данных.
2)Здесь мы указали условие что если после присвоения переменной a значение и если оно будет больше нуля, то открываем ордер.
3)Название функции и входные параметры. Записывается так.
3.1)Название пишется с указанием типа данных которое будет возвращатся.
3.2)Входные параметры пишутся с указанием типа данных.
4)Здесь прямо в функции присваиваем переменной МА1 значение индикатора МА. Единственным параметром который будет менятся в индикаторе МА это период МА. Он у нас находится во входных параметрах функции Price_MA.
5)Здесь мы указали что если цена находится ниже индикатора МА, то функция Price_MA при её вызове вернёт -1. Если выше то 1.
6)Если ни одно из указаных условий не верно(в нашем случае такого быть не может. Значит ошибка где то), то при обращении к функции она вернёт 0.


Пояснение void.
Если тип функции такой, то при обращении к ней она ничего не возвращает. Тоесть происходят действия, котрые в теле функции и всё. В большинстве случаев это функции открытия, модификации, подсчёта, закрытия ордеров.

Последний раз редактировалось chocolate; 05.06.2012 в 13:54.
09.04.2012, 13:40
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 12 - индикатор

Добрый день. Сегодня будем писать индикатор. Он будет написан на основе индикатора ATR и будет показывать волатильность на всём рынке на выбраном ТФ.

Индикатор.

Скрытый текст

PHP код:
#property copyright "eevviill"
#property link      "itisallillusion@gmail.com"
1)#property indicator_chart_window
 
extern int TF_ATR 5;
string TF_ATR3
int TF_ATR2;
2)int deinit()
{
ObjectDelete("Name ATR TF");
ObjectDelete("TF ATR");
ObjectDelete("ATR");
ObjectDelete("ATR Value");
return;
}
 
int start()
  {
3)int    counted_bars IndicatorCounted();
 
4)switch(TF_ATR)
{
case 
TF_ATR2 PERIOD_M1; break;
case 
TF_ATR2 PERIOD_M5; break;
case 
15 TF_ATR2 PERIOD_M15; break;
case 
30 TF_ATR2 PERIOD_M30; break;
case 
60 TF_ATR2 PERIOD_H1; break;
case 
240 TF_ATR2 PERIOD_H4; break;
case 
1440 TF_ATR2 PERIOD_D1; break;
}
 
5)double ATR_EURUSD iATR("EURUSD",TF_ATR2,14,1);
double ATR_EURJPY = (iATR("EURJPY",TF_ATR2,14,1))/100;
double ATR_EURGBP iATR("EURGBP",TF_ATR2,14,1);
double ATR_EURCHF iATR("EURCHF",TF_ATR2,14,1);
double ATR_EURCAD iATR("EURCAD",TF_ATR2,14,1);
double ATR_EURAUD iATR("EURAUD",TF_ATR2,14,1);
double ATR_EURNZD iATR("EURNZD",TF_ATR2,14,1);
double ATR_GBPUSD iATR("GBPUSD",TF_ATR2,14,1);
double ATR_GBPJPY = (iATR("GBPJPY",TF_ATR2,14,1))/100;
double ATR_GBPCHF iATR("GBPCHF",TF_ATR2,14,1);
double ATR_GBPCAD iATR("GBPCAD",TF_ATR2,14,1);
double ATR_GBPAUD iATR("GBPAUD",TF_ATR2,14,1);
double ATR_GBPNZD iATR("GBPNZD",TF_ATR2,14,1);
double ATR_AUDUSD iATR("AUDUSD",TF_ATR2,14,1);
double ATR_AUDJPY = (iATR("AUDJPY",TF_ATR2,14,1))/100;
double ATR_AUDCHF iATR("AUDCHF",TF_ATR2,14,1);
double ATR_AUDCAD iATR("AUDCAD",TF_ATR2,14,1);
double ATR_AUDNZD iATR("AUDNZD",TF_ATR2,14,1);
double ATR_NZDUSD iATR("NZDUSD",TF_ATR2,14,1);
double ATR_NZDJPY = (iATR("NZDJPY",TF_ATR2,14,1))/100;
double ATR_NZDCHF iATR("NZDCHF",TF_ATR2,14,1);
double ATR_NZDCAD iATR("NZDCAD",TF_ATR2,14,1);
double ATR_USDJPY = (iATR("USDJPY",TF_ATR2,14,1))/100;
double ATR_USDCHF iATR("USDCHF",TF_ATR2,14,1);
double ATR_USDCAD iATR("USDCAD",TF_ATR2,14,1);
double ATR_CADCHF iATR("CADCHF",TF_ATR2,14,1);
double ATR_CADJPY = (iATR("CADJPY",TF_ATR2,14,1))/100;
double ATR_CHFJPY = (iATR("CHFJPY",TF_ATR2,14,1))/100;
6)double ATR_all = (ATR_EURUSD+ATR_EURJPY+ATR_EURGBP+ATR_EURCHF+ATR_EURCAD+ATR_EURAUD+ATR_EURNZD+
ATR_GBPUSD+ATR_GBPJPY+ATR_GBPCHF+ATR_GBPCAD+ATR_GBPAUD+ATR_GBPNZD+
ATR_AUDUSD+ATR_AUDJPY+ATR_AUDCHF+ATR_AUDCAD+ATR_AUDNZD+
ATR_NZDUSD+ATR_NZDJPY+ATR_NZDCHF+ATR_NZDCAD+
ATR_USDJPY+ATR_USDCHF+ATR_USDCAD+
ATR_CADCHF+ATR_CADJPY+
ATR_CHFJPY)/28;
7)string ATR DoubleToStr(ATR_all,6);
 
8)ObjectCreate("Name ATR TF",OBJ_LABEL,0,0,0);
ObjectSet("Name ATR TF",OBJPROP_CORNER,1);
ObjectSet("Name ATR TF"OBJPROP_XDISTANCE,80);
ObjectSet("Name ATR TF"OBJPROP_YDISTANCE34);
ObjectSetText("Name ATR TF","Overall ATR TF =",12,"Arrial",Yellow);
9)switch(TF_ATR)
{
case 
TF_ATR3 "M1"; break;
case 
TF_ATR3 "M5"; break;
case 
15 TF_ATR3 "M15"; break;
case 
30 TF_ATR3 "M30"; break;
case 
60 TF_ATR3 "H1"; break;
case 
240 TF_ATR3 "H4"; break;
case 
1440 TF_ATR3 "D1"; break;
}
ObjectCreate("TF ATR",OBJ_LABEL,0,0,0);
ObjectSet("TF ATR",OBJPROP_CORNER,1);
ObjectSet("TF ATR"OBJPROP_XDISTANCE,42);
ObjectSet("TF ATR"OBJPROP_YDISTANCE30);
ObjectSetText("TF ATR",TF_ATR3,15,"Arrial",OrangeRed);
ObjectCreate("ATR",OBJ_LABEL,0,0,0);
ObjectSet("ATR",OBJPROP_CORNER,1);
ObjectSet("ATR"OBJPROP_XDISTANCE,110);
ObjectSet("ATR"OBJPROP_YDISTANCE58);
ObjectSetText("ATR","Overall ATR =",12,"Arrial",Yellow);
ObjectCreate("ATR Value",OBJ_LABEL,0,0,0);
ObjectSet("ATR Value",OBJPROP_CORNER,1);
ObjectSet("ATR Value"OBJPROP_XDISTANCE,22);
ObjectSet("ATR Value"OBJPROP_YDISTANCE54);
ObjectSetText("ATR Value",ATR,15,"Arrial",DeepSkyBlue);
   return(
0);
  } 
[свернуть]

Пояснение.
1)Здесь указывается где будет наш индикатор(в нашем случае в основном графике). Если в отдельном окне, то надо писать #indicator_separate_window
2)Как мы помним эта функция используется при удаления файла с графика. В нашем случае при удалении индикатора с графика будут удалены объекты с названиями указаные в скобках. Если надо удалять все объекты с графика то надо писать ObjectsDeleteAll();
3)Это стандартная вставка генератора файлов MetaEditor. Показывает количество подсчитаных свечей. Вообще нужная вещь, но у нас использоватся не будет.
4)Ето оператор. Его задача примерно такая. Если значение переменной такое, то делаем то. По нашему примеру. Так как нам надо в индикатор записывать период, а он обозначается на просто цифрой, то надо писать что то типа если ТФ АТР = 5 , значит присваиваем другой переменной ТФ АТР2(которая записана у нах в свойствах индикатора) PERIOD_M5.
4.1)switch() здесь указывается назавание оператора, а в скобках записывается название переменной, значение которой мы будем перебирать.
4.2){} начало и конец оператора.
4.3)case : ;brake; здесь записывается значение переменной-потом 2 вертикальные точки-потом что делать-потом brake(значит что мы передаём управление дальше).
5)Здесь мы присваивали переменным значения индикатора ATR.
6)Здесь мы подсчитываем среднее значение ATR.
7)Здесь мы присваиваем string переменной значение типа double(ну и делаем так чтобы показывалось 6 цифр после запятой). Делается это потому что при создании надписи на графике тип надписи должен быть string.
8)Собственно это и есть создание и форматирование надписи на графике. В нашем примере это надпись Overall ATR TF =
8.1)ObjectCreate("Name ATR TF",OBJ_LABEL,0,0,0);
Этой функцией мы создаём что то. Параметры(название объекта,что мы создаём( у нас надпись),номер окна где создаём(0 это главный график), дальше идут координаты цены и времени(мы не используем)).
8.2)ObjectSet("Name ATR TF", OBJPROP_XDISTANCE,80);
Этой функцией мы форматируем созданый объект. Параметры(название форматируемого объекта,OBJPROP это обязательно и через _ пишем что мы хотим поменять(у нас растояние от правого края в пикселях справа на лево),величина 2-го параметра).
8.3)ObjectSetText("Name ATR TF","Overall ATR TF =",12,"Arrial",Yellow);
Если у нас объект текст, то мы можем его отформатировать. Параметры(название форматируемого объекта, текст который будет выводится на график, размер шрифта, стиль шрифта, цвет шрифта).
9)Здесь также как в пункте 7 надо данные перевести с одного типа(int) в string для отображения на графике.

Последний раз редактировалось chocolate; 14.05.2012 в 12:40. Причина: файлы
09.04.2012, 13:46
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
chocolate а можно во всех сообщениях с уроками сделать как в 12 уроке?
(php)
10.04.2012, 10:50
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 13 - функция iCustom

Добрый день. Сегодня будем разбирать функцию iCustom.
Эта функция предназначена для получения данных с пользовательського индикатора.
Наш пример будет основыватся на советнике который берёт данные с индикатора sidus v.2. Он рисует на графике стрелки где покупать, а где продавать.


Советник.
PHP код:
#property copyright "eevviill"
#property link      "itisallillusion@gmail.com"

extern double Lot 0.1;
extern int Stop_Loss 24;
extern int Take_Profit 21;
extern int magic 7352;
extern int Slippage 2;

1)extern string Indicator "sidus v.2";
extern int FastEMA 16;
extern int SlowEMA 24;

int start()
  {
while(!
IsTradeAllowed()) Sleep(2000);
if(
Volume[0]>1) return;
  
2)double arrow_up iCustom(Symbol(),0,"sidus v.2",FastEMA,SlowEMA,3,1); //1
double arrow_down iCustom(Symbol(),0,"sidus v.2",FastEMA,SlowEMA,4,1); //2

double SLbuy=0SLsell=0,TPbuy=0,TPsell=0
if(
Stop_Loss>0) {SLbuy=Ask-Stop_Loss*PointSLsell=Bid+Stop_Loss*Point;}
if(
Take_Profit>0) {TPbuy=Ask+Take_Profit*Point;TPsell=Bid-Take_Profit*Point;}

if(
OrdersTotal()<1)
{
3)if(arrow_up>0OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SLbuy,TPbuy,"Sidus v2",0,Green);
if(
arrow_down>0OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"Sidus v2",0,Red);
}

   return(
0);
  } 

Пояснение.
1)Здесь мы указываем те настройки индикатора, которые хотим менять с помощю советника. ОБЯЗАТЕЛЬНО! настройки должны совпадать:
1.1)С порядком настроек в индикаторе. Это можно посмотреть при прикреплении индикатора к графику.
1.2)С типом данных настроек которые в индикаторе. Например в нашем случае это периоды МА. А это тип данных int.
2)Здесь мы присваиваем переменной arrow_up значение индикатора. ОБЯЗАТЕЛЬНО! тип данных будет double, чтобы не передавал индикатор. Свойства.
2.1)Валютная пара с которой брать данные.
2.2)Тайм фрейм с которого брать данные.
2.3)Название индикатора в скобках без разширения.
2.4)Параметры которые мы хотим менять с помощю советника. Порядок обязателен.
2.5)Здесь мы указываем из какого буфера брать данные. Чтобы узнать какой нам буфер нужен, нужно зайти в свойства индикатора (при прикрепление к графику). Там в вкладке Цвета и будут наши буферы. Нумерация начинается с 0 до 7.
В нашем примере если мы сначала прикрепим индикатор к графику, а потом зайдём в свойства, то увидем что 3 буфер зелёного цвета и отвечает за стрелку вверх, а 4 красного цвета и отвечает за стрелку вниз.
2.6)С какой свечи брать данные.(0=текущая, 1=прошлая, 2=позапрошлая и т.д.)
3)Условие на покупку. Мы указали что если значение arrow_up больше 0 то бай.
Почему именно так???
Тут надо проводить опыт.
3.1)После функции iCustom где нибудь в конце пишем строчку
Alert(arrow_up," ",arrow_down). Это делается для того чтобы узнать что(какое значение) нам возвращает индикатор.
3.2)Заходим в тестер. Запускаем советник с визуализацией. После окончания тестирования заходим в вкладку журнал тестера и смотрим что там нам Алерт писал.
3.3)Итак. Когда стрелок нет Алерт выдаёт (0 0). Вывод (0-стрелки вверх нету 0-стрелки вниз нету).
Если (1.2345 0). Вывод. Ага! Если появилась стрелка вверх, то индикатор возвпащает цену где появилась. Ну и наоборот.
Конечный итог. 0=нету сигнала. >0 есть сигнал.
10.04.2012, 11:06
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
У меня пока нет тем для уроков. Если у кого то появлятся темы с которыми надо разобратся, пишите.

Итак за 13 уроков мы научились писать простой индикатор, скрипты и советники. Думаю не плохо. Надеюсь эти знания помогут вам в торговли


P.S. Если кто то хочет материально отблагодарить Z262474651203
13.04.2012, 17:59
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
ОК. Если ни у кого нет вопросов по уроках, то жду предложение тем для уроков.
13.04.2012, 18:30
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Пользовательские функции были. Логично было бы перейти к библиотекам функций.
А так же использование внешних dll библиотек. Хотя бы тех которые есть у всех. Например виндовая Kernel32.dll
Так же полезным может оказаться работа с файлами. Встроенными средствами, или с помощью той же Kernel32.dll

Или это слишком круто?
Слишком.
Тем более что сюда уже никто не заходит. Не знаю почему. Или нет времени или не интересно...
15.04.2012, 18:00
Аватар для alyska
alyska alyska вне форума Элитный участник
Регистрация: 29.08.2011 / Адрес: Украина / Сообщений: 1,301
Поблагодарили 1,106 раз(а) / Репутация: 1123
Слишком.
Тем более что сюда уже никто не заходит. Не знаю почему. Или нет времени или не интересно...
тема хорошая забрасывать не нужно
вот только информации очень много нужно переварить подумать
Для всех, кто прячется под маской, секрет открою небольшой. Когда ко мне с добром и лаской-то я к Вам тоже всей душой. Ну, а для тех, кому не нравлюсь, ответ мой краток, как всегда. И не мечтайте, не исправлюсь! Ступайте нахрен, господа...
17.04.2012, 19:00
Аватар для TTUUPPOO
TTUUPPOO TTUUPPOO вне форума Почётный гражданин
Регистрация: 06.05.2011 / Сообщений: 197
Поблагодарили 362 раз(а) / Репутация: 364
Слишком.
Тем более что сюда уже никто не заходит. Не знаю почему. Или нет времени или не интересно...
уроки не бросай!!!
Взялся за гуж, не говори, что не дюж!!!

я к примеру тему только что увидел (
эта же ветка многие другие переживет и всегда актуальна будет...
и это не значит что весь форум должен сегодня же ее посетить...
неужели цифры Ответов-Просмотров важнее того что здесь?

Требуем продолжения банкета! пжл!
...а я пойду начну с самого первого, надо нагонять

спасибо
Почему же всё так тупо?
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 05:52. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO