[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 297
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Идеала то нет! Просто для общего так сказать кругозора смотрю кто как пишет. Иногда нахожу некоторые трюки, которые можно перенять. Иногда вижу, что код вообще не читабельные напрочь. Как у tarasBY, например. Как ни пытался, не читается. Вроде читаю, понятно сегментами, и потом бац! Дальше не фига не понятно. И так много в какие местах.
Я по просьбе знакомых декомпилы правил, там и то проще понять чем у tarasBY в кодах. Может это типа и нормально, но я вот тока сомневаюсь, что многие скачивающие их поймут. Кто слишком прошарен, чтоб понять, тот и скачивать не будет... Тогда возникает вопрос, зачем их тогда там публиковать :)
Время отмеряю по Гринвичу.
Да я уж сплю. Спокойной ночи.
А в Каталонии как говорят?
Ничуть
Да, там отношение двух натуральных логарифмов. А теперь посмотрите формулу из "Замена основания логарифма". Тоесть в результате вот такое выражение
эквивалентно десятичному логарифму для bd_LOTSTEP. В MQL нет отдельной функции для десятичного логарифма, поэтому используют такое преобразование.
О том же говорил. Кондовый мой язык... Думается, либо программист не боится математики, либо это своеобразная защита от чтения кода (шучу). Не знаю, моё личное мнение - математика упрощает алгоритм так же, как switch...case вместо дебрей if.
Покажите SetVLine();
не те данные,укажите пожалуйста в чем ошибка.вставляю весь код за исключением "копирайта"
extern int PeriodP=12;
extern int TimeFrame=0;
double P_up0,P_up1,FrApPrise;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
P_up0=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,0,0);
P_up1=iCustom(Symbol(),Period(),"rezerv-xrust",FrApPrise,0,0);
{Comment("показ ценового канала=",P_up0,"\n","показ xrust=",P_up1);}
//----
return(0);
}
использовал два индикатора
1)https://www.mql5.com/ru/code/8908
индюк Ценовой канал.mq4
2)https://www.mql5.com/ru/code/8318
индюк Fractal_Level_Xrust_V2.mq4
помогите пожалуйста,почем 1 показывает,а второй не хочет?
О том же говорил. Кондовый мой язык... Думается, либо программист не боится математики, либо это своеобразная защита от чтения кода (шучу). Не знаю, моё личное мнение - математика упрощает алгоритм так же, как switch...case вместо дебрей if.
В том коде есть один недочёт. Вот, выдернул из контекста:
Все дело в том, что выражение
Следовательно и значение лота округлится до одного знака после запятой.
Хотя, почитайте, мож поможет.
Небольшое дополнение к описанию моего вопроса.Переделал индикатор хруст.Вот на такой код
#property copyright "#Copyright © 2008, XrustSolution.#"
#property link "#xrust.ucoz.net#"
#property indicator_chart_window
extern int TimeFrame=0;//Если=0, то текуший
extern string FrApNam="Ap";//Имя линии соотв.Фракталу вверх
extern string FrDnNam="Dn";//Имя линии соотв.Фракталу вниз
//-----------------------------------------------------------------------------+
double FrPrise;
double FrApPrise=0,FrDnPrise=0;
//+----------------------------------------------------------------------------+
void init(){
if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
FrApNam=StringConcatenate(FrApNam,TimeFrame);
FrDnNam=StringConcatenate(FrDnNam,TimeFrame);
return;}
void deinit(){
ObjectDelete(FrDnNam);
ObjectDelete(FrApNam);
Comment(" ");
return;}
//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit;
double tmp;
int i, j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
string FAP=DoubleToStr((FrApPrise),Digits);
string FDP=DoubleToStr((FrDnPrise),Digits);
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
{Comment("TimeFrame="+TimeFrame+
"\nApPrise111 ="+FAP+
"\nDnPrise ="+FDP+
"\nFractal Channel ="
+diap+"Point");}
return(0);
}
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена |
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
//Comment(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена |
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
// Киму Респект и уважуха !!! |
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 07.10.2006 |
//| Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| tf - таймфрейм ( 0 - текущий ТФ) |
//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
double f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
for (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
if (f!=0) return(NormalizeDouble(f, d));
}
Print("FindNearFractal(): Фрактал не найден");
return(0);
}
Просто линии на графике мне не нужны.Надо просто две цифры(по одной из каждого из этих дух индикаторов).
Небольшое дополнение к описанию моего вопроса.Переделал индикатор хруст.Вот на такой код
Хотите ответ получить - уважайте читающих ваши портянки.
Код нужно вставлять с помощью кнопочки SRC - она над полем редактирования вашего сообщения среди других инструментов форматирования.