торговая стратегия на базе Волновой теории Эллиота - страница 40
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скрипт мышкой перетаскиваем на график. В том месте, где отпущена мышка, должен появиться канал линейной регрессии RCH и вокруг него нарисаванная цветная кривая. В установочных начальных данных, я поставил, чтобы период был 24 часа, а степень полинома m=2, то есть парабола. Далее выделяем среднюю линию канала линейной регрессии, и перемещаем ее. Как перемещать - все-равно. Можно только одну из крайних точек появившихся после выделения, и канал будет растягиваться по времени, можно центральную точку, и канал будет перемещаться весь с сохранением длины предыдущего, до передвижения периода. В такт перемещения канала линейной регрессии должна перерисовываться и кривая полиномиальной регрессии.
На дневках период естественно нужно задать больше 24 часов.
Ну а как деинсталировать скрипт, наверное все уже знают.
Я не применял задержек в цикле типа Sleep и поэтому, скрипт гоняет по кругу в непрерывном цикле и естественно кушает ресурсы.
Если вы собираетесь пользоваться этим скриптом и ресурсы актуальны, то вставьте в конце цикла while функцию Sleep( ) 50 - 500, тогда нагрузка на процессор уменьшится.
Конечно все эти проблеммы из-за того, что создатели MT4 привязали исполнение индикаторной части только к функции start( ), которая включается от приходящей котировки. Если бы была дополнительная функция хотя бы для работы в офф-лайн, для исследований, то таких проблемм не было бы.
Кстати если разработчики читают эту ветку, убедительная просьба, подумать об этом. Не всегда же пограмма будет в таком примитивном состоянии как сейчас (Хотя все конечно относительно).
Большое Вам человеческое спасибо, буду разбираться
ps: видимо ВМ дается мне намного хуже чем Вам :))
согласен, я бы даже сказал ГЛАВНАЯ проблема
УРА!!! Оказывается всё дело заключалось лишь в способе запуска скрипта! Я просто выбирал "Исполнить на графике" и поэтому шла ошибка. А когда тянешь скрипт мышкой, то всё работает! :o) Спасибо за разъяснения!
Есть ли в этих рассуждениях ошибка?
На первый взгляд ошибки нет.
Может ли полученное сравнение быть применено для решения поставленной Вами задачи? Почему?
Заранее спасибо.
Сходу точно ответить, наверное, не получится (у меня по крайней мере). Постановка задачи предполагала получить как минимум две оценки: цену (или целевую зону) и время ее достижения (или время отмены сценария). По уровням я получаю ценовые уровни, а по каналам - связанные переменные: цену и время. При более-менее точном определении одной из них, вторая тоже получается с приемлемой точностью. Это если кратко изложить подход к решению.
Можно ли это сформулировать с использованием предлагаемого Вами подхода - не знаю не пробовал. Наверное, можно - уверен, что тот подход, которым я воспользовался не единственный и, возможно, не самый оптимальный.
Точнее ответить не могу, а время тратить пока не очень получится - все еще несколько подходов к построению стратегии пытаюсь реализовать.
Удачи и попутных трендов.
Вот картинка. Соответственно нужно переходить на М30 мне для более точных расчётов (больше баров - 30 баров не дают достаточного качества расчёта Хёрста)
Время на конвертацию gif в png уходит столько же, сколько на упаковку в архив :)
Обратил внимание на Up+Down на картинках - всегда равно 1.0. Это в принципе понятно. Осатлось понять каким образом получено три канала, вместо одного. И как посчитано среднее? Но это вопрос чисто из любопытства :)
Про расчёт Up+Down это я применил подсчёт вероятности по формуле Чебышева (из Булашева).
Среднее считается пропорционально длинам каналов - в качестве весов выбрано количество баров каждого канала(я про это уже писал в алгоритме).
Три канала вместо одного получается всё также по принципам стратегии. У вас чаще всего имеется несколько областей, в которых можно построить каналы, удовлетворяющие критериям. Вот в этих областях я выбираю тот канал, который имеет меньшее СКО. Также я ввёл отсечку чтобы каждый следующий выбранный для построения на графике канал отличался от предыдущего не менее чем в 2 раза по длине баров. Если не отсекать, то каналов может быть и до 7 близко расположенных, что сильно замазывает рисунок линиями. Но с этой отсечкой каналов получается обычно 2-3, что вполне наглядно показывает картину не замазывая рисунок линиями.
У тебя такой красивый индикатор Мюррея, с надписями. Если не трудно, дай ссылочку откуда он.
Заранее благодарю - Александр
У тебя такой красивый индикатор Мюррея, с надписями. Если не трудно, дай ссылочку откуда он.
Или что еще проще, кинь мне на мыло ANG3110@latchess.com
На самом деле это индикатор Vladislava, который взят с www.mql4.com
только подписи введены. Можете взять вот здесь.
//+------------------------------------------------------------------+ //| MMLevls_VG.mq4 | //| Copyright © 2006, Vladislav Goshkov (VG). | //| 4vg@mail.ru | //| Many thanks to Tim Kruzel | //+------------------------------------------------------------------+ #property copyright "Vladislav Goshkov (VG)." #property link "4vg@mail.ru" #property indicator_chart_window // ============================================================================================ // * Линии 8/8 и 0/8 (Окончательное сопротивление). // * Эти линии самые сильные и оказывают сильнейшие сопротивления и поддержку. // ============================================================================================ //* Линия 7/8 (Слабая, место для остановки и разворота). Weak, Stall and Reverse //* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, //* значит она развернется быстро вниз. Если цена не остановилась около этой линии, она продолжит движение вверх к 8/8. // ============================================================================================ //* Линия 1/8 (Слабая, место для остановки и разворота). Weak, Stall and Reverse //* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, //* значит она развернется быстро вверх. Если цена не остановилась около этой линии, она продолжит движение вниз к 0/8. // ============================================================================================ //* Линии 6/8 и 2/8 (Вращение, разворот). Pivot, Reverse //* Эти две линии уступают в своей силе только 4/8 в своей способности полностью развернуть ценовое движение. // ============================================================================================ //* Линия 5/8 (Верх торгового диапазона). Top of Trading Range //* Цены всех рынков тратят 40% времени, на движение между 5/8 и 3/8 линиями. //* Если цена двигается около линии 5/8 и остается около нее в течении 10-12 дней, рынок сказал что следует //* продавать в этой «премиальной зоне», что и делают некоторые люди, но если цена сохраняет тенденцию оставаться //* выше 5/8, то она и останется выше нее. Если, однако, цена падает ниже 5/8, то она скорее всего продолжит //* падать далее до следующего уровня сопротивления. // ============================================================================================ //* Линия 3/8 (Дно торгового диапазона). Bottom of Trading Range //* Если цены ниже этой лини и двигаются вверх, то цене будет сложно пробить этот уровень. //* Если пробивают вверх эту линию и остаются выше нее в течении 10-12 дней, значит цены останутся выше этой линии //* и потратят 40% времени двигаясь между этой линией и 5/8 линией. // ============================================================================================ //* Линия 4/8 (Главная линия сопротивления/поддержки). Major Support/Resistance //* Эта линия обеспечивает наибольшее сопротивление/поддержку. Этот уровень является лучшим для новой покупки или продажи. //* Если цена находится выше 4/8, то это сильный уровень поддержки. Если цена находится ниже 4/8, то это прекрасный уровень //* сопротивления. // ============================================================================================ extern int P = 90; extern int MMPeriod = 60; extern int StepBack = 0; extern color mml_clr_m_2_8 = White; // [-2]/8 extern color mml_clr_m_1_8 = White; // [-1]/8 extern color mml_clr_0_8 = Aqua; // [0]/8 extern color mml_clr_1_8 = Yellow; // [1]/8 extern color mml_clr_2_8 = Red; // [2]/8 extern color mml_clr_3_8 = Green; // [3]/8 extern color mml_clr_4_8 = Blue; // [4]/8 extern color mml_clr_5_8 = Green; // [5]/8 extern color mml_clr_6_8 = Red; // [6]/8 extern color mml_clr_7_8 = Yellow; // [7]/8 extern color mml_clr_8_8 = Aqua; // [8]/8 extern color mml_clr_p_1_8 = White; // [+1]/8 extern color mml_clr_p_2_8 = White; // [+2]/8 extern int mml_wdth_m_2_8 = 2; // [-2]/8 extern int mml_wdth_m_1_8 = 1; // [-1]/8 extern int mml_wdth_0_8 = 2; // [0]/8 extern int mml_wdth_1_8 = 1; // [1]/8 extern int mml_wdth_2_8 = 1; // [2]/8 extern int mml_wdth_3_8 = 1; // [3]/8 extern int mml_wdth_4_8 = 2; // [4]/8 extern int mml_wdth_5_8 = 1; // [5]/8 extern int mml_wdth_6_8 = 1; // [6]/8 extern int mml_wdth_7_8 = 1; // [7]/8 extern int mml_wdth_8_8 = 2; // [8]/8 extern int mml_wdth_p_1_8 = 1; // [+1]/8 extern int mml_wdth_p_2_8 = 2; // [+2]/8 extern color MarkColor = Blue; extern int MarkNumber = 217; double dmml = 0, dvtl = 0, sum = 0, v1 = 0, v2 = 0, mn = 0, mx = 0, x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, y1 = 0, y2 = 0, y3 = 0, y4 = 0, y5 = 0, y6 = 0, octave = 0, fractal = 0, range = 0, finalH = 0, finalL = 0, mml[13]; string ln_txt[13], buff_str = ""; int bn_v1 = 0, bn_v2 = 0, OctLinesCnt = 13, mml_thk = 8, mml_clr[13], mml_wdth[13], mml_shft = 35, nTime = 0, CurPeriod = 0, nDigits = 0, i = 0; int NewPeriod=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators if(MMPeriod>0) NewPeriod = P*MathCeil(MMPeriod/Period()); else NewPeriod = P; ln_txt[0] = "[-2/8]P extremely overshoot [-2/8]";// "extremely overshoot [-2/8]";// [-2/8] ln_txt[1] = "[-1/8]P";// "overshoot [-1/8]";// [-1/8] ln_txt[2] = "[0/8]P Окончательное сопротивление";// "Ultimate Support - extremely oversold [0/8]";// [0/8] ln_txt[3] = "[1/8]P Слабая, место для остановки и разворота";// "Weak, Stall and Reverse - [1/8]";// [1/8] ln_txt[4] = "[2/8]P Вращение, разворот";// "Pivot, Reverse - major [2/8]";// [2/8] ln_txt[5] = "[3/8]P Дно торгового диапазона";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8] ln_txt[6] = "[4/8]P Главная линия сопротивления/поддержки";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8] ln_txt[7] = "[5/8]P Верх торгового диапазона";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8] ln_txt[8] = "[6/8]P Вращение, разворот";// "Pivot, Reverse - major [6/8]";// [6/8] ln_txt[9] = "[7/8]P Слабая, место для остановки и разворота";// "Weak, Stall and Reverse - [7/8]";// [7/8] ln_txt[10] = "[8/8]P Окончательное сопротивление";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8] ln_txt[11] = "[+1/8]P";// "overshoot [+1/8]";// [+1/8] ln_txt[12] = "[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8] /* ln_txt[0] = "[-2/8]P";// "extremely overshoot [-2/8]";// [-2/8] ln_txt[1] = "[-1/8]P";// "overshoot [-1/8]";// [-1/8] ln_txt[2] = "[0/8]P";// "Ultimate Support - extremely oversold [0/8]";// [0/8] ln_txt[3] = "[1/8]P";// "Weak, Stall and Reverse - [1/8]";// [1/8] ln_txt[4] = "[2/8]P";// "Pivot, Reverse - major [2/8]";// [2/8] ln_txt[5] = "[3/8]P";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8] ln_txt[6] = "[4/8]P";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8] ln_txt[7] = "[5/8]P";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8] ln_txt[8] = "[6/8]P";// "Pivot, Reverse - major [6/8]";// [6/8] ln_txt[9] = "[7/8]P";// "Weak, Stall and Reverse - [7/8]";// [7/8] ln_txt[10] = "[8/8]P";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8] ln_txt[11] = "[+1/8]P";// "overshoot [+1/8]";// [+1/8] ln_txt[12] = "[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8] */ //mml_shft = 3; mml_thk = 3; // Начальная установка цветов уровней октав и толщины линий mml_clr[0] = mml_clr_m_2_8; mml_wdth[0] = mml_wdth_m_2_8; // [-2]/8 mml_clr[1] = mml_clr_m_1_8; mml_wdth[1] = mml_wdth_m_1_8; // [-1]/8 mml_clr[2] = mml_clr_0_8; mml_wdth[2] = mml_wdth_0_8; // [0]/8 mml_clr[3] = mml_clr_1_8; mml_wdth[3] = mml_wdth_1_8; // [1]/8 mml_clr[4] = mml_clr_2_8; mml_wdth[4] = mml_wdth_2_8; // [2]/8 mml_clr[5] = mml_clr_3_8; mml_wdth[5] = mml_wdth_3_8; // [3]/8 mml_clr[6] = mml_clr_4_8; mml_wdth[6] = mml_wdth_4_8; // [4]/8 mml_clr[7] = mml_clr_5_8; mml_wdth[7] = mml_wdth_5_8; // [5]/8 mml_clr[8] = mml_clr_6_8; mml_wdth[8] = mml_wdth_6_8; // [6]/8 mml_clr[9] = mml_clr_7_8; mml_wdth[9] = mml_wdth_7_8; // [7]/8 mml_clr[10] = mml_clr_8_8; mml_wdth[10]= mml_wdth_8_8; // [8]/8 mml_clr[11] = mml_clr_p_1_8; mml_wdth[11]= mml_wdth_p_1_8; // [+1]/8 mml_clr[12] = mml_clr_p_2_8; mml_wdth[12]= mml_wdth_p_2_8; // [+2]/8 //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here Comment(" "); for(i=0;i<OctLinesCnt;i++) { buff_str = "mml"+i; ObjectDelete(buff_str); buff_str = "mml_txt"+i; ObjectDelete(buff_str); } //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- TODO: add your code here if( (nTime != Time[0]) || (CurPeriod != Period()) ) { //price // Print("MMLevls : NewPeriod = ",NewPeriod); bn_v1 = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack); bn_v2 = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack); v1 = Low[bn_v1]; v2 = High[bn_v2]; //determine fractal..... if( v2<=250000 && v2>25000 ) fractal=100000; else if( v2<=25000 && v2>2500 ) fractal=10000; else if( v2<=2500 && v2>250 ) fractal=1000; else if( v2<=250 && v2>25 ) fractal=100; else if( v2<=25 && v2>12.5 ) fractal=12.5; else if( v2<=12.5 && v2>6.25) fractal=12.5; else if( v2<=6.25 && v2>3.125 ) fractal=6.25; else if( v2<=3.125 && v2>1.5625 ) fractal=3.125; else if( v2<=1.5625 && v2>0.390625 ) fractal=1.5625; else if( v2<=0.390625 && v2>0) fractal=0.1953125; range=(v2-v1); sum=MathFloor(MathLog(fractal/range)/MathLog(2)); octave=fractal*(MathPow(0.5,sum)); mn=MathFloor(v1/octave)*octave; if( (mn+octave)>v2 ) mx=mn+octave; else mx=mn+(2*octave); // calculating xx //x2 if( (v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) ) x2=mn+(mx-mn)/2; else x2=0; //x1 if( (v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) ) x1=mn+(mx-mn)/2; else x1=0; //x4 if( (v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) ) x4=mn+3*(mx-mn)/4; else x4=0; //x5 if( (v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) ) x5=mx; else x5=0; //x3 if( (v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) ) x3=mn+3*(mx-mn)/4; else x3=0; //x6 if( (x1+x2+x3+x4+x5) ==0 ) x6=mx; else x6=0; finalH = x1+x2+x3+x4+x5+x6; // calculating yy //y1 if( x1>0 ) y1=mn; else y1=0; //y2 if( x2>0 ) y2=mn+(mx-mn)/4; else y2=0; //y3 if( x3>0 ) y3=mn+(mx-mn)/4; else y3=0; //y4 if( x4>0 ) y4=mn+(mx-mn)/2; else y4=0; //y5 if( x5>0 ) y5=mn+(mx-mn)/2; else y5=0; //y6 if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) ) y6=mn; else y6=0; finalL = y1+y2+y3+y4+y5+y6; for( i=0; i<OctLinesCnt; i++) { mml[i] = 0; } dmml = (finalH-finalL)/8; // Print("MMLevls : NewPeriod = ",NewPeriod," dmml = ",dmml," finalL = ",finalL); mml[0] =(finalL-dmml*2); //-2/8 for( i=1; i<OctLinesCnt; i++) { mml[i] = mml[i-1] + dmml; } for( i=0; i<OctLinesCnt; i++ ){ buff_str = "mml"+i; if(ObjectFind(buff_str) == -1) { ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i]); ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]); ObjectSet(buff_str, OBJPROP_WIDTH, mml_wdth[i]); ObjectMove(buff_str, 0, Time[0], mml[i]); } else { ObjectMove(buff_str, 0, Time[0], mml[i]); } buff_str = "mml_txt"+i; if(ObjectFind(buff_str) == -1) { ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft); ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]); ObjectMove(buff_str, 0, Time[mml_shft], mml[i]); } else { ObjectMove(buff_str, 0, Time[mml_shft], mml[i]); } } // for( i=1; i<=OctLinesCnt; i++ ){ nTime = Time[0]; CurPeriod= Period(); string buff_str = "LR_LatestCulcBar"; if(ObjectFind(buff_str) == -1) { ObjectCreate(buff_str, OBJ_ARROW,0, Time[StepBack], Low[StepBack]-2*Point ); ObjectSet(buff_str, OBJPROP_ARROWCODE, MarkNumber); ObjectSet(buff_str, OBJPROP_COLOR, MarkColor); } else { ObjectMove(buff_str, 0, Time[StepBack], Low[StepBack]-2*Point ); } } //---- End Of Program return(0); } //+------------------------------------------------------------------+