거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
당사 팬 페이지에 가입하십시오
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
- 조회수:
- 4213
- 평가:
- 게시됨:
- 2020.05.24 07:54
- 업데이트됨:
- 2020.05.24 11:09
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
Here is one option that will work in MQL.
The technique is called 'copy constructor'. Make sure that all fields are copied, including complex data types, recursively.
Please refer to the example code below, you will figure out how it works.
/****************************************************************/ void ClassExample() { Print(__FUNCTION__); A a1; A a2=Fa(); //object receive from function a1.Work(); a1.Report(); //1 1 1 1 a2.Report(); //3 3 3 3 /*CONTINUE USE OBJECT FROM FUNCTION*/ a2.Work(); a2.Report(); //4 4 4 4 return; } /*************************************************************** PARTS OF CLASS A*/ struct C {int mx; C():mx(0) {}}; class D {public:int mx; D():mx(0) {} D(D &d):mx(d.mx) {}}; /****************************************************************/ class A { protected: int mx; //simple int ma[]; //array C mc; //struct D d; //class public: /*COPY CONSTRUCTOR*/ A(A &a):mx(a.mx),d(a.d) {ArrayCopy(ma,a.ma); mc=a.mc;} /*EXPLICIT DEFAULT CONSTRUCTOR*/ A():mx(0) {} /*METHODS*/ void Work() {mx++; ArrayResize(ma,mx); mc.mx=mx; d.mx=mx;} void Report() {Print(mx," ",ArraySize(ma)," ",mc.mx," ",d.mx);} }; /****************************************************************/ A Fa() { A a; for(int i=0; i<3; i++) {a.Work();} //a lot of work return a; //class object return } /**/
Want to return a structure?
Structures can be normally updated with function as parameters sent by reference.
If you wish to RETURN a struct with function, it is also possible, but unlike classes, structs do not require an explicit copy
constructor.
/****************************************************************/ void StructExample() { Print(__FUNCTION__); B b1; B b2=Fb(); //struct receive from function b1.mx++; /**/ Print(b1.mx," ",ArraySize(b1.ma)); // 1 0 Print(b2.mx," ",ArraySize(b2.ma)); // 10 9 return; } /****************************************************************/ struct B { int mx; int ma[]; B():mx(0) {} //constructor, not needed formally }; /****************************************************************/ B Fb() { B b; for(int i=0; i<10; i++) {b.mx++; ArrayResize(b.ma,i);} //work hard return b; //struct return } /**/

This Multicurrency EA is based on Currency Strength Indicator.

Trade with no need to calculate lot size! This script calculates the proper lot size and opens the position(s) for you.