Уроки по программированию на языке MQL4 от eevviill

SINET2000

Прохожий
Забыл добавить,у меня альпари 5ти знак,может из за этого?
 

SINET2000

Прохожий
Я чу-чуть разобрался,вообщем нужно было сл и тп указывать в 5-ти знаке)
но теперь у меня другая проблема))) он открывает два ордера,как прописать что бы ордер был только один бай или селл?
И как прописать чтоб при обратном сигнале ордер закрывался???
например открыт бай-сигнал на селл,бай закрылся-селл открылся и наоборот?
Помогите кому не трудно!o_o
 

eevviill

Заблокирован
Спасибо eevviill думаю я продвинулся))
правильно я понял сделать?
HTML:
if(arrow_down!=EMPTY_VALUE) OrderSend(Symbol(),OP_BUY,StartingLot,Ask,Slippage,SLbuy,TPbuy,"GOLD999D1~",0,Green); 
       if(arrow_up!=EMPTY_VALUE) OrderSend(Symbol(),OP_SELL,StartingLot,Bid,Slippage,SLsell,TPsell,"GOLD999D1~",0,Red);
теперь мне в журнале при тесте выдает "test EURUSD,H1: OrderSend error 130"
поменял сл и тп на ноль и тогда он открыл сделки,только открыл сразу два ордера(и на бай и на селл) рядом и совсем как-то не по индикатору,eevviill где я накосячил??
Посмотреть вложение 112013
iCustom. Название индикатора должно быть ех4 файла, скорее всего убери ~

А я думал ты хоть уроки почитать хочешь. Понял что нет.
Тебе нужен шаблон. Держи.
 

Вложения

  • Shabl (9).mq4
    18,4 КБ · Просмотры: 71

SINET2000

Прохожий
Спасибо огромное,шаблон видимо отличный,но полностью я в нем не разобрался,для меня он слишком сложный,я только неделю изучаю mql4 и насчет уроков,я их читаю,а таланта все запомнить и понят сразу у меня явно нет!
Пока не набрел на твой урок "iCustom" мои дела по созданию хотя бы не доделанного советника не продвигались,так как везде был пример только вставки пользовательского индикатора и ничего больше!
 

air

Прохожий
Ну, во-первых, сразу же хотелось бы искренне поблагодарить автора ветки за такое доброе и полезное дело. До его трудов лично я даже не предполагал, что начнёт хоть что-то получаться в самостоятельном написании программ в mql4, хотя ранее и предпринимались неоднократные попытки. Такого последовательного, доходчивого, наглядного и простого изложения материала я считаю на просторах рунета нет и в помине. Всегда, когда возникают вопросы по языку, это первый ресурс на который захожу за поиском ответа. Дай Бог автору ветки крепкого здоровья, долгих лет и значимого успеха на трейдерской ниве.

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

Задача следующая. Имеются 2 мувинга с периодами 200 и 300 и переменная N = 0. В момент, когда цена закрывается за "нижним" ЕМА300 пересекая его "сверху вниз", переменная N приобретает значение "1".
Это значение должно сохраняться до момента пересечения ценой "верхнего" ЕМА200 уже "снизу вверх" соответственно, после чего N должен стать равным "0".

Сложность в том, что когда цена пересекает "нижний" ЕМА300 "снизу вверх" возвращаясь, то не доходя до "верхнего" ЕМА200 переменная N уже теряет значение "1" и становится = 0, а это должно исключаться.

bool N = 0;

int start()

