Convert Mql4 to pine script
Forums › ProRealTime English forum › ProBuilder support › Convert Mql4 to pine script
- This topic has 3 replies, 3 voices, and was last updated 3 years ago by Nicolas.
Viewing 4 posts - 1 through 4 (of 4 total)
-
-
04/14/2021 at 11:49 AM #167040123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369//+------------------------------------------------------------------+//| CycleIdentifier.mq4 |//| |//+------------------------------------------------------------------+#property copyright ""#property link ""//----#property indicator_separate_window#property indicator_buffers 6//----#property indicator_color1 DarkGray#property indicator_color2 Lime#property indicator_color3 Red#property indicator_color4 DarkGreen#property indicator_color5 Brown//----#property indicator_minimum -1.2#property indicator_maximum 1.2//----extern int PriceActionFilter=1;extern int Length=3;extern int MajorCycleStrength=4;extern bool UseCycleFilter=false;extern int UseFilterSMAorRSI=1;extern int FilterStrengthSMA=12;extern int FilterStrengthRSI=21;//----double LineBuffer[];double MajorCycleBuy[];double MajorCycleSell[];double MinorCycleBuy[];double MinorCycleSell[];double ZL1[];//----double CyclePrice=0.0, Strength =0.0, SweepA=0.0, SweepB=0.0;int Switch=0, Switch2=0, SwitchA=0, SwitchB=0, SwitchC=0, SwitchD=0, SwitchE=0, SwitchAA=0, SwitchBB=0;double Price1BuyA=0.0, Price2BuyA=0.0;int Price1BuyB=1.0, Price2BuyB=1.0;double Price1SellA=0.0, Price2SellA=0.0;int Price1SellB=0.0, Price2SellB=0.0;bool ActiveSwitch=True, BuySwitchA=FALSE, BuySwitchB=FALSE, SellSwitchA=FALSE, SellSwitchB=FALSE;int BuySellFac=01;bool Condition1, Condition2, Condition3, Condition6;//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int init(){SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);SetIndexBuffer(0,LineBuffer);SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3);SetIndexBuffer(1,MajorCycleBuy);SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,3);SetIndexBuffer(2,MajorCycleSell);SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,1);SetIndexBuffer(3,MinorCycleBuy);SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,1);SetIndexBuffer(4,MinorCycleSell);SetIndexStyle(5,DRAW_NONE);SetIndexBuffer(5,ZL1);SetIndexEmptyValue(1,0.0);SetIndexEmptyValue(2,0.0);SetIndexEmptyValue(3,0.0);SetIndexEmptyValue(4,0.0);SetIndexEmptyValue(5,0.0);return(0);}//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int deinit() {return(0);}//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start(){int counted_bars=IndicatorCounted();if(counted_bars<0) return(-1);// if(counted_bars>0) counted_bars--;// int position=Bars-1;int position=Bars-counted_bars;if (position<0) position=0;//----int rnglength=250;double range=0.0, srange=0.0;for(int pos=position; pos >=0; pos--){srange=0.0;int j=0;for(int i=0;i<rnglength;i++){j++;int posr=pos + i;if (posr>=Bars)break;srange=srange + (High[posr] - Low[posr]);}range=srange/j * Length;int BarNumber=Bars-pos; //??????????if (BarNumber < 0)BarNumber=0;CyclePrice=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos);if (UseFilterSMAorRSI==1)ZL1[pos]=ZeroLag(CyclePrice,FilterStrengthSMA, pos);if (UseFilterSMAorRSI==2)ZL1[pos]=ZeroLag( iRSI(NULL, 0, 14, CyclePrice, FilterStrengthRSI ), FilterStrengthRSI, pos);if (ZL1[pos] > ZL1[pos+1])SwitchC=1;if (ZL1[pos] < ZL1[pos+1])SwitchC=2;if (BarNumber<=1){if (Strength==0)SweepA =range;elseSweepA=Strength;Price1BuyA =CyclePrice;Price1SellA =CyclePrice;}/* ***************************************************************** */if (BarNumber > 1){if (Switch > -1){if (CyclePrice < Price1BuyA){if (UseCycleFilter && (SwitchC==2) && BuySwitchA ){MinorCycleBuy[pos + BarNumber - Price1BuyB]=0; //MinorBuySellLineBuffer[pos + BarNumber - Price1BuyB ]=0; //line}if (!UseCycleFilter && BuySwitchA){MinorCycleBuy[pos +BarNumber - Price1BuyB]=0;LineBuffer[pos +BarNumber - Price1BuyB]=0;}Price1BuyA=CyclePrice;Price1BuyB=BarNumber;BuySwitchA=TRUE;}else if (CyclePrice > Price1BuyA){SwitchA=BarNumber - Price1BuyB;if (!UseCycleFilter){MinorCycleBuy[pos +SwitchA]=-1;//MinorBuySell - DarkGreenLineBuffer[pos +SwitchA]=-1;//line}if (UseCycleFilter && SwitchC ==1){MinorCycleBuy[pos +SwitchA]=-1; //MinorBuySellLineBuffer[pos +SwitchA]=-1; //lineSwitchD=1;}else{SwitchD=0;}BuySwitchA=TRUE;double cyclePrice1=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);if (ActiveSwitch){Condition1=CyclePrice - cyclePrice1>=SweepA;}else{Condition1=CyclePrice>=cyclePrice1 * (1 + SweepA/1000);}if (Condition1 && SwitchA>=BuySellFac){Switch= - 1;Price1SellA=CyclePrice;Price1SellB=BarNumber;SellSwitchA=FALSE;BuySwitchA=FALSE;}}}if(Switch < 1){if (CyclePrice > Price1SellA){if (UseCycleFilter && SwitchC==1 && SellSwitchA ){MinorCycleSell[pos +BarNumber - Price1SellB]=0; //MinorBuySellLineBuffer[pos +BarNumber - Price1SellB ]=0; //line}if (!UseCycleFilter && SellSwitchA ){MinorCycleSell[pos +BarNumber - Price1SellB]=0;//MinorBuySellLineBuffer[pos +BarNumber - Price1SellB]=0;//line}Price1SellA=CyclePrice;Price1SellB=BarNumber;SellSwitchA=TRUE;}else if (CyclePrice < Price1SellA){SwitchA=BarNumber - Price1SellB;if (!UseCycleFilter){MinorCycleSell[pos +SwitchA]=1; // MinorBuySell darkRedLineBuffer[pos +SwitchA]=1; //"CycleLine"}if (UseCycleFilter && (SwitchC==2)){MinorCycleSell[pos +SwitchA]=1;//MinorBuySell darkRedLineBuffer[pos +SwitchA]=1;//CycleLineSwitchD =2;}elseSwitchD =0;SellSwitchA=TRUE;double cyclePrice2=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);if (ActiveSwitch)Condition1=(cyclePrice2 - CyclePrice)>=SweepA;elseCondition1=CyclePrice<=(cyclePrice2 * (1 - SweepA/1000));if (Condition1 && SwitchA>=BuySellFac){Switch=1;Price1BuyA=CyclePrice;Price1BuyB=BarNumber;SellSwitchA=FALSE;BuySwitchA=FALSE;}}}}LineBuffer[pos]=0;MinorCycleBuy[pos]=0;MinorCycleSell[pos]=0;//----if (BarNumber==1){if (Strength==0)SweepB =range * MajorCycleStrength;elseSweepB=Strength * MajorCycleStrength;Price2BuyA=CyclePrice;Price2SellA=CyclePrice;}if (BarNumber > 1){if (Switch2 > - 1){if (CyclePrice < Price2BuyA){if (UseCycleFilter && SwitchC==2 && BuySwitchB ){MajorCycleBuy [pos +BarNumber - Price2BuyB]=0; //MajorBuySell,green// LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line -----}if (!UseCycleFilter && BuySwitchB ){MajorCycleBuy [pos +BarNumber - Price2BuyB]=0;//MajorBuySell,green// LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line-----------}Price2BuyA=CyclePrice;Price2BuyB=BarNumber;BuySwitchB=TRUE;}else if (CyclePrice > Price2BuyA){SwitchB=BarNumber - Price2BuyB;if (!UseCycleFilter){MajorCycleBuy [pos +SwitchB]=-1; //MajorBuySell green// LineBuffer[pos + SwitchB] = -1; //line--------------}if (UseCycleFilter && SwitchC ==1){MajorCycleBuy [pos +SwitchB]=-1; //MajorBuySell green// LineBuffer[pos + SwitchB] = -1; //line-----------------SwitchE =1;}elseSwitchE =0;BuySwitchB=TRUE;double cyclePrice3=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);if (ActiveSwitch)Condition6=CyclePrice - cyclePrice3>=SweepB;elseCondition6=CyclePrice>=cyclePrice3 * (1 + SweepB/1000);if (Condition6 && SwitchB>=BuySellFac){Switch2= - 1;Price2SellA=CyclePrice;Price2SellB=BarNumber;SellSwitchB=FALSE;BuySwitchB=FALSE;}}}if (Switch2 < 1){if (CyclePrice > Price2SellA ){if (UseCycleFilter && SwitchC ==1 && SellSwitchB ){MajorCycleSell [pos +BarNumber - Price2SellB]=0; //"MajorBuySell",red// LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----}if (!UseCycleFilter && SellSwitchB ){MajorCycleSell [pos +BarNumber - Price2SellB]=0;//"MajorBuySell",red// LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----}Price2SellA=CyclePrice;Price2SellB=BarNumber;SellSwitchB=TRUE;}else if (CyclePrice < Price2SellA){SwitchB=BarNumber - Price2SellB ;if (!UseCycleFilter){MajorCycleSell[pos + SwitchB]=1; //"MajorBuySell",red// LineBuffer[pos + SwitchB ] = 1; //line -----}if (UseCycleFilter && SwitchC ==2){MajorCycleSell [pos + SwitchB]=1; //"MajorBuySell",red// LineBuffer[pos + SwitchB ] = 1; //line -----SwitchE =2;}elseSwitchE =0;SellSwitchB=TRUE;double cyclePrice4=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);if (ActiveSwitch)Condition6=cyclePrice4 - CyclePrice>=SweepB;elseCondition6=CyclePrice<=cyclePrice4 * (1.0 - SweepB/1000.0);if (Condition6 && SwitchB>=BuySellFac){Switch2=1;Price2BuyA=CyclePrice;Price2BuyB=BarNumber;SellSwitchB=FALSE;BuySwitchB=FALSE;}}}}LineBuffer[pos]=0;MajorCycleSell[pos]=0;MajorCycleBuy[pos]=0;}return(0);}//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double ZeroLag(double price, int length, int pos){if (length < 3){return(price);}double aa=MathExp(-1.414*3.14159/length);double bb=2*aa*MathCos(1.414*180/length);double CB=bb;double CC=-aa*aa;double CA=1 - CB - CC;double CD=CA*price + CB*ZL1[pos+1] + CC*ZL1[pos+2];return(CD);}//+------------------------------------------------------------------+04/14/2021 at 11:50 AM #16704204/14/2021 at 11:59 AM #167048
If you rename doctor_finder.sql to doctor_finder.xyz you should be able to attach it.
04/14/2021 at 5:06 PM #167074Sorry but we do not offer free assistance for other trading than prorealtime. If you want a conversion as a paid job, please contact the programming services: https://www.prorealcode.com/trading-programming-services/
-
AuthorPosts
Viewing 4 posts - 1 through 4 (of 4 total)
Find exclusive trading pro-tools on
Similar topics: