Ваш сайт, по моему мнению, наиболее соответствует тому, чтобы на нём НОВИЧКАМ помогали с освоением материала по MQL4.
На задаваемые мной вопросы, я получал исчерпывающие ответы СПЕЦОВ. Именно спецов. Но новичок есть новичок. Он будет задавать вопрос снова и снова, пока не поймёт суть. Так ведут школьники у которых ЕСТЬ ЖЕЛАНИЕ ЧЕМУ ЛИБО НАУЧИТЬСЯ.....Может быть они(школьники) не семь пядей во лбу, и не такие умные как ботаны НО ЕСЛИ ЕСТЬ ЖЕЛАНИЕ я думаю надо приветствовать его......Я ХОЧУ НАУЧИТЬСЯ.....
Мне очень понравились ответы и коментарии korey, grani77, vinin, YuraZ, figarO, BARS. Толково и грамотно. Если позволите, то общение можно пореместить на мыло...........Заранее благодарен
О как. А я думал, что "сколько курицу ни учи - умнее не станет, только знать больше будет".
А зачем учить курицу. Она же даже не птица (по поговорке).....Ну а человек, тем и отличается от курицы- он мыслит. А можно и так "Век живи, век учись".
И всё таки повторюсь, выше привёл своё творение за выходные дни, плз, свои коментарии что не так..........
современное состояние автоторговли похоже на Битву за Урожай, бьемся с комбайном, с котировками, с MQL, с тестером, с глючными ТС из книжек и из самопальных, поэтому обучение по-просту не устоялось, его пока не существует по причине наличия множества нерешенных проблем в диапазоне от технического до гностического. - Имеется исскуство создания МТС, но остальная вся мета торговля - бардак поэтому обучение как таковое может быть состоятельным в единственном варианте =выбираете себе задачу по-плечу, грызете ее старательно и на том учитесь. ... P.S. учиться вообще говоря обидно, - т.к. вместо того чтобы (имея опыт и навыки) решать задачи в МТ-4 приходится на задачах этих учиться учиться и учиться ИМХО = мордой об рояль но других путей в автоторговле пока нет и пока не будет
современное состояние автоторговли похоже на Битву за Урожай, бьемся с комбайном, с котировками, с MQL, с тестером, с глючными ТС из книжек и из самопальных, поэтому обучение по-просту не устоялось, его пока не существует по причине наличия множества нерешенных проблем в диапазоне от технического до гностического. - Имеется исскуство создания МТС, но остальная вся мета торговля - бардак поэтому обучение как таковое может быть состоятельным в единственном варианте =выбираете себе задачу по-плечу, грызете ее старательно и на том учитесь. ... P.S. учиться вообще говоря обидно, - т.к. вместо того чтобы (имея опыт и навыки) решать задачи в МТ-4 приходится на задачах этих учиться учиться и учиться ИМХО = мордой об рояль но других путей в автоторговле пока нет и пока не будет
Ну почему же учиться обидно. Ведь человек учась - развивается. Если не учиться, то это процесс превращения в амёбу, в одноклеточное, в аморфное состояние. Вообшем это филосовские вопросы. Они сложные, непростые, и их ЛУЧШЕ обсуждать за кружкой чая(40 градусов), с пирожными(куском хорошего мяса) и на магком диване......-:)))))))
Я повторюсь, от16.02 (выше) мои творения. Что неправильно в них.............
1. вопрос не задан, т.е. где постановка вопроса? 2 чтобы ответить на общий вопрос "что неправиььно в них" нужно погонять этот советник вообще, - техника все таки, но он же не пригоден для прогона. а раз так, то и отвечать не об чем. 3. Прогон советника не нужен если вопрос об социлляторе ССI, например уместен вопрос - что еще + к CCI, но вы же его не задали)) 3. код выложенный по кнопке SRC намного легче читается, экономьте глаза и время
2. Где в коде прописано изменение цвета гистограммы в случае если haOpen < haClose и когда haOpen > haClose
Если Вам несложно, поправьте, пожалуйста, неправильные комментарии к данному коду! Очень хочу разобраться):
//+------------------------------------------------------------------+ //| Heiken Ashi.mq4 | //| Copyright c 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ //| For Heiken Ashi we recommend next chart settings ( press F8 or | //| select on menu 'Charts'->'Properties...'): | //| - On 'Color' Tab select 'Black' for 'Line Graph' | //| - On 'Common' Tab disable 'Chart on Foreground' checkbox and | //| select 'Line Chart' radiobutton | //+------------------------------------------------------------------+ // Все, что было написано выше - стандартная лабуда // а все, что идет ниже под грифом #property - это объявление глобальных констант.
#property indicator_chart_window // отображать индикатор в основном окне #property indicator_buffers 4 // будет 4 буфера #property indicator_color1 Red // цвет для гистограммы #property indicator_color2 White // цвет для гистограммы #property indicator_color3 Red // цвет для гистограммы #property indicator_color4 White // цвет для гистограммы #property indicator_width1 1 // толщина для гистограмм #property indicator_width2 1 #property indicator_width3 3 #property indicator_width4 3
//---- четыре строчки ниже - это внешние переменные цветов гистограмм extern color color1 = Red; extern color color2 = White; extern color color3 = Red; extern color color4 = White; //---- buffers вводятся переменные, которые в дальнейшем будут связаны с буферами гистограмм индикатора double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; //---- int ExtCountedBars=0; // вводится переменная, которой присваивается 0 - хаха , я не знаю почему не 1(( //+------------------------------------------------------------------+ //| Custom indicator initialization function | //|------------------------------------------------------------------| int init() // а здесь запускается специальная функция init (здесь она запускается после присоединения индикатора к окну графика, после изменения настроек эксперта) { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1); // здесь устанавливается тип гистограмм с порядковыми номерами линий, типом, стилем, шириной, цветом SetIndexBuffer(0, ExtMapBuffer1); // связывает переменную-массив, объявленную на глобальном уровне с предопределенным (по порядковому номеру линии = 0) // буфером польз.-го индикатора. Ниже по аналогии. SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2); SetIndexBuffer(1, ExtMapBuffer2); SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3); SetIndexBuffer(2, ExtMapBuffer3); SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4); SetIndexBuffer(3, ExtMapBuffer4); //---- // установка порядкового номера бара от начала данных для отрисовки указанной линии SetIndexDrawBegin(0,10); // порядковый номер линии = 0. хаха не понятно, эта линия будет рисоваться на основании 11 быров с учетом нулевого?(( индикатор отрисован // по гораздо большему количеству баров((. ниже по аналогии SetIndexDrawBegin(1,10); SetIndexDrawBegin(2,10); SetIndexDrawBegin(3,10); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer1); // а зачем повторять ведь это же уже было написано выше, наверное автор этого индикатора захотел меня запутать!)) SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); SetIndexBuffer(3,ExtMapBuffer4); //---- initialization done return(0); // на этом специальная функция init завершается. Только почему в скобках у return ноль?? - непонятно(( } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() // а тут специальная функция deinit, которая не используется { //---- TODO: add your code here
//---- return(0); // гуд бай deinit } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() //это основная функция индикатора запускается на каждом новом тике { double haOpen, haHigh, haLow, haClose; //вводятся локальные дробные переменные if(Bars<=10) return(0); //оператор if с условием если баров yна рафике меньше или равно10 - закрывать функцию start ExtCountedBars=IndicatorCounted(); //переменной ExtCountedBars присваивается значение количества баров в окне терминала. //а чем отличаетсяфункция IndicatorCounted () от Bars? //---- check for possible errors if (ExtCountedBars<0) return(-1); //ну вот, еще один if - если переменная ExtCountedBars < нуля ?завершение функции start? почему return с (-1)? - Непонятно(( //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; // а если ExtCountedBars больше нуля, от этого количества баров отнимается единица. //Осуществляется переход на один бар ближе к нулевому - если я правильно понимаю int pos=Bars-ExtCountedBars-1; //Вводиться и рассчитывается переменная pos - указатель на бар, с которого будет вестись расчет while(pos>=0) //Запуск цикла while с условием, что pos должна быть больше или равна нулю. Цикл будет повторяться при каждом новом тике //(при соблюдении условия). { haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2; //вводится и рассчитывается переменная haOpen на основании(суммы 2-х буферов 3-го и 4-го со смещением на один //бар вперед)потом это на 2 делится //когда цикл while снова повториться к pos будет изменена, чтобы не считать уже вычесленное значение индикаторов? haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4; //вводится и рассчитывается переменная haClose на основании суммы цен открытия, максимума, минимума и закрытия //бара начала рассчета haHigh=MathMax(High[pos], MathMax(haOpen, haClose)); //вводиться и рассчитывается переменная haHigh на основании функции возврата максимального из двух числовых //максимума текущего бара pos и максимального из 2-х числовых значений (haOpen и haClose) haLow=MathMin(Low[pos], MathMin(haOpen, haClose)); //значений, то же что и строкой выше - только рассчитывается минимальное значение if (haOpen<haClose) //если haOpen меньше haClose { ExtMapBuffer1[pos]=haLow; //тогда значение Буфер 1 по pos равено haLow ExtMapBuffer2[pos]=haHigh; //и значение буфера 2 по pos равно haHight } else //а если условие ложно иhaOpen больше или равно haClose { ExtMapBuffer1[pos]=haHigh; //тогда наоборот значение Буфер 1 по pos равно haHight ExtMapBuffer2[pos]=haLow; //а значение Буфера 2 по pos равно haLow } ExtMapBuffer3[pos]=haOpen; //в любом случае значение Буфера3 по pos равно haOpen ExtMapBuffer4[pos]=haClose; //а значение буфера 4 по pos равно haClose pos--; //уменьшаем pos на единицу (ближе к нулевому бару) и повторяем цикл while сначала при соблюдении его условия } //---- return(0); //а если условие не соблюлось, выход из цикла while и конец функции start } //+------------------------------------------------------------------+
В приведённых выше примерах описан код на покупку и продажу для CCI, RSI и WPR. Почему именно эти индикаторы используются? По моему они наиболее просты для освоения принципов построения экспертов. Принцип покупки и продажи одинаков для них. меньше -100 (для CCI), -70 (для RSI) и 20 (для WPR), соответственно продажа будет: +100, -30 и 80. Мне кажется (крестился уже не раз), что ошибки в торговых условиях, но где не пойму..... Тут дело в принципе ПРАВИЛЬНОГО НАПИСАНИЯ торгового условия (я так думаю).............. Вот это я и хотел Вас спросить........
Здравствуйте.
Вот труды мои за выходные. Выношу на осуждение т. е. на разгром.
int start(){
//----
double CCI = NormalizeDouble(iCCI(NULL, 0,Period,PRICE_CLOSE,1), Digits);
if(CCI[1] > -100)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Buy. Ошибка №", GetLastError());
}
if(CCI[1] < 100)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Sell. Ошибка №", GetLastError());
}
//----
return(0);
}
это часть кода для CCI. Суть проста, cci внизу >-100 покупаем, cci вверху < 100 продаём
int start(){
//----
double RSI = NormalizeDouble(iRSI(NULL, 0,Period,PRICE_CLOSE,1), Digits);
if(RSI[1] > 70)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Buy. Ошибка №", GetLastError());
}
if(RSI[1] < 30)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Sell. Ошибка №", GetLastError());
//----
return(0);
}
эта часть кода для RSI суть та же, покупка на70 продажа на 30
int start(){
//----
double WPR = NormalizeDouble(iWPR(NULL, 0,Period,1), Digits);
if(WPR[1] > -80)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Buy. Ошибка №", GetLastError());
}
if(WPR[1] < -20)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Sell. Ошибка №", GetLastError());
}
//----
return(0);
}
эта часть кода для WPR (индикатор williams) покупка -80, продажа -20.
У меня вопрос, не напутал ли я с торговыми условиями в этом всём............Эаранее благодарен........
Здравствуйте уважаемые специалисты и не только.
Ваш сайт, по моему мнению, наиболее соответствует тому, чтобы на нём НОВИЧКАМ помогали с освоением материала по MQL4.
На задаваемые мной вопросы, я получал исчерпывающие ответы СПЕЦОВ. Именно спецов. Но новичок есть новичок. Он будет задавать вопрос снова и снова, пока не поймёт суть. Так ведут школьники у которых ЕСТЬ ЖЕЛАНИЕ ЧЕМУ ЛИБО НАУЧИТЬСЯ.....Может быть они(школьники) не семь пядей во лбу, и не такие умные как ботаны НО ЕСЛИ ЕСТЬ ЖЕЛАНИЕ я думаю надо приветствовать его......Я ХОЧУ НАУЧИТЬСЯ.....
Мне очень понравились ответы и коментарии korey, grani77, vinin, YuraZ, figarO, BARS. Толково и грамотно. Если позволите, то общение можно пореместить на мыло...........Заранее благодарен
О как. А я думал, что "сколько курицу ни учи - умнее не станет, только знать больше будет".
О как. А я думал, что "сколько курицу ни учи - умнее не станет, только знать больше будет".
А зачем учить курицу. Она же даже не птица (по поговорке).....Ну а человек, тем и отличается от курицы- он мыслит. А можно и так "Век живи, век учись".
И всё таки повторюсь, выше привёл своё творение за выходные дни, плз, свои коментарии что не так..........
to igrok2008
современное состояние автоторговли похоже на Битву за Урожай,
бьемся с комбайном, с котировками, с MQL, с тестером, с глючными ТС из книжек и из самопальных,
поэтому обучение по-просту не устоялось, его пока не существует по причине наличия множества нерешенных проблем
в диапазоне от технического до гностического.
- Имеется исскуство создания МТС, но остальная вся мета торговля - бардак
поэтому обучение как таковое может быть состоятельным в единственном варианте
=выбираете себе задачу по-плечу, грызете ее старательно и на том учитесь.
...
P.S. учиться вообще говоря обидно, - т.к. вместо того чтобы (имея опыт и навыки) решать задачи в МТ-4 приходится на задачах этих учиться учиться и учиться
ИМХО = мордой об рояль
но других путей в автоторговле пока нет и пока не будет
to igrok2008
современное состояние автоторговли похоже на Битву за Урожай,
бьемся с комбайном, с котировками, с MQL, с тестером, с глючными ТС из книжек и из самопальных,
поэтому обучение по-просту не устоялось, его пока не существует по причине наличия множества нерешенных проблем
в диапазоне от технического до гностического.
- Имеется исскуство создания МТС, но остальная вся мета торговля - бардак
поэтому обучение как таковое может быть состоятельным в единственном варианте
=выбираете себе задачу по-плечу, грызете ее старательно и на том учитесь.
...
P.S. учиться вообще говоря обидно, - т.к. вместо того чтобы (имея опыт и навыки) решать задачи в МТ-4 приходится на задачах этих учиться учиться и учиться
ИМХО = мордой об рояль
но других путей в автоторговле пока нет и пока не будет
Ну почему же учиться обидно. Ведь человек учась - развивается. Если не учиться, то это процесс превращения в амёбу, в одноклеточное, в аморфное состояние. Вообшем это филосовские вопросы. Они сложные, непростые, и их ЛУЧШЕ обсуждать за кружкой чая(40 градусов), с пирожными(куском хорошего мяса) и на магком диване......-:)))))))
Я повторюсь, от16.02 (выше) мои творения. Что неправильно в них.............
to igrok2008
1. вопрос не задан, т.е. где постановка вопроса?
2 чтобы ответить на общий вопрос "что неправиььно в них" нужно погонять этот советник вообще, - техника все таки, но он же не пригоден для прогона.
а раз так, то и отвечать не об чем.
3. Прогон советника не нужен если вопрос об социлляторе ССI, например уместен вопрос - что еще + к CCI, но вы же его не задали))
3. код выложенный по кнопке SRC намного легче читается, экономьте глаза и время
Вопросы по индикатору:
1. Правильны ли мои комментарии к коду (красным)
2. Где в коде прописано изменение цвета гистограммы в случае если haOpen < haClose и когда haOpen > haClose
Если Вам несложно, поправьте, пожалуйста, неправильные комментарии к данному коду! Очень хочу разобраться):