大,interesno!
瓦莱拉
好吧,那我就是个无名小卒。
)))前几天告诉过你,我是一个论坛故障,一个幻影,一个fata morgana......
Svinozavr:
嗯,这使我成为一个无名小卒。
)))前几天告诉过你--我是一个论坛故障,一个小说,一个fata morgana...。
但总是在正确的时间出现在正确的地点。这很好!
维克多,是什么激励你做这个壮举?在这个论坛上,这不仅仅是逻辑问题,我们90%的人都没有接触过我们的头脑。
你不害怕在这个沼泽地中陷入困境吗?你要面对的不仅仅是那10%有能力的人...
===
我也加入了祝贺的行列...我甚至要为你干杯,为你无望的冒险的成功干杯......
"独自去医治盲人。
要知道,在怀疑的时候。
"门徒们的幸灾乐祸的嘲弄
还有人群的冷漠"。
// 阿赫玛托娃
Vinin:
这真的很简单。有一种帮助他人做最好的代码的愿望,并向他人学习。
一个人最终会形成相当多的刻板印象,这已经不是什么秘密了,这些刻板印象有时(大多数情况下)会起到帮助作用,有时会起到阻碍作用。
我将准备一个指标的变体,并试图解释所做的事情和原因。当然,如果你有兴趣的话。
//+-------------------------------------------------------------------------+ //| 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
age_nt:
谢谢迪米特里的关注......当然,我尊重你的知识....,还有幽默感。
无法欣赏它--没有安装MSoffffffis。
你知道,我们没有什么问题。特别是对你的文本格式。你显然有拉链。
附加的文件:
logika2.zip
90 kb
这真的很简单。有一种帮助他人做最好的代码的愿望,并向他人学习。
一个人最终会形成相当多的刻板印象,这已经不是什么秘密了,这些刻板印象有时(大多数情况下)会起到帮助作用,有时会起到阻碍作用。
我将准备一个指标的变体,并试图解释所做的事情和原因。当然,如果你有兴趣的话。