Ответить
17.02.2014, 21:06
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
1) MathAbs(Close[1]-Open[1])/Point
2) (High[1]-Close[1])/Point (Close[1]-Low[1])/Point
3) (High[1]-Low[1])/Point это 100%
и выглядеть это будет так-

//====================
extern int S1 = 10; // длина тела
extern int S2 = 20; // длина стержня
extern double S3 = 0.25; // местоположение тела
//====================
int x1, x2, x3;
int S1 = Point;
int S2 = Point;
double S3 = Point;
int init()
{
x1 = MathAbs(Close[1]-Open[1])/S1;
x2 = MathAbs (High[1]-Close[1])/S2 " (Close[1]-Low[1])/S2;"
x3 = MathAbs (High[1]-Low[1])/S3; // это 100%
}
//====================
return(0);
}
//====================
во второй строчке параметр также вместе и пишется, или это отдельной строкой надо прописывать(выделил кавычками)

ещё про 100% - ясно, - но передвигатся будет по пунктам...

Последний раз редактировалось Genadi22; 17.02.2014 в 21:25.
18.02.2014, 08:39
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
у меня вопрос:
не возникнет ли противоречия второй строки

x2 = MathAbs (High[1]-Close[1])/S2 (Close[1]-Low[1])/S2;

с третьей

x3 = MathAbs (High[1]-Low[1])/S3; // это 100%

1) когда определено положение тела во второй строке,- и не будет ли проигнорирована в связи с этим третья строка…
2) не повлияет ли такое расхождение в расстоянии если – Close,- окажется ниже Open…
что приведёт к тому что программа к примеру в место одинаковых свечек - увидит нечто своё…
18.02.2014, 09:47
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

x2 = MathAbs (High[1]-Close[1])/S2 (Close[1]-Low[1])/S2;

с третьей

x3 = MathAbs (High[1]-Low[1])/S3; // это 100%

1) когда определено положение тела во второй строке,- и не будет ли проигнорирована в связи с этим третья строка…
2) не повлияет ли такое расхождение в расстоянии если – Close,- окажется ниже Open…
что приведёт к тому что программа к примеру в место одинаковых свечек - увидит нечто своё…
1) Нет.
2) Для того в х2 и 2 варианта
18.02.2014, 12:47
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
1) Нет.
2) Для того в х2 и 2 варианта
получилась такая скомпилированная функция

//==============================
int S1 = 10, S2 = 20;
double S3 = 0.25, bar1;

void Bar1()
{
int x1, x2, x3,
S1 = Point;
S2 = Point;
double S3 = Point;

x1 = MathAbs (Close[1]-Open[1])/S1;
x2 = MathAbs (High[1]-Close[1])/S2+(Close[1]-Low[1])/S2;
x3 = MathAbs (High[1]-Low[1])/S3; // это 100%
//=============================
return(0);
}
//==============================

ошибок 0, предупреждений 0.
всё ли правильно...

хотя токо что заметил что - int x1, x2, x3, - нету точки с запятой...
и кроме этого без + во второй строке не компилировалось

Последний раз редактировалось Genadi22; 18.02.2014 в 12:54.
18.02.2014, 14:14
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

//==============================
int S1 = 10, S2 = 20;
double S3 = 0.25, bar1;

void Bar1()
{
int x1, x2, x3,
S1 = Point;
S2 = Point;
double S3 = Point;

x1 = MathAbs (Close[1]-Open[1])/S1;
x2 = MathAbs (High[1]-Close[1])/S2+(Close[1]-Low[1])/S2;
x3 = MathAbs (High[1]-Low[1])/S3; // это 100%
//=============================
return(0);
}
//==============================

ошибок 0, предупреждений 0.
всё ли правильно...

хотя токо что заметил что - int x1, x2, x3, - нету точки с запятой...
и кроме этого без + во второй строке не компилировалось
Если ты такое написал как в х2 и это ты ищешь тень, то рекомендую ещё попрактиковатся.
18.02.2014, 15:23
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
Если ты такое написал как в х2 и это ты ищешь тень, то рекомендую ещё попрактиковатся.

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

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