{

double MA_1 = iMA(NULL,0,200,0,1,0,1);
double MA_2 = iMA(NULL,0,300,0,1,0,1);

bool N = false;

if ( Close[1] < MA_2 ) {N = 1;}
if ( Close[1] > MA_1 ) {N = 0;}

Comment (N);

return(0);
 

Вложения

  • вопрос.jpg
    вопрос.jpg
    93,8 КБ · Просмотры: 37
Последнее редактирование:

77павел

Почетный гражданин
привет хотел вот тут к сове трал добавить не как магик не клеится подскажи пожалуйста почему
 

Вложения

  • магик.png
    магик.png
    45,1 КБ · Просмотры: 35

alexshell

Элитный участник
привет хотел вот тут к сове трал добавить не как магик не клеится подскажи пожалуйста почему

Убери || OrderMagicNumber( )==MAGIK если в сове магик не используется.
А если используется то смотри в переменных как он там прописан и замени
MAGIK на допустим Magik.
И сразу там всё таки надо не || ставить, а &&.
 

77павел

Почетный гражданин
Убери || OrderMagicNumber( )==MAGIK если в сове магик не используется.
А если используется то смотри в переменных как он там прописан и замени
MAGIK на допустим Magik.
И сразу там всё таки надо не || ставить, а &&.

скажи пожалуйста вот так может и прописать
 

Вложения

  • магик.png
    магик.png
    1,8 КБ · Просмотры: 33

Renta

Новичок форума
Вопросец тут к топикстартеру...

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

а мой вопросец к вам такой:

не могли бы вы в самом начале также выставить информацию что и как считается и что обозначают такие названия в самом терминале

"Баланс"
"Кредит"
"Средства"
"Залог"
"Свободно"
"Уровень"

что обозначает каждый термин и как он считается (с конкретными числовыми примерами).
Плюс добавить как это соотноситься друг с другом.

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

Приведу свой пример на котором я спотыкался в самом начале:

Кредитное плечо брал от балды или "умных рекомендаций" с интернета не понимая что это.
Очень сложно понимал при каком раскладе стопаут в 20% означает что даже если у меня от 1000 баксов оставалось 300, а позиции у меня закрываются (так как я не учитывал оказывается что еще денежки забираются в "Залог" и т.п.)

не могли ли бы вы также просто и понятно дать расшифировку по моему вопросу?

.
 
Последнее редактирование:

Ugar

Гуру форума
Так же он не описал в своих уроках как втыкать вилку в розетку и какую кнопку нажать что бы комп включился.
Эти вопросы действительно не относятся к программированию. Основы биржевой торговли надо знать всем кто пришёл на биржу, а не только программистам. Тем более, часто программистам не обязательно держать в голове все формулы, многие значения можно программно запросить у терминала. Может стоит сходить на курсы биржевой торговли? Там прибыльно торговать не научат, но азбуку разбирают подробно. У многих ДЦ есть бесплатные курсы для начинающих. Так же есть эта информация на сайтах.
 

Renta

Новичок форума
Так же он не описал в своих уроках как втыкать вилку в розетку и какую кнопку нажать что бы комп включился.
Эти вопросы действительно не относятся к программированию. Основы биржевой торговли надо знать всем кто пришёл на биржу, а не только программистам. Тем более, часто программистам не обязательно держать в голове все формулы, многие значения можно программно запросить у терминала. Может стоит сходить на курсы биржевой торговли? Там прибыльно торговать не научат, но азбуку разбирают подробно. У многих ДЦ есть бесплатные курсы для начинающих. Так же есть эта информация на сайтах.

я это и понимаю... но опять таки ... вопрос вот в чем...

если вас научили водить автомобиль и сделали первоклассного гонщика...

но при этом не научили что дверь авто открывается вот так, так как типа это и так понятно (давайте смоделируем такую ситуацию). просто вы просыпались уже на сиденье за рулем автомобиля и учились и научились...

потом вам сказали вот автомобиль иди рули...

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

примерно я это и имел в виду...


или на примере контры... вам всегда готовую контру давали уже присоединенную к какой либо команде и вы стали супер игроком...

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


это были ассоциативные примеры....

поэтому и надо немного для полного счастья иногда знать то что я указал...
 

Ugar

Гуру форума
Ну да, водитель не умеющий открывать дверь авто, это круто. Так же можно сказать что полностью неграмотному студенту сложно будет учиться в институте. Но ведь профессор не должен учить студентов читать по слогам и писать палочки и крючочки. Не изучают в институтах букварь. Студент уже должен прийти в институт с базовыми знаниями.
Так же и здесь не место для изучения букваря. Уже должны быть базовые знания торговли, что бы начать изучать автоматизацию торговли.
 

Renta

Новичок форума
Ну да, водитель не умеющий открывать дверь авто, это круто. Так же можно сказать что полностью неграмотному студенту сложно будет учиться в институте. Но ведь профессор не должен учить студентов читать по слогам и писать палочки и крючочки. Не изучают в институтах букварь. Студент уже должен прийти в институт с базовыми знаниями.
Так же и здесь не место для изучения букваря. Уже должны быть базовые знания торговли, что бы начать изучать автоматизацию торговли.

тоже согласен...

хорошо, приведу реальный пример.

вы хороший водитель.

но вас посадили за руль автобуса с механической коробкой передач..

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

Другой реальный пример: я не знал что такое опционы, по виду обыкновенная торговля такая же как на форексе, но там закорючка одна немаловажная (это прибыль или убыток фиксируется не от того дошел ли график до определенного курса, а от интервала времени. И даже если ваш график уже 20 раз дошел до вашего курса вы будите голову чесать, а почему это не фиксируется прибыль.

Но согласен не спорить, просто я довожу до сведения так как я это вижу и почему я сделал такое предложение.

Топикстартер решит включить с свой курс такой блок, значит решит, нет так нет....

;-)
 

Dobryj

Почетный гражданин
Всем Привет !:)
Помогите решить проблему вот код ....
extern int P=270;
int D_100=30; extern bool Deg_100=true;
int D_200=40; extern bool Deg_200=true;
extern datetime Prognoz_time=D'2013.05.27 09:00';

double FORMULA_UP(int P,int D,string name,string text)
{
double price=iOpen(Symbol(),0,iBarShift(Symbol(),PERIOD_H1,Prognoz_time)); /*Цена открытия по времени */
int q=P+D;
double line=price+q;
ObjectCreate ("name", OBJ_TREND, 0, Prognoz_time, line, Prognoz_time+5*86400 , line);
ObjectSet ("name", OBJPROP_RAY, False);
ObjectSetText("name","text", 12, "Arial", Blue);
ObjectSet("name",OBJPROP_COLOR,Blue);
ObjectSet("name",OBJPROP_STYLE, STYLE_DOT);

return(line);
}
int start()
{
if(Deg_100==true){FORMULA_UP(P,D_100,"lime_100","DDD");}
if(Deg_200==true){FORMULA_UP(P,D_200,"lime_200","DDDD");}
return(0);
}





рисуется только один уровень , тот который заложен в функции !
в старт объявил что бы при значении тру или фолс уровни считались или нет , но на графике чертится только один уровень и без (name )(text) уровень подписан так как в функции , то что в старте объявлены другие названия не учитывается!

только учусь !
:D
 

ale002

::: __,,,^._.^,,,__ :::
Не оч понял что зачем, но кавычки вокруг "name" у вас явно не в тему в ObjectCreate и ObjectSet. Уберите - полегчает :)
 

Dobryj

Почетный гражданин
Не оч понял что зачем, но кавычки вокруг "name" у вас явно не в тему в ObjectCreate и ObjectSet. Уберите - полегчает :)
Спасибо за оперативный ответ ))
Я хочу сделать так что бы в функции было условие рисовки уровней
а в старте уже только объявлять чертить или нет( и подставоять данные для расчета , те переменные которые я вынес для каждого уровня разные !))) !
так как написано чертится только один уровень , второй нет:) !
 
Верх