Da, interesno!
Valera
на примере советника пожалуйста, индикаторы никого не интересуют.
Ну, значит, я - никто.
))) Говорил же давече - глюк я форумский, фикция, фата-моргана...
Ну, значит, я - никто.
))) Говорил же давече - глюк я форумский, фикция, фата-моргана...
Но всегда в нужное время и в нужном месте. Это радует!
Виктор, а что тебя вдохновило на этот подвиг? На этом форуме не то, что с логикой, процентов 90 с головой не дружат.
Не боишься увязнуть в этом болоте? Тебе ж придется общаться не только с 10% адекватных...
===
Присоединяюсь к поздравлениям... Даже выпью за тебя, а заодно и за успех твоего безнадежного предприятия...
"Иди один и исцеляй слепых,
Чтобы узнать в тяжелый час сомненья
Учеников злорадное глумленье
И равнодушие толпы."
// Ахматова
На самом деле все просто. Появилось желание помочь другим делать оптимальный код, да и самому поучиться у других.
Не секрет, что со временем вырабатываются вполне определенные стереотипы, которые иногда (чаще всего) помогают, а иногда и мешают.
Подготовлю вариант индикатора и попытаюсь объяснить что и почему сделано. Если конечно интересно будет.
//+-------------------------------------------------------------------------+ //| ver.RA all1.mq4 | //| Copyright © 2010, age_nt | //+-------------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Green #property indicator_color2 Blue #property indicator_color3 Red #property indicator_color4 LightGray #property indicator_color5 DarkOrange #property indicator_level1 40 #property indicator_level2 20 #property indicator_level3 0 #property indicator_level4 -20 #property indicator_level5 -40 extern int MA = 10; extern bool all = FALSE; //---- Буферы индикатора double EUR_Buffer[]; double USD_Buffer[]; double GBP_Buffer[]; double CHF_Buffer[]; double JPY_Buffer[]; //---- Переменные int BarsMin=1000; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(5); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); //---- indicator line SetIndexBuffer(0,EUR_Buffer); SetIndexBuffer(1,USD_Buffer); SetIndexBuffer(2,GBP_Buffer); SetIndexBuffer(3,CHF_Buffer); SetIndexBuffer(4,JPY_Buffer); bool showEUR, showUSD, showGBP, showCHF, showJPY, showRAVI; if ( StringFind(Symbol(), "EUR", 0) != -1) showEUR = TRUE; if ( StringFind(Symbol(), "USD", 0) != -1) showUSD = TRUE; if ( StringFind(Symbol(), "GBP", 0) != -1) showGBP = TRUE; if ( StringFind(Symbol(), "CHF", 0) != -1) showCHF = TRUE; if ( StringFind(Symbol(), "JPY", 0) != -1) showJPY = TRUE; if ( all== TRUE || showEUR == TRUE ) SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,DodgerBlue); else SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,0,CLR_NONE); if ( all == TRUE || showUSD == TRUE ) SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,ForestGreen); else SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,0,CLR_NONE); if ( all == TRUE || showGBP == TRUE ) SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1,FireBrick); else SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,0,CLR_NONE); if ( all == TRUE || showCHF == TRUE ) SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,LightBlue); else SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,0,CLR_NONE); if ( all == TRUE || showJPY == TRUE ) SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1,Orange); else SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,0,CLR_NONE); SetIndexLabel(0,"EUR"); SetIndexLabel(1,"USD"); SetIndexLabel(2,"GBP"); SetIndexLabel(3,"CHF"); SetIndexLabel(4,"JPY"); SetIndexDrawBegin(0,0); SetIndexDrawBegin(1,0); SetIndexDrawBegin(2,0); SetIndexDrawBegin(3,0); SetIndexDrawBegin(4,0); IndicatorShortName("all1"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit,i; // string S=Symbol(); int counted_bars=IndicatorCounted(); //---- проверка на возможные ошибки if(counted_bars<0) return(-1); //---- вычисление минимального кол-ва баров (длины отображаемого графика) if(counted_bars==0) { BarsMin=iBars("GBPUSD",NULL); if(BarsMin>iBars("USDCHF",NULL)) BarsMin=iBars("USDCHF",NULL); if(BarsMin>iBars("EURUSD",NULL)) BarsMin=iBars("EURUSD",NULL); if(BarsMin>iBars("USDJPY",NULL)) BarsMin=iBars("USDJPY",NULL); if(BarsMin>iBars("EURGBP",NULL)) BarsMin=iBars("EURGBP",NULL); if(BarsMin>iBars("EURCHF",NULL)) BarsMin=iBars("EURCHF",NULL); if(BarsMin>iBars("EURJPY",NULL)) BarsMin=iBars("EURJPY",NULL); if(BarsMin>iBars("GBPCHF",NULL)) BarsMin=iBars("GBPCHF",NULL); if(BarsMin>iBars("GBPJPY",NULL)) BarsMin=iBars("GBPJPY",NULL); if(BarsMin>iBars("CHFJPY",NULL)) BarsMin=iBars("CHFJPY",NULL); } // Message(Vl(Symbol(),0,0)); //---- последний посчитанный бар будет пересчитан if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(limit>BarsMin-2) limit=BarsMin-2; //---- основной цикл // for (i = 0; i<=limit;i++) // { // USD_Buffer[i]=USD(i); // EUR_Buffer[i]=EUR(i); // GBP_Buffer[i]=GBP(i); // CHF_Buffer[i]=CHF(i); // JPY_Buffer[i]=JPY(i); // } //---- Вычисление индексов for (i = 0; i<=limit;i++) { USD_Buffer[i]=USD(i); EUR_Buffer[i]=EUR(i); GBP_Buffer[i]=GBP(i); CHF_Buffer[i]=CHF(i); JPY_Buffer[i]=JPY(i); } //---- return(0); } //+------------------------------------------------------------------+ double USD(int j) { double val = 0; double GBP_USD=-Cl("GBPUSD",j); double USD_CHF=Cl("USDCHF",j); double EUR_USD=-Cl("EURUSD",j); double USD_JPY=Cl("USDJPY",j); val=(GBP_USD+USD_CHF+EUR_USD+USD_JPY)/4; return(val); } //+------------------------------------------------------------------+ double GBP(int j) { double val = 0; double GBP_USD=Cl("GBPUSD",j); double EUR_GBP=-Cl("EURGBP",j); double GBP_CHF=Cl("GBPCHF",j); double GBP_JPY=Cl("GBPJPY",j); val=(EUR_GBP+GBP_USD+GBP_CHF+GBP_JPY)/4; return(val); } //+------------------------------------------------------------------+ double EUR(int j) { double val = 0; double EUR_USD=Cl("EURUSD",j); double EUR_GBP=Cl("EURGBP",j); double EUR_CHF=Cl("EURCHF",j); double EUR_JPY=Cl("EURJPY",j); val=(EUR_USD+EUR_GBP+EUR_CHF+EUR_JPY)/4; return(val); } //+------------------------------------------------------------------+ double CHF(int j) { double val = 0; double USD_CHF=-Cl("USDCHF",j); double EUR_CHF=-Cl("EURCHF",j); double GBP_CHF=-Cl("GBPCHF",j); double CHF_JPY=Cl("CHFJPY",j); val=(USD_CHF+EUR_CHF+GBP_CHF+CHF_JPY)/4; return(val); } //+------------------------------------------------------------------+ double JPY(int j) { double val = 0; double USD_JPY=-Cl("USDJPY",j); double EUR_JPY=-Cl("EURJPY",j); double GBP_JPY=-Cl("GBPJPY",j); double CHF_JPY=-Cl("CHFJPY",j); val=(USD_JPY+EUR_JPY+GBP_JPY+CHF_JPY)/4; return(val); } //+------------------------------------------------------------------+ double Cl(string symb,int shift) { double SMA1,SMA2,result,a,b; double k = 100*Vl(symb,0,shift); double point = MarketInfo(symb,MODE_POINT); double digits = MarketInfo(symb,MODE_DIGITS); SMA1=iMA(symb,0,(101-k),0,MODE_LWMA,PRICE_TYPICAL,shift); SMA2=iMA(symb,0,k,0,MODE_LWMA,PRICE_TYPICAL,shift); result=((SMA1-SMA2)/(SMA2+0.000000001))*100; a=50*(MathExp(2*result)-1)/(MathExp(2*result)+1); double norm = (a/point/100); double target=NormalizeDouble(a,digits); return(target); } double Vl(string symb,int tf,int Shi) { double v; //double k = Vol(symb,0,Bar); if(iVolume(symb,0,Shi+1)<iVolume(symb,0,Shi+2)) v= iVolume(symb,0,Shi+1)/(0.0000001 +iVolume(symb,0,Shi+2)); else v= iVolume(symb,0,Shi+2)/(0.0000001 +iVolume(symb,0,Shi+1)); double fff=NormalizeDouble(v,2); return(fff); } //+------------------------------------------------------------------+ //| Comment | //+------------------------------------------------------------------+ // void Message(string m) { Comment(m); if (StringLen(m)>0) Print(m);} //+------------------------------------------------------------------+Виктор! Если я правельно понял, Вы готовы помочь....не могу понять где у меня "нет логики"
Виктор! Если я правельно понял, Вы готовы помочь....не могу понять где у меня "нет логики"
Спасибо Дмитрий за внимание...с уважением отношусь к Вашим знаниям....ну и юмору конечно.
Не смог оценить - не установлен MSoffffffis
Спасибо Дмитрий за внимание...с уважением отношусь к Вашим знаниям....ну и юмору конечно.
Не смог оценить - не установлен MSoffffffis
Знаете ли, а у нас нет проблем. Специально для ВАС в текстовом формате. Архивтор zip, очевидно у вас имеется.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
На самом деле все просто. Появилось желание помочь другим делать оптимальный код, да и самому поучиться у других.
Не секрет, что со временем вырабатываются вполне определенные стереотипы, которые иногда (чаще всего) помогают, а иногда и мешают.
Подготовлю вариант индикатора и попытаюсь объяснить что и почему сделано. Если конечно интересно будет.