и, всё же, вместо плюса - как правильно...

x2 = MathAbs (High[1]-Close[1])/S2-(Close[1]-Low[1])/S2;

вот так тоже компилируется,- а без них пишет ошибку

Последний раз редактировалось Genadi22; 18.02.2014 в 16:10.
18.02.2014, 23:50
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
у меня вопрос…

конечный результат функции - Bar1() – x1, x2, x3;
теперь их надо обьединить

int bar1;
bar1 = bar1 + x1 + x2 + x3;

1) правильно ли обьединил
2) и куда это вписывать – в начало самой функции после – void, - или до

Последний раз редактировалось Genadi22; 18.02.2014 в 23:54.
19.02.2014, 09:29
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
в принципе уже финиш
шаблон для калибровки кода, - проверяется как обычный советник в тестере,- при определении свечи – выставляется вертикальная линия и ставится метка – так задумано,- но не работает…

eevviill – это больше моих способностей и возможности…
большая просьба доведи его до рабочего состояния…
12.03.2014, 09:32
Аватар для Dom
Dom Dom на форуме
Регистрация: 09.03.2009 / Сообщений: 1,033
Поблагодарили 2,481 раз(а) / Репутация: 2480
Здравствуйте Все!! Наверное,мой вопрос,не по теме, извините если так. Куда пропал eevviill, или я что-то пропустил?
15.03.2014, 00:27
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
Привет Всем и доброго здравия...

да действительно давненько eevviill не видно,- хотя у каждого есть дела и поважнее...

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

А, если серьёзно,- то рано или поздно Вы всё равно начнёте изучать карту(то биш - график)- и учится читать его...- а вот перевести полученные данные в машинный язык окажется не посильным делом...- я не первый,- и не последний,- кто пытается снять копию карты(графика) и запрограммировать...

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

