From a70da4fc29eb923674886c94081392cc8665aeb8 Mon Sep 17 00:00:00 2001 From: "Nkondog A. Venceslas" Date: Mon, 28 Nov 2022 16:27:15 +0100 Subject: [PATCH] Create symbolic link to all MT platform for easy manipulation --- MQL4/{ => Experts/Nkanven}/LotCal.ex4 | Bin MQL4/{ => Experts/Nkanven}/LotCal.mq4 | 0 .../{ => Experts/Nkanven}/LotCalTrader-V2.ex4 | Bin MQL4/Experts/Nkanven/LotCalTrader.ex4 | Bin 0 -> 13616 bytes MQL4/{ => Experts/Nkanven}/LotCalTrader.mq4 | 0 .../Nkanven/MuzzlingAlligatorWatcher.mq4 | 126 ++++++++++ MQL4/{ => Experts/Nkanven}/NewCandleAlert.ex4 | Bin MQL4/{ => Experts/Nkanven}/NewCandleAlert.mq4 | 0 MQL4/Experts/Nkanven/Telegram2MT4.ex4 | Bin 0 -> 15516 bytes MQL4/Experts/Nkanven/Telegram2MT4.mq4 | 236 ++++++++++++++++++ MQL4/Include/Nkanven/Lib/Navlib.mqh | 71 ++++++ 11 files changed, 433 insertions(+) rename MQL4/{ => Experts/Nkanven}/LotCal.ex4 (100%) rename MQL4/{ => Experts/Nkanven}/LotCal.mq4 (100%) rename MQL4/{ => Experts/Nkanven}/LotCalTrader-V2.ex4 (100%) create mode 100644 MQL4/Experts/Nkanven/LotCalTrader.ex4 rename MQL4/{ => Experts/Nkanven}/LotCalTrader.mq4 (100%) create mode 100644 MQL4/Experts/Nkanven/MuzzlingAlligatorWatcher.mq4 rename MQL4/{ => Experts/Nkanven}/NewCandleAlert.ex4 (100%) rename MQL4/{ => Experts/Nkanven}/NewCandleAlert.mq4 (100%) create mode 100644 MQL4/Experts/Nkanven/Telegram2MT4.ex4 create mode 100644 MQL4/Experts/Nkanven/Telegram2MT4.mq4 create mode 100644 MQL4/Include/Nkanven/Lib/Navlib.mqh diff --git a/MQL4/LotCal.ex4 b/MQL4/Experts/Nkanven/LotCal.ex4 similarity index 100% rename from MQL4/LotCal.ex4 rename to MQL4/Experts/Nkanven/LotCal.ex4 diff --git a/MQL4/LotCal.mq4 b/MQL4/Experts/Nkanven/LotCal.mq4 similarity index 100% rename from MQL4/LotCal.mq4 rename to MQL4/Experts/Nkanven/LotCal.mq4 diff --git a/MQL4/LotCalTrader-V2.ex4 b/MQL4/Experts/Nkanven/LotCalTrader-V2.ex4 similarity index 100% rename from MQL4/LotCalTrader-V2.ex4 rename to MQL4/Experts/Nkanven/LotCalTrader-V2.ex4 diff --git a/MQL4/Experts/Nkanven/LotCalTrader.ex4 b/MQL4/Experts/Nkanven/LotCalTrader.ex4 new file mode 100644 index 0000000000000000000000000000000000000000..a27a50ed99cf4033efb1950b6b42542c97119ffb GIT binary patch literal 13616 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 +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +input string Comment_0="=========="; //Alligator parameters +input ENUM_TIMEFRAMES inpTimeframe = PERIOD_CURRENT; //Timeframe +input int inpJawsPeriod = 13; //Jaws period +input int inpJawsShift = 8; //Jaws shift +input int inpTeethPeriod = 8; //Teeth period +input int inpTeethShift = 5; //Teeth shift +input int inpLipsPeriod = 5; //Lips period +input int inpLipsShift = 3; //Lips shift +input ENUM_MA_METHOD inpMethod = MODE_SMMA; //Method +input ENUM_APPLIED_PRICE inpApplyedTo = PRICE_MEDIAN; //Applied to + +input string Comment_1="=========="; //Moving average parameters +input ENUM_MA_METHOD inpMAMethod = MODE_SMA; //MA method +input int inpMAPeriod = 200; //MA period +input int inpMASHift = 0; //MA shift +input ENUM_APPLIED_PRICE inpMAApplyedTo = PRICE_CLOSE; //MA applied to + +double jaws, teeth, lips, sma, prevCandleHigh, prevCandleLow, currentPrice, candleClose; +string comm = ""; + +int OnInit() + { +//--- + +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//--- + if(!newCandle()) + return; + + jaws=iAlligator(NULL,0,inpJawsPeriod,inpJawsShift,inpTeethPeriod,inpTeethShift,inpLipsPeriod,inpLipsShift,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,0); + teeth=iAlligator(NULL,0,inpJawsPeriod,inpJawsShift,inpTeethPeriod,inpTeethShift,inpLipsPeriod,inpLipsShift,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,0); + lips=iAlligator(NULL,0,inpJawsPeriod,inpJawsShift,inpTeethPeriod,inpTeethShift,inpLipsPeriod,inpLipsShift,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,0); + + sma = iMA(NULL,0,inpMAPeriod,inpMASHift,inpMAMethod,inpMAApplyedTo,1); + Print(" Jaws ", jaws, " teeth ", teeth, " lips ", lips, " sma ", sma); + + //Get previous candle + prevCandleHigh = iHigh(NULL, PERIOD_CURRENT, 1); + prevCandleLow = iLow(NULL, PERIOD_CURRENT, 1); + currentPrice = iClose(NULL, PERIOD_CURRENT, 0); + candleClose = iLow(NULL, PERIOD_CURRENT, 0); + +//comm = "jaws " + (string)jaws + " teeth " + (string)teeth + " lips " + (string)lips + " sma " + (string)sma; + comm = "Trade alert on " + Symbol(); + comm += "\n"; + comm += ""; + + if(sma < currentPrice) + { + //Alert for bullish continuation signal + if(prevCandleHigh > jaws && prevCandleHigh > teeth && prevCandleHigh > lips) + { + if(prevCandleLow < jaws || prevCandleLow < teeth ||prevCandleLow < lips) + { + comm += "LONG CONTINUATION SIGNAL: Price above SMA just moves above Alligator. \n"; + Notify(comm); + } + } + + //Alert for bearish counter trend signal + if(lips > teeth && teeth > jaws) + { + + if(candleClose < lips && candleClose < teeth && candleClose < jaws) + { + comm += " SHORT COUNTER TREND SIGNAL: Price above SMA moves below Alligator in a trending market \n"; + Notify(comm); + } + } + } + + + if(sma > currentPrice) + { + //Alert for bearish continuation signal + if(prevCandleLow < jaws && prevCandleLow < teeth && prevCandleLow < lips) + { + if(prevCandleHigh > jaws || prevCandleHigh > teeth ||prevCandleHigh > lips) + { + comm += " SHORT CONTINUATION SIGNAL: Price below SMA just moves below Alligator. \n"; + Notify(comm); + } + } + + //Alert for bearish counter trend signal + if(lips < teeth && teeth < jaws) + { + + if(candleClose > lips && candleClose > teeth && candleClose > jaws) + { + comm += " LONG COUNTER TREND SIGNAL: Price below SMA just closes above Alligator in a down trending market \n"; + Notify(comm); + } + } + } + } +//+------------------------------------------------------------------+ diff --git a/MQL4/NewCandleAlert.ex4 b/MQL4/Experts/Nkanven/NewCandleAlert.ex4 similarity index 100% rename from MQL4/NewCandleAlert.ex4 rename to MQL4/Experts/Nkanven/NewCandleAlert.ex4 diff --git a/MQL4/NewCandleAlert.mq4 b/MQL4/Experts/Nkanven/NewCandleAlert.mq4 similarity index 100% rename from MQL4/NewCandleAlert.mq4 rename to MQL4/Experts/Nkanven/NewCandleAlert.mq4 diff --git a/MQL4/Experts/Nkanven/Telegram2MT4.ex4 b/MQL4/Experts/Nkanven/Telegram2MT4.ex4 new file mode 100644 index 0000000000000000000000000000000000000000..9388b48a5d56b6cd52b32ef1a49fe92bc2fa1647 GIT binary patch literal 15516 zcmdUUQ;;S=v*p*eZQJgiwr$(CZBN^_ZJX1cwr$(ox&J=g8ym4N`?i%)r%q;7MdZn< zrz%kmI$#HYJ`?~E000mI0EeLe#{bcF4~qP-R|1!#|5i+g8Gp9_kE#Dq_i933Q~)zeuJB5-_(B2r%*IafqKILJ*~UvEC%V{R5wA(2WA8wVry?qXNJHc71UMAks27~BO0ve`rnt55cp--;5+&p;yukrWF@ z9u(|QsB!wRj*f*jzK6}HQ)}DqdK>=T*b?dt%P$g0gGC2Psw@!us`|vA& zGI;!0Kn{5072G2Mo2Y@`aE=Y+F+-AHCTh6lesMdVMkLz>iSTIvIlx05@YTGEtgtqQ z`hJs6RGoy6i<}VwdN0TYKb$Cw7#I04+L2yRcG)ak=sUMY1gd z6$pUG1{RMo@dW2SMIGd2<-s6RjGTbe$e#L?^KX8k)QBPDRHGIIf)hCMLL(7dHzmr( z?DAhCMol@U9cC@BHb_cu+Pt~+#q=Q2M)P6Ky_(N_mJULW$HfekigQi-s0UFC_jKwR5UT_ZguB5JVUU&G0qLU%vpvPGY2%EeyB+Lg_!~EmP5iW>6GiqUx04qhdeQc9Xk^}$F zLA|v;nmoR%FJO>d@vOAm#^X1(fS>Tz(RLo@+mbtQp0(E|w`#l@rL(Z;`lPYIdd5?q zraWAz!$-tp^KV?H*c7^|8u9KRU5b?E`o~k*-fE^-fMgD<;8QGb023*;K`>GQxLhbY|kPH;qnwrs~k4`CeX$gny#{0 z3Yf;c3O>X3-p$nzp+tdy&g%=WjUS;|GJhlmGs90*`Tf{fq)5Rtp)?=O|d>wKLf7UFmCY7 z-GaA~bJwK#`;BF7m%!*|R&9bgwWwKFPC9y-yVbulNPl6qk3h+Ns^2|jZNC8v*Qnnc z4K1{Hf^YzbBktc1B9}NgOUCDt+RyrXsrI`i=r1!il7S`FZO>vf`MuygxE<2cJT_#L zvJhjJ0jCuKO`;H?^ikEBKBTxW0VO$?v;l5?BiD=dKErzOQgbNk7@umh$IOJWs)^ljFh($?w@L<<6y z){iqNSHr4_@S+fvQI2dG97FSC!^Uc`@68}s1N@NWW&G9#^2n;tJN$8?KLgmYn_Z_M z6t48(`NOlt!YGvQN9HV}9HpR!Q7`DGOppDSf5{qzqL|O1HLs(`xF#nGe-yfDnVGZ; zU);*c=dn;ivPOR~^u%<(Y8(8KxEW`y3aV6u#hCxmI0j*|oSG1ZPy0gjC-x$ds4~-g z_RG}qTH3?T|6EO?Q$>W`)8|c$)KGZWaAg%bEk7%Hw-sv?xf3~@O|vjtM~mMDOJ^W+ zyj8%8?77{*QVac6nO(!&r9Z>Xv1$A{=kxohZ0dXR)_+-!)J86qo*w^Z=`&|_2I%I9 zb}~$ol8!3TKZ2iM!9K^WKkYpD5=cDdV_2r9!ofH4WcVS-!HKxO=e5^q?+^{-gy&9k zcIzQ`QyZe}g&6+rQaFt>bsbIB^n1%_pCV~M|9)iQ9!m7AI|9f=(0XocHQM0?B5N#~ zBWa>ilNubGjug3>4b~Fj+KPJz7}Eouo7oJL{%XYeaD@I5YjcnOBqe!evmfDSyKs;z z&hA3`LLt#V@!V1-je(GN!2;Yi$5MWKI?#3ZLY@uks31HlP(uU~b;h0oTf z2FDjiz^BAm1g^{SWiVQNVrHmlP}BWujvHhR5_;B+C?dID|0ubN!6uc+2jTCWRkV74YJ_e6ZlCZ1o5d&){?S@+%0fmzXUO+EOTA0MWZApKC>K1 zl^BMicv^<0W2m=(1%5ENK{M1xYQih!WEDl~ z4gQ3_-Iwo4Uu?iD&@&o5((?J8ck<1)iyy(ctl^|lk0+mOBA4qIU2*2#pzxT#DEm;k z4^$=t*;Q^24l`o;y2VPUSfnd8%lTd$=DI*hAbRn}21G}={=q>cukkLRN>whwDRfL4 z?;%IWe<@Vg@R&!U>6baGjMRw&x#Uq%>Sh`YmT=z(cauY{k@)PB>3qwHmeC;^^EDWS z9J~|6Y`G5cz_o{_gDb12U%n!T7}r~MUc(BoT@G8x-;#wow|eGa(mkT_p3OP^c6_ln z5>#{Puhw%Tl8E=wu2vM! zLb}r%H`h*;mCI@U?(C&d)Hgf=Rkj2)53M&+?KL-;ar`n@(C^f>D7O+?3=LHS&gK%h zUlvBLuvai%q~iWAmkB;-=ZT;vqtHF2MqsX*52|!UYqquxIm~^yd9QE-olH*A*aa|J zJ-2#+O%{D`J$Txp(Q>7N7m(dFP1$?8U$}Oy87a4pcDUhD#o+Yvm&QI1TCFeP=I5~v z-jN}l3qY`_{Sv16W!T!9j)d=@V|z9;8%)hFk0Kn+eUpsYjN!gO0K`qR1bvt;cPS++ z1xRv;><=Sd>Nz5GYnrYs4hxxXIt8tXafI=I3Cm1dz}L`}Q2t<%>^-(Qd|V8DeK4Ap z)2H7iEZtl3^mCJx%M>KI7=mU6y3VeW&v)upbbgTf~4|psa{wK%~}CNDc-^o zJv2lUmPEb6G^J!2AP~ChPguLT&H;&00wy6dh&U}MR2tqnDF+^`#}J!zGAOB;7qxOC zTOhaMM=_ADAr6v{{Z&3%VY}ns+UH4;>=;boKu$$^Aib$qPVLD-o~46O9GA)afIK(_ zi2K7OWKbbPW)m!g4va+_rBk5@qqnP`ar;d`ueOGRs7azq{<)(Qpdk^iwy~9CZ8G-O z<88(UMX7L31TfG3;iu4{tsNNXeCCzkbnwMj+g<*XbxPo)Hx)l08c47Or`S6n{lM1# zclC+I{iR4Qo{L6As*ugQS^h+pB>o1x`17}S@z(g+E>k=N9 zw%4WG)ZJNft%NX%Q~Tb0!ka8ast>^-bK@>3dvZ8Qry0Tgs~{Y}M#-fzPo*VTFrcu7#@#jpKw1GYrar~q#rf2wi9pBI_s(;g9i2$)b_IoAe zY4K3XRq5t4eKd?kc`LW8MI^iOBjiPvpUW8iiKuI(l@6kdreu>mchE!j9((jF$6Xm9FivZ;A*;U%Li& zCpRl5$-QG1Rctp8FoWw0ToX2vS|)~Nt93L|q!My;m)BhP&AASqbb5NfMIjM<^Q_P` zMK0H61|@N;?DkHcY~rmh`R2{UYq6?il?|nhzL8Ak!phsHNdS|p} zMaA;6Y+Y2+3?L0Ofbfj#e*V$5h9bhN#-t&P1rAZ;wA)~5Iqfd6M$!KBY|_o2^n>a^ zWm!#GY*dP2Q(8)b@V9u$CqB8HZtfMN;+#!>ZW&h{Um9}{)$7p2z^Mb#=7L12>N}6~ zHCl#fGUJDM_aC3PrxtB>JUR5NdRW`o&*?!0YK}ab7Kmu)TmQ*Zr@Vv3*a`E3HN7x! zirQ)&b?6g*r|!-R-rH8$s3n&lQX|+lfY^hOv@PbU{_Z-V>cee;gELp@Xz+9yZ$oJp z-D(f{Tz2SvC3_kb1_?&s`%K4IgvVyAd+KIvg>(t%CLxAbGEtaTYxCxa61WQx8|+A3 zM}SmHLbElmVZJt0??s=yca@{yM8Z;dVG**h$_Xpp2 z0q~tYY1$=6#&--D03QpAN=_$fs(Ku`1ft&q3)n`tTH6fY90p_#ERP|Eg zbO0koz)TTpH@6?`@3_C;54kGWFHE$pUuI)q5kg&e?? zNMIR8qAKM$7He&availmWX-`5hx@mIp8LP;m&!$dr!$O(#PqD(sJQKjX~$JQQf@p@qD`d(wSd7afi+FKb2Y1 z_ejnWL;T=5WZz`f;5?~QEoDAIeo*sJQn%A-iU*h^R8Pt9UKXQJ&(ZD#@_-9QudFE^ zlh9)KV)l^T>&1bZbo|Oj+2Ie07RkxM-JgZE@g-Z^#w4i?pIHBO0GR|zjlEW-Lr+No zG_g&JW^gHc|E}{aUk{6`<=DNXdC>g+@h(KI3EE|#LTpHAU0Kc*h(7bql(`OM4M026 zsDYndKU8c_uW!rysA3(vOWSHm)TJmpJ#e#=ZAm|1y3~-r?3jX0Epk8F@(DabE|j1qe&mZF_I%mlHHTJ_ z&_nJ4mTMT+Bolf>dgl-|_XHbQI_VVB(VF$@?5A9;kP5NTWGvknl0r^0n51M+%*o`i@xKP$xX> z_|+?Sns`qQU6;XyPtC;3?_$ZP?_uxZkW>rrhI;AoZk*Sf* zz$Q135Xuwh z^yAkgbrA#mg@;XVMW1pw;)U{&8*TBNDg7p+d9T}B zs)%OJIVcJP!lj>*L4wuOI-Qlqh5Iip4pA>HmskyR<||OdCXs;6=XJ) z9Mk_ooXge#mrRY+%~(#jBxIR2xyQNCMxw>b6Y*qGvHtp;GYgZlrPP#^)}r%!HO@5R zfAwNqpeetO-(u+~4pEIx4BeMqSkW*~0cKdfeTWj18z!FCp7bg)s88<(!sRSA%<8VW zmwg(H29bWm_h~D#x8^^vqoSO~T3H@@=uWHL{4DFbF8il4awc|iBZbDoeFbt{t-7Y$ z9&u?A2;ilvn{TtV==r0`?j>jf3tnQFE$iFpU`Ncv>^l1D7V0R;H@u4v-onYEu5q8V z4t|zAw)|nlXxGX!v!bPPb&w$H2z{E+dm3D!KEkf|WdH*lT@lPVS&%a7Ta?A34Kn$k zQdfjpWjt($mzRl;&U?XlZ#_(kXEplM_|@avS4&qpzJqcSpeX&H-M_tFn@{MH$$Vbq zbNVbrh66UP6$U|Xj^D1J5@hz^J(&7I^7jR9uCdiT(Zb&^s%HJ(tKs>Lyr*=OxW zYAi;^fH&Oa2eI(|naF8r>Tq=>Qy1jeL-UG*Whu?KEYETM^d<33`mWsF3cg)O_SwYq zAvYxkV>p9Cf8D5NNrKCbwXg6d-oNJ&BBdco;0$>hfw(n-iABFpu?dx2W=o;1eYdd| zia>ng6(y`K(jxAT;1>798zI=we^+vYOB&`vr`e|juEfciiwbaBeAVfNB=l-&!rTp? zp{mUK)14b-0f6Oc;Xc7E@5)|sHD5oBPVKgUaYG`xs1LqT}^;53W zKAe)Mor8k@S~OqkOl6J-%$}m{y~g1cZX%qes%|aAJ-D_|!%aWkAS*->EW$WI z9J8>%cbKRIPc|l)Lx3^m*qHp!?^DIwxcbH?f(x&rrdjv``*`<$0Lf+3_wN%Wq$#yY z^&dEdUiJ&XIy1gSTMmU)@kQA=6kETCzJiozeoW`b_F99so!W_rM|&uo?Gl%np^=h?nz?hb7_~?vCrtpeO0-&3 z!A2ux{Tv=@^}y>)XF$J}+$}_(gJSy-#5=5hSdz(*JslDUpYzo1xwS?364dYz!h)^q z3j91(p6HW^$GhzH%y!S1Gx?2KzWUtM5y|WXQzG-nA72(AX`Eaz1F)^bu*!MPRBeU$ zvH-rdJp&D@NOH|CNKU_P{)FnrX_Vn{*wJ4PC8mw_F|}$ItIr_88SHuZvPitve;fFQ zZgOyV7V6AGJ`3`_59%15f3x^^y0pB|JXH`xvaleu*49u~&VqO8A(rP8KEZzKP7A&}_vY{`2GTT9-nmkuMC8ruM&ElG z>;FJD9Np)KUV51Gwn+ee-yf}>Gp3RUsVGr$o&niZopgR;9>y^zq{I?~M1RziBgKZw z&hT?5kSe`R=gn7SXaI_rNqzins@%}B5Q>?-Xc#w*$%>}>phu=nvTK7JqC3DCe?da= zUx!pd2*0aXgqcGBD0dId_EjlLc+Jt{@-U+PRhoc56wzn#WpUFlP>$*!^Q_mYI`I+O z^Gs1H(^Nudan{r)ul(8_88^-i72}qsUvslR*?dcZu}vJ_+Wf2s zl1WS5U~DdHKHP2@q*P|31w*#NkMd6+MROEt)gaEJ_=O!AvbQd>uxHM~^tBL!K&mH^ z>3Ic8%x;+2Ao`Jy5~)i^@Q9u;V?Ei{fj$!Dhb^yQi>yWg$b8Q9lxXOHirYT8#U#1n z7siWbv|hI$4|@(lrpLr)fAfR#_?Ile_s%E;D6s}@+?*g->}q3wdB}kO9q5dp95!iD&-{z61mTnk8uOm#w6eO>}hi6>k_?;aa@;gz^UN5>_Acb+mbTirptTT}Sk36BRS zY!NQ;OE=rI6I{VLKJCSKNQp<#ba$1yr%8(pS5d0jtvUMynfz&fQTo2m0U`BFZebz~<`knig!_%}0ttYL%ukJI|m z7-gV~_!-C+raKgcSC<_PaPV4mucMz)v7==n36I8wN?$HRs`@I#E0MV>Ey&);x|qH@ z9njvh8J$CB^yj2O@uXjXaiCXntHSw0v|lVoau`zH+WwQ^wTphB3S2MVsG#>%eBcE3AgfZHcEM$(rI)0=8VDHYxs@PxON;?@3z1i#;P zqjYpu1Il>>>j-Ps_E}|=sWH54kmHU(lHXyp*t#M^u&1ieR%y?fb%<)dxcV2g_s5M0 zST41QX+EjaH8e3hi&G4WD)pyA@-{dw_c8UVe~o4QTrsC;aOk_@g6FHMuFU)ijhT}t zdQ56?$Dj2dQhr|jp^ka0_z5}~>w+Mjj@r0OQ8jbGY5HcssRzLEv<6^&N^C(fCnPjS z02kx9yyp~98)6mPujMm5`RZ5(PS?rb*look~BFcfa&rDNa_?B@ZrtwrfZ`7CqKsbmgdD18)PjbDcuYO+pO7b;1IA%kLbpA`qgY&-To92L*F%6QM0X z*XEpf;Lpv@-R>h>EQ8E-y~n*W0!}6JfO?_3S`%Y%VVhXWBR{8~8{CESnVG|65=|pU zp5|b6@7MP|h%zA5eHT&~p^V*QTJ`=m$-!UwZG(+ISAq@$b~@`F&yFVE)ywrL84!B> z>MxzAHT9UsUv1cfZ{yE2@HDwl$31C@BB8YY?vK@snOWV0hDw3;a3+Wz|AN`^ttk!C zkVyB3##xz~#F`<0JZ8vWK+Apv8TsnEB2+6Vb;&crC4RHiS+aG_=8!dGbEWG!?p7Zu zx76#WJIr}BhOJE!!jxbB{vI*t*VampP8x^W*ZRc9o3N1(PMp2YV7stD{>YNSF`Rbw z>2!qAgVf1*w`Hk)%u}$rA3b$LC?e=~qp_eg0n>SZFJEkBDTT{BJ&6TnZ5+#~QWliG zK5&=G3RE~Q{$-akwInFpo%QDu9|?@F{-EYHqwT&C$m=v2`tv^38We5eAbRtgeMzCt zxoeg<8mekJ>HmK97peDmYth4ULgEx zj%A{nuu(lxq!)DKZ3<*()_?2~j-budGCSY3gsjnL&?I_(QlbZ2Foc$d6;0Vyu`5kmC zIjM2muZQY{b#Omy=>pbP&{7@d8)e>Hevq9NOwodYViDEZiBfVAcEF~v{$?PYGOFcc zr`6kj%}!)4xB3%stq(VC6LJxA91l|W#9<=@4%WrL)0mG+v2+H0!##v0< zIxoS7cLl(mi)Y{&q;pMIkS_3k6Qgw|bI_Y@8)6k>hG| zA~18UIkuFzmEa=n z#kyOxmF1n0?TXsTr|LOE2&%TBtk*Ar8CN1-WF;8P%){@%8LaD&eHfRuIF+UfNolak zq5`&&2abaL%Qf9+j;#>U4Wn_|3IE*vBR$AA<&a`wZ*yKF3WFrfuLY%T$i4sqj6Oe1 zTQuZpt#}^<+!56cJ?jON_JBNs@k-29?ixOpB88b|eAzqIw(aPp5#|^$+yKVs|LoM18>jT6 zJL$7#%?4y2h( zt+>@~JD5naIOyM+S{h@W!CrW52L^W2hzKRPktUJxw-t9b+j#yZoA149_u09uWHlJ%azlFx1fYS017MY-D>@USOou(*iLi|8$6t9r^Mq^O42+HL* zNTYE0KqG%l)3km4w+wuypf2}yy3$DU09(r)RjQhilI(z>5j(--4WR=;4{@g5%1!I^ z3xy!g!vwMI9SA{^QegR*d@TN#w#AvC^Qy#`r`InoiXG+6gnbRipH3huU^Pe-9-;=2 zY}_iIOV;^rbK)k5LbE^|#wBqLS>sC)?eKHB{0|Vh(u`FT+oaun*E_ac3U3|JhQ(3l zAdo~Ji9pXqrE9r2rVAx#m!b0QwTtN68YrVdnmNQ=#fBB|A-qJ+q?B^)RFatmWWG2e zLB_P^l1aGg13t77RtU}D=?7D^Eans}4 zjx6^=9QUlHkUrHS_juHuKjYvQt4Gl%Iw9Z#Km)aYb4yLcyg^|14pmEgs^p0Zq?QEI zS3wyRTANAdMoOd>1D)C*|on-UF82Az{j$<3)!>F@PugV!uDW zUeHTr?rA78sde4in~V~y$Ar)~IBianCK1$%sd)B_5U|`QwRKFXRbFB@ZQ#hS5uCi| zLM)u-)wJ`g58sDdtBZ2N!i&M6&{|;OH%boQ(`Ey7H{`%YLcfcR8#XX*3rRi7c1l78xW^r(kw3I zhk}WfIOgd5H;)&wFXZTK>iMQ^qgb-PgH@HM7=&Lo0v^tv32o=A4X*^UeFkF8_Fg!d z3ax!b>s;+&4w0gXC1N#$S?2{XzvbP&{w$ksFAP`vpMwY=Mw!vY{<$?;y!E)6g1&D) z>BX}3fcPGkB5uq1rkgSaqg%azI#X<_sA2#j6CH;M;Cp3dd?pY;>D0A3)>^m{7(P&h zM6BdikEMdV5 z!6F|39g25WP)@`bbs#9*3`A>Q1c@SVk7E<)4-_}wbAmw<->eS5o$OIFi%ijH4rUK` z+a*xNtZ9&3Y@6l|raemr*TuSovbC{mr?4~d*R;l>g0b(br%nV|k{4q1QF*=hKn2W~ zeBVv~k`J1p@#(l7Yg&oE$+}A)ooh|X{!>ZNO)J_Ck216Z-I$eOeuUQ@;H%9sLT8c{ z4=*u+({Mn(#rzai4@ndQ%=3DGkN0`pfuG@Hh6cRO0z8VpVoeotjXC>B;eYI0`*y_y zI!b(Gz%9D7l)!vD5H^5tq398Bw8Ub}g(dXdsEMVCuKbmwY&$iZdG9K03B^J%q0yoY6x7r;9&<1dB&=%- zifv&cp*-ffMbZN_kx4bJS)o~*g^;Ih@n@A#1zUS^3ZhauQ@O2C-~>AVa9`})F*h)a zLDPCC^@vDCf{r)`dX56a#5UcLSXdO!oR?D-GveeN%!bVM>K2FXc9}HwVy z+go{~UU2Ob5$F2RfZiA9HIS%a8%w9vAvBTba@TZIQAwTi29M%tf3XKYrS9C@FhbFg z-cc#m{!De)ptUg;Y(IQr|CdVaywo#*pgi82rSb%H%toW*$!GKGYq(o?#6LuIUu=B! z_Rs5T&)!MJ2i|;j@zZzdD$6AB#@EsoA0f@U@{he)X?tL@v2te=@Tk9VFtHwM;&`{~ z@v#i#LIR6aurU`q#pC45`R$WKz^{W{lq|)~yQA8O+RjcB2DSRNVA}99{uNkrpj6!J zy%GzfEW*Bu{&6r61t_9|FH}^Gcna9YOS$3c!#B31+#AKiS7z@0^ovLhTd$8ccMV;t zj@4~Ah1cxGvkNuEX=$J3pRv#fJc|J*JW}Z))LR<X%h`3F_hAhzK&O*Iz+R1VQu#B@J_c%BF9;LwFAqv(z)n}*z zhp7Cf2rYfemm%Ty4hv~7C$M>ntQMa{-VqsKQUb7wCeM49^l?Zjc49C z1eNKm@y4q-I(n#%PBj+4sHCoZGJY!kE{9M)?uBv=N8{hjkx6-`Gd-;P-o|3q6@Jp4*u&ImA}3zCDekKj3w`5RD^}!iQiU2fWH_3THH7-&e3ep>RE; zqW5~6oWjZGG#>_sVVYNMoPZSn+|b1y1Mqn#!A=r3!F#b6H&zP3Z4t;mKP3dKkF4eA zssyI%>RCop06V8EEYDSYRf4EUDI}IN*e1KRCya{zP>>%eb^Tbx5HVUrmv`Spw-?L`r7M$!7y@jk^c>aDC}3o+ zdhhWaBfZyhP9Ut4`onB1f5Xn+jV?b&ea{{;Bju5+zpPVd)>xswAq`*gctSNU$(6Ya zdsfUNo0)kIoERp(d#n>UTh<4G`7FpE#Ev`l8RQO?Yc&GrZ*pwT~Ne&q$h-7i4d`XtRQAAu(y}`lJH|8M(N&9y5TcQ{-dU6fa86G>5F$ z1RN!6ab+%WukdWD0MQx)I)JF8+)WImA%o1R5ZoW92y%dlWrD@?d|jrqFaU0MAx33Us&7+4c_%O}H~*U9Lk|hdLx~v27D}H}E9+ zXmD)i!p~279Qp|dM{sWZe%MY5^-VLQ+lpic{tM}XBWBJi!I*U4BU5i< z_kO>dKF4`31QOHaLVI*U5~020sb-Gsh$6fbaRwLG48iLoA|vy?;p?Yi0B!Yp@)}d4MPFK(aWQkaaQ|Yg_h4ljbJbZ1!oQan#sV_D z-ThcPkkNt7C=4=XVdEW9wo1k@87syWsozKCoAlK2(sT7p-kFxk*xHynM+NXC5c3Fg z%8jfStzMFV$9)EDGjB5sEpC;noc8J&u7%g!n8SFh@-`-AKw1`npo~HlL8Xdzf2Fq9 zi>U{B=HR`#U~{ZR0ZR)#z~arZM{05?%ow32Scq2>GP!WJe^+O)k)j4<{G>+Z4}=k! zW>p#7m>ga0E5X_Un#1``HYIIBy}>U07_?!A_IILiXuJ1pbV0k5erA|6{0inGA9)*tH)Ld>2+_2) zAm9UIRLLOLFBdz&;mF!>3zRJ#hCY&7Z*E!)=wgCDGD7{@Wj(Eq^U=^vi_D0$6fAs{ z;+dI^Y7jv#GtP^F2#dL{U}?OEvS=*U*OM%B6~s4)VRV8)ZdomaFL+%W34H6S!r)Ty z3z_O*7Ut#9Um{YpE{!t(()0bkC6RBl(a|P?V`%Q@1|jNhPi>R=6@Bwu_d(7ur6|t; z=TE6v{CY(@AIzA*__;dfXY$;;PXP&p1&6bh-iycv1ujHa4gWwHpoTMrzjLP~Ii9EC z20J-JY->-<^vX6%HS^Ai67LbT-yK8)l}h0Kgc$xK^<^*+wU&RIdRSBqYdJ`PJiz-X zSy&MpTBKh|Xjx||YqL`++aOW6V01sg~&b<>8l?O@4C3gI$uQ#G@8t!kslz zFCA0s5>rFH)dq8ur5>9oP`gNms#PF2rLjEEO8#CB#7)4f$efZC+<7W1^!V^@91fMb zxcPx3S1s#r1v}Oax!AMnU1s`Z`K4wy|6JR2e0^Mlvl3(qm}QhD^;S;z)v|-*b?5#c zX#twu`H2Gqr7$nMH5E^Odg^8A$Srl|9dKx3!E#FaQ^R&OSXUW@$qV;Zr~S94{E>!S zE`0( z)9{mRosm$=9LD+B*&Dhy3eI&Ke=$uL30?G^P5)o&-zwe*la7V7*r59{7avuowttHc zPhW`$aQ#rkVEZUUQ>}L{dwbGG&-VTlGiB93B0r$0w^<9f)<~hK5dC95c0=RqXx5Z< zQk}*_FK*CT9qMVjD&xpO?tq){_uHe_1_Z(;3MFa4yB{N6P8gf|IETvbm%JGvoCGUT zcj#!)<)Y~pRVxR>{axgLM$VrK^5N6d)aFt0KFl{1-4Y=Kn9oF>1u*`wIApjA(U1k z(6_Ri;2U>x-yQc%M+!_4ZQVl+)nBX(>r+~i#koTUOlhvqr#RtvCo0NVU=%g9mX?#g zpChNosiLl*YQHLLL|2s=;0zUt#cx%w==OT|N$5`O422C$Dj^hwd4Dd%Pz`whsTLNmo>X1{>H?@E^2}&)JuMk-q|F@NZn+rPLKf^_ zs%c*W%Qdnnqd(;FqRda9rIRunC^%dy3AOPiX}a_N*Zprf`$Bd&Cq3lYvd`#K>(AQS!>O#RugZLgM$SG}qefd_IRssca(t)DRhND=Jaw$N+Fyq6N+Sl7G_sai4 z$tS|v>@WpcOHZoPJAWldXK%!W^aar*;039~({1;z1Nt(?FAfHkv*j_r`uEe??y~p1 zUb0_I9tt5==GNF!Arv=*jqqMqa0_+1?&rjoZxl|5V2O4_LY#e{CoDd3hLKinwm@BF z=pwC+F{4#y9gwET=V_{R)%wzer*&ae%hlQFs{E7VY@p3|Ma@ZvXS5BtB`oa>*eSt^ z4%nFZMu6eCXF?oDaTjCj`t0}$6RI07cdmDOR9-@L6$uD-N7T(e-5T??HxKx_A;Exg zyF=fc{NsE|t~fdCi;C%+O&Wf;*B=Q1 zklko%Ku`N(u&(uNe-p#@3~pg}&`}j?c-Y>*|8tJ<5LMPkKFAfdO(g{7&2%vA?{V-k zsR|ma$;{=oX|tw#J{J6ik)CB`QBPaLDRCQSBD`@vpE4ry1uMISd#`uOeG0#ymdd~c zS@r){vJ;^i zL_VHE-Gf2i@KV=&a&uCPyBcf;lx-XkJU_KqeI62k658{)u#CzN`3#u*yknx4Cl5Id IFw4mQ0^b5G%m4rY literal 0 HcmV?d00001 diff --git a/MQL4/Experts/Nkanven/Telegram2MT4.mq4 b/MQL4/Experts/Nkanven/Telegram2MT4.mq4 new file mode 100644 index 0000000..1838f45 --- /dev/null +++ b/MQL4/Experts/Nkanven/Telegram2MT4.mq4 @@ -0,0 +1,236 @@ +//+------------------------------------------------------------------+ +//| Telegram2MT4.mq4 | +//| Copyright 2022, Nkondog Anselme Venceslas. | +//| https://www.linkedin.com/in/nkondog | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2022, Nkondog Anselme Venceslas." +#property link "https://www.linkedin.com/in/nkondog" +#property version "1.00" +#property strict +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +enum ENUM_RISK_DEFAULT + { + RISK_DEFAULT_FIXED = 1, + RISK_DEFAULT_AUTO = 2, + + }; + +input ENUM_RISK_DEFAULT inpRiskDefault = RISK_DEFAULT_FIXED; //Lot sizing mode + +input double inpDefaultLotSize = 0.01; //Default lot +input double inpRiskPercent = 0.1; //Risk percentage +input double inpMaxLotSize = 10; //Max lot +input int inpMaxSlippage = 3; //Max slippage +input int inpMagicNumber = 1987; //Magic number +input string inpSymbolPrefix = ""; //Symbol prefix +input string inpSymbolSuffix = ""; //Symbol suffix + +double vbid,vask,vpoint; +int vdigits, vspread; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- + checkForPermissions(); +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//--- +//read file writen by TelegramReader + readTelegramFile(); + + } +//+------------------------------------------------------------------+ + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void readTelegramFile() + { + +//--- open the file + string fileName = "order.bin"; + ResetLastError(); + string table[]; + + int file_handle=FileOpen("Telegramreader"+"//"+fileName,FILE_READ|FILE_ANSI, " "); + if(file_handle!=INVALID_HANDLE) + { + PrintFormat("%s file is available for reading",fileName); + PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); + //--- additional variables + int str_size; + string str; + int i = 0; + //--- read data from the file + while(!FileIsEnding(file_handle)) + { + //--- find out how many symbols are used for writing the time + str_size=FileReadInteger(file_handle,INT_VALUE); + //--- read the string + str=FileReadString(file_handle,str_size); + + //--- print the string + Print("i" + i + " " + str); + ArrayResize(table, ArraySize(table) + 1); + table[i] = str; + i += 1; + } + //--- close the file + FileClose(file_handle); + //PrintFormat("Data is read, %s file is closed",fileName); + FileDelete("Telegramreader"+"//"+fileName); + + sendOrder(table[2], table[0], table[1], NormalizeDouble(table[3], Digits), NormalizeDouble(table[4], Digits), NormalizeDouble(table[5], Digits)); + } + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void sendOrder(string type, string direction, string symbol, double entryPrice, double takeProfit, double stopLoss) + { + int ticket = 0; + symbol = inpSymbolPrefix+symbol+inpSymbolSuffix; + double lotSize; + + vbid = MarketInfo(symbol,MODE_BID); + vask = MarketInfo(symbol,MODE_ASK); + vpoint = MarketInfo(symbol,MODE_POINT); + vdigits = (int)MarketInfo(symbol,MODE_DIGITS); + vspread = (int)MarketInfo(symbol,MODE_SPREAD); + + Print(type, direction, symbol, entryPrice, takeProfit, stopLoss); + if(type == "NOW") + { + if(direction == "BUY") + { + lotSize = LotSizeCalculate(OP_BUY, stopLoss, symbol, vpoint); + Print("Lot size ", lotSize); + + ticket=OrderSend(symbol,OP_BUY,lotSize,vask,inpMaxSlippage, stopLoss,takeProfit,"Trade from eInvestors",inpMagicNumber,0,Green); + } + + if(direction == "SELL") + { + + lotSize = LotSizeCalculate(OP_SELL, stopLoss, symbol, vpoint); + Print("Lot size ", lotSize); + + ticket=OrderSend(symbol,OP_SELL,lotSize,vbid,inpMaxSlippage, stopLoss,takeProfit,"Trade from eInvestors",inpMagicNumber,0,Green); + } + + if(ticket>0) + { + if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) + Print("BUY order opened : ",OrderOpenPrice()); + } + else + Print("Error opening BUY order : ",GetLastError()); + } + + + } +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Compute lot size function | +//+------------------------------------------------------------------+ +double LotSizeCalculate(int ordertype, double stoploss, string symbol, double vpoint) + { + + double tickValue = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE); + double riskBaseAmount; + double lotSize = 0; + double SL = 0; + + if(stoploss > 0) + { + if(ordertype == OP_BUY) + { + SL = (vask-stoploss)/vpoint; + } + else + if(ordertype == OP_SELL) + { + SL = (stoploss-vbid)/vpoint; + } + } +//Print("SL ", SL, " risk base ", AccountInfoDouble(ACCOUNT_BALANCE), "tick value ", tickValue); + Print("if statement ", SL != 0 && inpRiskDefault == RISK_DEFAULT_AUTO); + if(SL != 0 && inpRiskDefault == RISK_DEFAULT_AUTO) + { + riskBaseAmount = AccountInfoDouble(ACCOUNT_BALANCE); + lotSize = ((riskBaseAmount*inpRiskPercent/100)/(SL*tickValue)); + } + else + { + lotSize = inpDefaultLotSize; + } + + lotSize = MathFloor(lotSize/SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP))*SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP); + + if(lotSize > inpMaxLotSize) + { + lotSize = inpMaxLotSize; + } + + if(lotSize > SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX)) + { + lotSize = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX); + } + + if(lotSize < SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)) + { + lotSize = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN); + } + + return lotSize; + } +//+------------------------------------------------------------------+ + + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void checkForPermissions() + { + + if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) + Alert("Check if automated trading is allowed in the terminal settings!"); + + if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) + Alert("Check if automated trading is allowed in the terminal settings!"); + else + { + if(!MQLInfoInteger(MQL_TRADE_ALLOWED)) + Alert("Automated trading is forbidden in the program settings for ",__FILE__); + } + + if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT)) + Alert("Automated trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN), + " at the trade server side"); + + if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)) + Comment("Trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN), + ".\n Perhaps an investor password has been used to connect to the trading account.", + "\n Check the terminal journal for the following entry:", + "\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': trading has been disabled - investor mode."); + } +//+------------------------------------------------------------------+ diff --git a/MQL4/Include/Nkanven/Lib/Navlib.mqh b/MQL4/Include/Nkanven/Lib/Navlib.mqh new file mode 100644 index 0000000..5b4566c --- /dev/null +++ b/MQL4/Include/Nkanven/Lib/Navlib.mqh @@ -0,0 +1,71 @@ +//+------------------------------------------------------------------+ +//| Navlib.mqh | +//| Copyright 2022, MetaQuotes Software Corp. | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2022, MetaQuotes Software Corp." +#property link "https://www.mql5.com" +#property strict + +void Notify(string message) + { + Print("Message sent ", message); + + if(!IsTesting()) + { + +//SendNotification(message); + + string headers; + string url = "https://api.telegram.org/bot5854676759:AAEGN1a1HQ-3uiVtv7FxEf7IXKrMATBzkQg/sendMessage?chat_id=-1001821417162&text="+message; + char data[],result[]; + + int res = WebRequest("GET", + url, + NULL, + NULL, + 3000, + data, + 0, + result, + headers + ); + Print(CharArrayToString(result), " Res ", res, headers); // see the results + + if(res==-1) + { + Print("Error in WebRequest. Error code =",GetLastError()); + //--- Perhaps the URL is not listed, display a message about the necessity to add the address + MessageBox("Add the address '"+url+"' to the list of allowed URLs on tab 'Expert Advisors'","Error",MB_ICONINFORMATION); + } + else + { + if(res==200) + { + //--- Successful download + Print("Telegran notification sent."); + } + } + } else + { + Comment(message); + } + } +//+------------------------------------------------------------------+ + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool newCandle() + { + static datetime prevTime = 0; + datetime currentTime = iTime(Symbol(), PERIOD_CURRENT, 0); + if(currentTime != prevTime) + { + prevTime = currentTime; + + return(true); + } + return(false); + } +//+------------------------------------------------------------------+