// function that creates and returns an image cv::Mat function() { // create image cv::Mat ima(240,320,CV_8U,cv::Scalar(100)); // return it return ima; }
char* CoronaSwingPosition (char* timeframe) { static char timeframee[1000]; strncpy(timeframee, timeframe, 1000); TimeFrame=atoi(timeframee); // Put your indicator C++ code here int limit, y, i, shift, n, cnt_bars=1000; //IndicatorCounted(); arrayofdoubles price, mDomCyc, DC, SmoothHP, HP, mPsn, Lead60, BP2; price.assign(0); mDomCyc.assign(0); DC.assign(0); SmoothHP.assign(0); HP.assign(0); mPsn.assign(0); Lead60.assign(0); BP2.assign(0); double dB; double Width; double pi = 4 * atan(1); //win = WindowFind(short_name); //if(TimeFrame!=Period()) int mBars = iBars(NULL,TimeFrame); else mBars = Bars; int mBars = 666; //chartbars[displayedfile]; /* if(mBars != pBars) { ArrayResize(price,mBars); ArrayResize(mDomCyc,mBars); ArrayResize(DC,mBars); ArrayResize(SmoothHP,mBars); ArrayResize(HP,mBars); ArrayResize(mPsn,mBars); ArrayResize(Lead60,mBars); ArrayResize(BP2,mBars); if(Price > 6 && Price <= 10) { ArrayResize(haClose,mBars); ArrayResize(haOpen,mBars); ArrayResize(haHigh,mBars); ArrayResize(haLow,mBars); } pBars = mBars; } */ pBars = mBars; if(cnt_bars<1) { //for(i=bars-1;i>0;i--) CoronaSwingPositionbuffer[i]=0; for(i=666-1;i>0;i--) CoronaSwingPositionbuffer[i]=0; mcnt_bars = 0; } CoronaSwingPositionbuffer.assign(0); //---- if(mcnt_bars > 0) mcnt_bars--; //for(y=mcnt_bars+1;y<mBars;y++) for(y=0;y<mBars;y++) { if(Price <= 6) price[y] = ima(TimeFrame,1,0,0,Price,mBars-y-1); else if(Price > 6 && Price <= 10) price[y] = HeikenAshi(TimeFrame,Price-7,mBars-y-1); double alpha1 = (1 - sin(2*pi/30)) / cos(2*pi/30); HP[y] = 0.5*(1 + alpha1)*(price[y] - price[y-1]) + alpha1*HP[y-1]; SmoothHP[y] = (HP[y] + 2.0*HP[y-1] + 3.0*HP[y-2] + 3.0*HP[y-3] + 2.0*HP[y-4] + HP[y-5]) / 12.0; if(y < 6) SmoothHP[y] = price[y] - price[y-1]; if(y == 0) SmoothHP[y] = 0; double delta = -0.015*(y+1) + 0.5; if(delta < 0.1) delta = 0.1; if(y > 11) { if(itimeb(TimeFrame,mBars-y-1) != pTime) { for(n = 11; n<= 59; n++) { OlderI[n] = OldI[n]; OldI[n] = I[n]; OlderQ[n] = OldQ[n]; OldQ[n] = Q[n]; OlderReal[n] = OldReal[n]; OldReal[n] = Real[n]; OlderImag[n] = OldImag[n]; OldImag[n] = Imag[n]; OldDB[n] = DB[n]; } pTime = itimeb(TimeFrame,mBars-y-1); } for(n = 11; n<= 59; n++) { double beta = cos(4*pi/(n+1)); double gamma = 1.0/cos(8*pi*delta/(n+1)); double alpha = gamma - sqrt(gamma*gamma - 1); Q[n] = ((n+1)/4/pi)*(SmoothHP[y] - SmoothHP[y-1]); I[n] = SmoothHP[y]; Real[n] = 0.5*(1 - alpha)*(I[n] - OlderI[n]) + beta*(1 + alpha)*OldReal[n] - alpha*OlderReal[n]; Imag[n] = 0.5*(1 - alpha)*(Q[n] - OlderQ[n]) + beta*(1 + alpha)*OldImag[n] - alpha*OlderImag[n]; Ampl[n] = (Real[n]*Real[n] + Imag[n]*Imag[n]); } MaxAmpl = Ampl[11]; for(n = 11; n<= 59; n++) if(Ampl[n] > MaxAmpl) {MaxAmpl = Ampl[n]; int nmax = n;} for(n = 11; n<= 59; n++) { if(MaxAmpl != 0) if (Ampl[n] / MaxAmpl > 0) dB = -10.0*log(0.01/(1 - 0.99*Ampl[n]/MaxAmpl))/log(10.0); DB[n] = 0.33*dB + 0.67*OldDB[n]; if(DB[n] > 20) DB[n] = 20; } double Num = 0; double Denom = 0; for(n = 11; n<= 59; n++) { if(DB[n] <= 6) { Num = Num + (n+1)*(20 - DB[n]); Denom = Denom + (20 - DB[n]); } if(Denom != 0) DC[y] = 0.5*Num / Denom; else DC[y] = DC[y-1]; } mDomCyc[y] = Median(DC, 5, y); if(mDomCyc[y] < 6) mDomCyc[y] = 6; double delta2 = 0.1; double beta2 = cos(2*pi/mDomCyc[y]); double gamma2 = 1.0/cos(4*pi*delta2/mDomCyc[y]); double alpha2 = gamma2 - sqrt(gamma2*gamma2 - 1); BP2[y] = 0.5*(1 - alpha2)*(price[y] - price[y-2]) + beta2*(1 + alpha2)*BP2[y-1] - alpha2*BP2[y-2]; double Q2 = (mDomCyc[y]/2/pi)*(BP2[y] - BP2[y-1]); Lead60[y] = 0.5*BP2[y] + 0.866*Q2; double HL = Lead60[y]; double LL = Lead60[y]; for (i = 0; i<=50; i++) { if(Lead60[y-i] > HL) HL = Lead60[y-i]; if(Lead60[y-i] < LL) LL = Lead60[y-i]; } if((HL - LL) != 0) mPsn[y] = (Lead60[y] - LL)/(HL - LL); HL = mPsn[y]; LL = mPsn[y]; for (i = 0; i<=20; i++) { if(mPsn[y-i] > HL) HL = mPsn[y-i]; if(mPsn[y-i] < LL) LL = mPsn[y-i]; } if((HL - LL) > 0.85) Width = 0.01; else Width = 0.15*(HL - LL); for(n = 1; n<= 50; n++) { Raster[n] = 20; if(n < round(50*mPsn[y]) && Width > 0) Raster[n] = 0.5*(pow(( 20*mPsn[y] - 0.4*n)/Width,0.95) + 0.5*OldRaster[n]); if(n > round(50*mPsn[y]) && Width > 0) Raster[n] = 0.5*(pow((-20*mPsn[y] + 0.4*n)/Width,0.95) + 0.5*OldRaster[n]); if(n == round(50*mPsn[y])) Raster[n] = 0.5*OldRaster[n]; if(Raster[n] < 0) Raster[n] = 0; if(Raster[n] > 20) Raster[n] = 20; if((HL - LL) > 0.8) Raster[n] = 20; OldRaster[n] = Raster[n]; } } //if(TimeFrame == Period() && VisualMode != 2) Psn[mBars-y-1] = 10*mPsn[y] - 5; CoronaSwingPositionbuffer[mBars-y-1] = 10*mPsn[y] - 5; /* if(VisualMode != 1 && ((CoronaBars > 0 && y > mBars - CoronaBars)||(CoronaBars == 0 && y > draw_begin))) for(n = 1; n<= 50; n++) { if(Raster[n] <= 10) { int Color1 = LineR + Raster[n]*(FuzzR - LineR) / 10.0; int Color2 = LineG + Raster[n]*(FuzzG - LineG) / 10.0; int Color3 = LineB + Raster[n]*(FuzzB - LineB) / 10.0; } else if(Raster[n] > 10) { Color1 = FuzzR*(2 - Raster[n] / 10.0); Color2 = FuzzG*(2 - Raster[n] / 10.0); Color3 = FuzzB*(2 - Raster[n] / 10.0); } Plot(TimeFrame,FuzzWidth*n - 5 - 0.5*FuzzWidth,win+"CSP"+n+"_"+y, RGB(Color1, Color2, Color3),FuzzWidth,mBars-y-1); } */ mcnt_bars = mBars-1; } /* if(TimeFrame > Period() && VisualMode != 2) { if(cnt_bars>0) cnt_bars--; limit = bars-cnt_bars+TimeFrame/Period()-1; for(shift=0,y=0;shift<limit;shift++) { if (Time[shift] < iTime(NULL,TimeFrame,y)) y++; CoronaSwingPositionbuffer[shift] = 10* mPsn[mBars-y-1] - 5; } } */ //---------- //WindowRedraw(); return(0); }
//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ char* MA_Chanels_FiboEnv_Mid (char* period, char* curtf) { static char periodd[1000]; strncpy(periodd, period, 1000); int intperiod=atoi(periodd); static char curtff[1000]; strncpy(curtff, curtf, 1000); int intcurtf=atoi(curtff); int BarsCount = 400; int MAPeriod=55; int MAMethod=MODE_SMA; int MAPrice=4; int MAShift=0; int i; double max =0; double min =0; double Inc1 = 0.0000; double Inc2 = 0.0000; double Inc3 = 0.0000; double Inc4 = 0.0000; int ____; int Note; int ______; int priceClose_0__priceOpen_1; int priceHigh_2__priceLow_3; int priceMedian_4__priceTypical_5; int priceWeightedclose_6; int _______; int MA_Method; int SMA_0_EMA1_SMMA2_LWMA3; max =0; min =0; for (i =BarsCount; i>=0; i--) { double m = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i); double top = higha[i] - m; if (top > max) max = top; double bottom = lowa[i] - m; if (bottom < min) min = bottom; } if (fabs(max) > fabs(min)) Inc4 = max; else Inc4 = min; Inc1 = (max-min)*0.118; Inc2 = (max-min)*0.264; Inc3 = (max-min)*0.5; for (i =BarsCount; i>=0; i--) { MA_Chanels_FiboEnv_Midbuffer1[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) + Inc3; MA_Chanels_FiboEnv_Midbuffer2[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) + Inc2 ; MA_Chanels_FiboEnv_Midbuffer3[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) + Inc1 ; MA_Chanels_FiboEnv_Midbuffer4[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i); MA_Chanels_FiboEnv_Midbuffer5[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) - Inc1; MA_Chanels_FiboEnv_Midbuffer6[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) - Inc2; MA_Chanels_FiboEnv_Midbuffer7[i] = ima(intcurtf,MAPeriod,0,MAMethod,MAPrice,i) - Inc3; } return(0); }