//***** метка на графике *****
void L_L (string LabelName, color col, datetime DTM, double Price, int S)
{
ObjectDelete(LabelName);
ObjectCreate(LabelName, OBJ_ARROW,0,DTM,Price);
ObjectSet (LabelName, OBJPROP_COLOR, col);
ObjectSet (LabelName, OBJPROP_WIDTH,S);
ObjectSet (LabelName, OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
}
//***** вертикальная линия *****
void v_l (string LineName, color col, datetime DT)
{
ObjectDelete(LineName);
ObjectCreate(LineName, OBJ_VLINE, 0, DT, 0);
ObjectSet (LineName, OBJPROP_COLOR, col);
ObjectSet (LineName, OBJPROP_STYLE, STYLE_DOT);
}
//==============================
int S1 = 10, S2 = 20, bar1;
double S3 = 0.25;

void Bar1()
{
int x1, x2, x3;
S1 = Point;
S2 = Point;
double S3 = Point;

x1 = MathAbs (Close[1]-Open[1])/S1;
x2 = MathAbs (High[1]-Close[1])/S2-(Close[1]-Low[1])/S2;
x3 = MathAbs (High[1]-Low[1])/S3;
bar1 = bar1 + x1 + x2 + x3;
//=============================
return(0);
}
//==============================

int start()
{
//double bar1;
Bar1();
if (bar1)
{
v_l(""+TimeToStr(Time[0], TIME_DATE|TIME_SECONDS), Green, Time[0]);
L_L(SYMBOL_RIGHTPRICE, Lime, Time[0], High[0], 1);
}
//==============================
return(0);
}
//==============================

всё что требуется, - это, что бы код определил - ОДНУ свечу с заранее установленными параметрами...

ну,- а, если нет - то хоть повеселимся -типа двоечники позор класса,- в моём лица,- в прочем как и всегда...
С Уважением ко Всем...
Fed77 
17.03.2014, 20:33
Аватар для Genadi22
Genadi22 Genadi22 вне форума Новичок форума
Регистрация: 23.10.2012 / Сообщений: 98
Поблагодарили 28 раз(а) / Репутация: 29
всё что требуется, - это, что бы код определил - ОДНУ свечу с заранее установленными параметрами...
вариант 1:

Код:
int    S1 = 50,
       S2 = 150;
double S3 = 0.15;

bool Bar1()
{  
 int x1,x2;  
 double x3;    
 x1 = MathAbs (Close[1]-Open[1])/Point;   // Длинна тела  
 x2 = MathAbs (High[1]-Low[1])/Point-x1;  // Длинна теней  
 x3 = NormalizeDouble(x1/x2,1);               // отношение тела свечи к теням   
 Print("x1=",x1," x2=",x2, " x3=",x3);   
 if (x1>=S1 && x2>=S2 && x3>=S3) return(true);  // Если (тело >= S1) и (тени >= S2) и (тело/тени>= S3)    
 return(false);
}

int start()
{
  if (Bar1())
  {    
    v_l(""+TimeToStr(Time[1], TIME_DATE|TIME_SECONDS), Yellow, Time[1]);    
    L_L("LEFTPRACE", Lime, Time[1], Close[1], 1);  
  }

 return(0);
}
истины как и всегда -нет,- зато есть варианты...
Удачи...
11.09.2014, 19:43
Аватар для div15
div15 div15 вне форума Интересующийся
Регистрация: 18.07.2011 / Сообщений: 7
Поблагодарили 0 раз(а) / Репутация: 1
здравствуйте можно сделать урок про LotExponent
29.09.2014, 18:31
Аватар для viplert
viplert viplert на форуме Активный участник
Регистрация: 07.01.2014 / Сообщений: 126
Поблагодарили 41 раз(а) / Репутация: 42
Здравствуйте я ни так давно работаю с MQ4 и столкнулся с одной проблемой, точное закрытие и открытие сделок.

Есть функция при профить закрывает сделку, но работает она почему то коряво. Иногда закрывает сделки сразу при наступлении профита а иногда профит уходит и в 2 раза больше, а она ничего не делает, помогите разобраться почему?

Функция от KimIV:
Закрытие тех позиций, у которых профит в валюте депозита превысил некоторое значение
Закрытие одной предварительно выбранной позиции
29.09.2014, 21:36
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Здравствуйте я ни так давно работаю с MQ4 и столкнулся с одной проблемой, точное закрытие и открытие сделок.

Есть функция при профить закрывает сделку, но работает она почему то коряво. Иногда закрывает сделки сразу при наступлении профита а иногда профит уходит и в 2 раза больше, а она ничего не делает, помогите разобраться почему?

Функция от KimIV:
Закрытие тех позиций, у которых профит в валюте депозита превысил некоторое значение
Закрытие одной предварительно выбранной позиции
Для предметного разговора, как бы не хватает самого предмета. Исходники приатачь.
30.09.2014, 06:39
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Здравствуйте я ни так давно работаю с MQ4 и столкнулся с одной проблемой, точное закрытие и открытие сделок.

Есть функция при профить закрывает сделку, но работает она почему то коряво. Иногда закрывает сделки сразу при наступлении профита а иногда профит уходит и в 2 раза больше, а она ничего не делает, помогите разобраться почему?

Функция от KimIV:
Закрытие тех позиций, у которых профит в валюте депозита превысил некоторое значение
Закрытие одной предварительно выбранной позиции
Косяки в функциях бывают. Сам встречал таковые в функциях KimIV.
При отсутствии стандартов на написание функций, каждый пишет как в взбрендит. Вполне можно столкнуться с несовместимостью функций, даже у одного программиста, не говоря о применении функций разных программистов в одной программе.
По этому, не стоит применять чужие функции, не разобрав по косточкам её внутренности.
Для начинающего программиста, полезно для изучения языка, разобрать чужую функцию, понять что, как и зачем в ней работает.
Для опытных, если свою функцию писать лень, полезно разобраться в функции для проверка на чужие косяки.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Milord 
30.09.2014, 08:37
Аватар для matro3
matro3 matro3 вне форума Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344
Здравствуйте я ни так давно работаю с MQ4 и столкнулся с одной проблемой, точное закрытие и открытие сделок.

Есть функция при профить закрывает сделку, но работает она почему то коряво. Иногда закрывает сделки сразу при наступлении профита а иногда профит уходит и в 2 раза больше, а она ничего не делает, помогите разобраться почему?

Функция от KimIV:
Закрытие тех позиций, у которых профит в валюте депозита превысил некоторое значение
Закрытие одной предварительно выбранной позиции
Вероятно Вы про это?
_http://forum.mql4.com/ru/38949/page2#434205

Может неверно вызывается функция?
ClosePosBySizeProfitInCurrency(Symbol(), -1, -1, 100)

Как это делаете Вы?
03.10.2014, 17:54
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
здравствуйте можно сделать урок про LotExponent
Поконкретней.
04.10.2014, 15:09
Аватар для div15
div15 div15 вне форума Интересующийся
Регистрация: 18.07.2011 / Сообщений: 7
Поблагодарили 0 раз(а) / Репутация: 1
здравствуйте можно сделать урок про LotExponent
в случае убыточной сделки советник умножает лот на 2 то есть
0.01 0.02 0.04 0.08 итд. и от мани менеджмента
28.10.2014, 08:58
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

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

По умолчанию Урок 21 - увеличение лота, после убыточного ордера

PHP код:
extern double Lot 0.1;
extern bool use_martini_on_lose_order false;
extern double Lose_to_on_martini 0;
extern bool use_martini_on_SL false;
extern double Lot_koef_closed 2.2;
uchar nor_lot=2;

//////////////////////////////////////////////////////////////
int OnInit()
{  
if(
MarketInfo(Symbol(),MODE_LOTSTEP)==0.1nor_lot=1;
return(
INIT_SUCCEEDED);
}

/////////////////////////////////////////////////////////////////
void OnTick()
{
1)double Lotss=Lot;
2)if(use_martini_on_lose_orderLotss=chek_prev_order();
//OrderSend(...Lotss...)
}

/////////////////////////////////////////////////////////////
double chek_prev_order()
{
3)double lt=Lot;

for (
int i=OrdersHistoryTotal()-1i>=0i--)
 {
   
4)if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
   {
   if(
OrderMagicNumber()==Magic)
   { 
   if(
OrderSymbol()==Symbol())
   { 
   
////
   
if(OrderType()==OP_SELL)
   {      
   
5)if((!use_martini_on_SL && OrderProfit()+OrderSwap()+OrderCommission()<=-Lose_to_on_martini) || (use_martini_on_SL && OrderClosePrice()>=OrderStopLoss()))
   
6)lt=OrderLots()*Lot_koef_closed;
   
7)break;
   }
   
/////
   
if(OrderType()==OP_BUY)
   {      
   if((!
use_martini_on_SL && OrderProfit()+OrderSwap()+OrderCommission()<=-Lose_to_on_martini) || (use_martini_on_SL && OrderClosePrice()<=OrderStopLoss()))
   
lt=OrderLots()*Lot_koef_closed;
   )break;
   } 
   
/////
   
}
   }              
   }
 }
 
 
8)return(NormalizeDouble(lt,nor_lot));
 } 
1) Назначаем переменной Lotss стартовый лот.
2) Проверяем если у нас в настройках включен мартини на закрытый ордер, то заходим в функцию.
3) Назначаем переменной lt стартовый лот на случай если последний закрытый ордер был не убыточным.
4) Выбираем ордер с уже закрытых.
5) Выбрали сел и проверяем что у нас в настройках на счёт вкл/выкл мартини на закрытый ордер при срабатывании стоплоса или при убытке больше указаного. Если вкл при убытке больше указаного и убыток есть больше указаного в настройках уровня ИЛИ вкл при стоплосе и ордер был закрыт по стоплосу,
6)ТО переменной lt присваиваем Лот закрытого ордера*коеф указаный в настройках.
7) Останавливаем перебор ордеров как только попался ордер сел.
8) Возвращаем округленное значение лота после умножения.
02.11.2014, 16:34
Аватар для сергей киров
сергей киров сергей киров вне форума Почётный гражданин
Регистрация: 09.01.2011 / Сообщений: 1,299
Поблагодарили 383 раз(а) / Репутация: 379
научите как сделать реверс в советнике
что прописать в код и что в настройки
Ответить


Опции темы

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

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



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


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